in api/init.go [84:138]
func initCoreComponents() error {
if config.MetricLogFlushIntervalSec() > 0 {
if err := metric.InitTask(); err != nil {
return err
}
}
systemStatInterval := config.SystemStatCollectIntervalMs()
loadStatInterval := systemStatInterval
cpuStatInterval := systemStatInterval
memStatInterval := systemStatInterval
if config.LoadStatCollectIntervalMs() > 0 {
loadStatInterval = config.LoadStatCollectIntervalMs()
}
if config.CpuStatCollectIntervalMs() > 0 {
cpuStatInterval = config.CpuStatCollectIntervalMs()
}
if config.MemoryStatCollectIntervalMs() > 0 {
memStatInterval = config.MemoryStatCollectIntervalMs()
}
if loadStatInterval > 0 {
system_metric.InitLoadCollector(loadStatInterval)
}
if cpuStatInterval > 0 {
system_metric.InitCpuCollector(cpuStatInterval)
}
if memStatInterval > 0 {
system_metric.InitMemoryCollector(memStatInterval)
}
if config.UseCacheTime() {
util.StartTimeTicker()
}
if config.MetricExportHTTPAddr() != "" {
httpAddr := config.MetricExportHTTPAddr()
httpPath := config.MetricExportHTTPPath()
l, err := net.Listen("tcp", httpAddr)
if err != nil {
return fmt.Errorf("init metric exporter http server err: %s", err.Error())
}
http.Handle(httpPath, metric_exporter.HTTPHandler())
go func() {
_ = http.Serve(l, nil)
}()
return nil
}
return nil
}