in pkg/systemstatsmonitor/cpu_collector.go [54:171]
func NewCPUCollectorOrDie(cpuConfig *ssmtypes.CPUStatsConfig) *cpuCollector {
cc := cpuCollector{config: cpuConfig}
var err error
cc.mRunnableTaskCount, err = metrics.NewFloat64Metric(
metrics.CPURunnableTaskCountID,
cpuConfig.MetricsConfigs[string(metrics.CPURunnableTaskCountID)].DisplayName,
"The average number of runnable tasks in the run-queue during the last minute",
"1",
metrics.LastValue,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.CPURunnableTaskCountID, err)
}
cc.mUsageTime, err = metrics.NewFloat64Metric(
metrics.CPUUsageTimeID,
cpuConfig.MetricsConfigs[string(metrics.CPUUsageTimeID)].DisplayName,
"CPU usage, in seconds",
"s",
metrics.Sum,
[]string{stateLabel})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.CPUUsageTimeID, err)
}
cc.mCpuLoad1m, err = metrics.NewFloat64Metric(
metrics.CPULoad1m,
cpuConfig.MetricsConfigs[string(metrics.CPULoad1m)].DisplayName,
"CPU average load (1m)",
"1",
metrics.LastValue,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.CPULoad1m, err)
}
cc.mCpuLoad5m, err = metrics.NewFloat64Metric(
metrics.CPULoad5m,
cpuConfig.MetricsConfigs[string(metrics.CPULoad5m)].DisplayName,
"CPU average load (5m)",
"1",
metrics.LastValue,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.CPULoad5m, err)
}
cc.mCpuLoad15m, err = metrics.NewFloat64Metric(
metrics.CPULoad15m,
cpuConfig.MetricsConfigs[string(metrics.CPULoad15m)].DisplayName,
"CPU average load (15m)",
"1",
metrics.LastValue,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.CPULoad15m, err)
}
cc.mSystemProcessesTotal, err = metrics.NewInt64Metric(
metrics.SystemProcessesTotal,
cpuConfig.MetricsConfigs[string(metrics.SystemProcessesTotal)].DisplayName,
"Number of forks since boot.",
"1",
metrics.Sum,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.SystemProcessesTotal, err)
}
cc.mSystemProcsRunning, err = metrics.NewInt64Metric(
metrics.SystemProcsRunning,
cpuConfig.MetricsConfigs[string(metrics.SystemProcsRunning)].DisplayName,
"Number of processes currently running.",
"1",
metrics.LastValue,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.SystemProcsRunning, err)
}
cc.mSystemProcsBlocked, err = metrics.NewInt64Metric(
metrics.SystemProcsBlocked,
cpuConfig.MetricsConfigs[string(metrics.SystemProcsBlocked)].DisplayName,
"Number of processes currently blocked.",
"1",
metrics.LastValue,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.SystemProcsBlocked, err)
}
cc.mSystemInterruptsTotal, err = metrics.NewInt64Metric(
metrics.SystemInterruptsTotal,
cpuConfig.MetricsConfigs[string(metrics.SystemInterruptsTotal)].DisplayName,
"Total number of interrupts serviced (cumulative).",
"1",
metrics.Sum,
[]string{})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.SystemInterruptsTotal, err)
}
cc.mSystemCPUStat, err = metrics.NewFloat64Metric(
metrics.SystemCPUStat,
cpuConfig.MetricsConfigs[string(metrics.SystemCPUStat)].DisplayName,
"Cumulative time each cpu spent in various stages.",
"ns",
metrics.Sum,
[]string{cpuLabel, stageLabel})
if err != nil {
glog.Fatalf("Error initializing metric for %q: %v", metrics.SystemCPUStat, err)
}
cc.lastUsageTime = make(map[string]float64)
return &cc
}