Skip to content

Commit 670fec8

Browse files
Merge pull request cri-o#9116 from bitoku/metrics
Refactor metrics descriptors
2 parents 592e805 + c02c3a5 commit 670fec8

File tree

6 files changed

+211
-413
lines changed

6 files changed

+211
-413
lines changed

internal/lib/stats/cpu_metrics.go

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,23 @@ import (
1313
func generateSandboxCPUMetrics(sb *sandbox.Sandbox, cpu *cgmgr.CPUStats) []*types.Metric {
1414
cpuMetrics := []*containerMetric{
1515
{
16-
desc: &types.MetricDescriptor{
17-
Name: "container_cpu_user_seconds_total",
18-
Help: "Cumulative user CPU time consumed in seconds.",
19-
LabelKeys: baseLabelKeys,
20-
},
16+
desc: containerCpuUserSecondsTotal,
2117
valueFunc: func() metricValues {
2218
return metricValues{{
2319
value: cpu.UsageInUsermode / uint64(time.Second),
2420
metricType: types.MetricType_COUNTER,
2521
}}
2622
},
2723
}, {
28-
desc: &types.MetricDescriptor{
29-
Name: "container_cpu_system_seconds_total",
30-
Help: "Cumulative system CPU time consumed in seconds.",
31-
LabelKeys: baseLabelKeys,
32-
},
24+
desc: containerCpuSystemSecondsTotal,
3325
valueFunc: func() metricValues {
3426
return metricValues{{
3527
value: cpu.UsageInKernelmode / uint64(time.Second),
3628
metricType: types.MetricType_COUNTER,
3729
}}
3830
},
3931
}, {
40-
desc: &types.MetricDescriptor{
41-
Name: "container_cpu_usage_seconds_total",
42-
Help: "Cumulative CPU time consumed in seconds.",
43-
LabelKeys: append(baseLabelKeys, "cpu"),
44-
},
32+
desc: containerCpuUsageSecondsTotal,
4533
valueFunc: func() metricValues {
4634
if len(cpu.PerCPUUsage) == 0 && cpu.TotalUsageNano > 0 {
4735
return metricValues{{
@@ -64,35 +52,23 @@ func generateSandboxCPUMetrics(sb *sandbox.Sandbox, cpu *cgmgr.CPUStats) []*type
6452
return metricValues
6553
},
6654
}, {
67-
desc: &types.MetricDescriptor{
68-
Name: "container_cpu_cfs_periods_total",
69-
Help: "Number of elapsed enforcement period intervals.",
70-
LabelKeys: baseLabelKeys,
71-
},
55+
desc: containerCpuCfsPeriodsTotal,
7256
valueFunc: func() metricValues {
7357
return metricValues{{
7458
value: cpu.ThrottlingActivePeriods,
7559
metricType: types.MetricType_COUNTER,
7660
}}
7761
},
7862
}, {
79-
desc: &types.MetricDescriptor{
80-
Name: "container_cpu_cfs_throttled_periods_total",
81-
Help: "Number of throttled period intervals.",
82-
LabelKeys: baseLabelKeys,
83-
},
63+
desc: containerCpuCfsThrottledPeriodsTotal,
8464
valueFunc: func() metricValues {
8565
return metricValues{{
8666
value: cpu.ThrottledPeriods,
8767
metricType: types.MetricType_COUNTER,
8868
}}
8969
},
9070
}, {
91-
desc: &types.MetricDescriptor{
92-
Name: "container_cpu_cfs_throttled_seconds_total",
93-
Help: "Total time duration the container has been throttled.",
94-
LabelKeys: baseLabelKeys,
95-
},
71+
desc: containerCpuCfsThrottledSecondsTotal,
9672
valueFunc: func() metricValues {
9773
return metricValues{{
9874
value: cpu.ThrottledTime / uint64(time.Second),

internal/lib/stats/descriptors.go

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
package statsserver
2+
3+
import types "k8s.io/cri-api/pkg/apis/runtime/v1"
4+
5+
// CPU metrics.
6+
var (
7+
containerCpuUserSecondsTotal = &types.MetricDescriptor{
8+
Name: "container_cpu_user_seconds_total",
9+
Help: "Cumulative user CPU time consumed in seconds.",
10+
LabelKeys: baseLabelKeys,
11+
}
12+
containerCpuSystemSecondsTotal = &types.MetricDescriptor{
13+
Name: "container_cpu_system_seconds_total",
14+
Help: "Cumulative system CPU time consumed in seconds.",
15+
LabelKeys: baseLabelKeys,
16+
}
17+
containerCpuUsageSecondsTotal = &types.MetricDescriptor{
18+
Name: "container_cpu_usage_seconds_total",
19+
Help: "Cumulative CPU time consumed in seconds.",
20+
LabelKeys: append(baseLabelKeys, "cpu"),
21+
}
22+
containerCpuCfsPeriodsTotal = &types.MetricDescriptor{
23+
Name: "container_cpu_cfs_periods_total",
24+
Help: "Number of elapsed enforcement period intervals.",
25+
LabelKeys: baseLabelKeys,
26+
}
27+
containerCpuCfsThrottledPeriodsTotal = &types.MetricDescriptor{
28+
Name: "container_cpu_cfs_throttled_periods_total",
29+
Help: "Number of throttled period intervals.",
30+
LabelKeys: baseLabelKeys,
31+
}
32+
containerCpuCfsThrottledSecondsTotal = &types.MetricDescriptor{
33+
Name: "container_cpu_cfs_throttled_seconds_total",
34+
Help: "Total time duration the container has been throttled.",
35+
LabelKeys: baseLabelKeys,
36+
}
37+
)
38+
39+
// Memory metrics.
40+
var (
41+
containerMemoryCache = &types.MetricDescriptor{
42+
Name: "container_memory_cache",
43+
Help: "Number of bytes of page cache memory.",
44+
LabelKeys: baseLabelKeys,
45+
}
46+
containerMemoryRss = &types.MetricDescriptor{
47+
Name: "container_memory_rss",
48+
Help: "Size of RSS in bytes.",
49+
LabelKeys: baseLabelKeys,
50+
}
51+
containerMemoryKernelUsage = &types.MetricDescriptor{
52+
Name: "container_memory_kernel_usage",
53+
Help: "Size of kernel memory allocated in bytes.",
54+
LabelKeys: baseLabelKeys,
55+
}
56+
containerMemoryMappedFile = &types.MetricDescriptor{
57+
Name: "container_memory_mapped_file",
58+
Help: "Size of memory mapped files in bytes.",
59+
LabelKeys: baseLabelKeys,
60+
}
61+
containerMemorySwap = &types.MetricDescriptor{
62+
Name: "container_memory_swap",
63+
Help: "Container swap usage in bytes.",
64+
LabelKeys: baseLabelKeys,
65+
}
66+
containerMemoryFailcnt = &types.MetricDescriptor{
67+
Name: "container_memory_failcnt",
68+
Help: "Number of memory usage hits limits",
69+
LabelKeys: baseLabelKeys,
70+
}
71+
containerMemoryUsageBytes = &types.MetricDescriptor{
72+
Name: "container_memory_usage_bytes",
73+
Help: "Current memory usage in bytes, including all memory regardless of when it was accessed",
74+
LabelKeys: baseLabelKeys,
75+
}
76+
containerMemoryMaxUsageBytes = &types.MetricDescriptor{
77+
Name: "container_memory_max_usage_bytes",
78+
Help: "Maximum memory usage recorded in bytes",
79+
LabelKeys: baseLabelKeys,
80+
}
81+
containerMemoryWorkingSetBytes = &types.MetricDescriptor{
82+
Name: "container_memory_working_set_bytes",
83+
Help: "Current working set in bytes.",
84+
LabelKeys: baseLabelKeys,
85+
}
86+
containerMemoryFailuresTotal = &types.MetricDescriptor{
87+
Name: "container_memory_failures_total",
88+
Help: "Cumulative count of memory allocation failures.",
89+
LabelKeys: append(baseLabelKeys, "failure_type", "scope"),
90+
}
91+
)
92+
93+
var networkLabelKeys = append(baseLabelKeys, "interface")
94+
95+
// Network metrics.
96+
var (
97+
containerNetworkReceiveBytesTotal = &types.MetricDescriptor{
98+
Name: "container_network_receive_bytes_total",
99+
Help: "Cumulative count of bytes received",
100+
LabelKeys: networkLabelKeys,
101+
}
102+
containerNetworkReceivePacketsTotal = &types.MetricDescriptor{
103+
Name: "container_network_receive_packets_total",
104+
Help: "Cumulative count of packets received",
105+
LabelKeys: networkLabelKeys,
106+
}
107+
containerNetworkReceivePacketsDroppedTotal = &types.MetricDescriptor{
108+
Name: "container_network_receive_packets_dropped_total",
109+
Help: "Cumulative count of packets dropped while receiving",
110+
LabelKeys: networkLabelKeys,
111+
}
112+
containerNetworkReceiveErrorsTotal = &types.MetricDescriptor{
113+
Name: "container_network_receive_errors_total",
114+
Help: "Cumulative count of errors encountered while receiving",
115+
LabelKeys: networkLabelKeys,
116+
}
117+
containerNetworkTransmitBytesTotal = &types.MetricDescriptor{
118+
Name: "container_network_transmit_bytes_total",
119+
Help: "Cumulative count of bytes transmitted",
120+
LabelKeys: networkLabelKeys,
121+
}
122+
containerNetworkTransmitPacketsTotal = &types.MetricDescriptor{
123+
Name: "container_network_transmit_packets_total",
124+
Help: "Cumulative count of packets transmitted",
125+
LabelKeys: networkLabelKeys,
126+
}
127+
containerNetworkTransmitPacketsDroppedTotal = &types.MetricDescriptor{
128+
Name: "container_network_transmit_packets_dropped_total",
129+
Help: "Cumulative count of packets dropped while transmitting",
130+
LabelKeys: networkLabelKeys,
131+
}
132+
containerNetworkTransmitErrorsTotal = &types.MetricDescriptor{
133+
Name: "container_network_transmit_errors_total",
134+
Help: "Cumulative count of errors encountered while transmitting",
135+
LabelKeys: networkLabelKeys,
136+
}
137+
)
138+
139+
// OOM metrics.
140+
var (
141+
containerOomEventsTotal = &types.MetricDescriptor{
142+
Name: "container_oom_events_total",
143+
Help: "Count of out of memory events observed for the container",
144+
LabelKeys: baseLabelKeys,
145+
}
146+
)

internal/lib/stats/memory_metrics.go

Lines changed: 11 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,71 +11,43 @@ import (
1111
func generateSandboxMemoryMetrics(sb *sandbox.Sandbox, mem *cgmgr.MemoryStats) []*types.Metric {
1212
memoryMetrics := []*containerMetric{
1313
{
14-
desc: &types.MetricDescriptor{
15-
Name: "container_memory_cache",
16-
Help: "Number of bytes of page cache memory.",
17-
LabelKeys: baseLabelKeys,
18-
},
14+
desc: containerMemoryCache,
1915
valueFunc: func() metricValues {
2016
return metricValues{{value: mem.Cache, metricType: types.MetricType_GAUGE}}
2117
},
2218
},
2319
{
24-
desc: &types.MetricDescriptor{
25-
Name: "container_memory_rss",
26-
Help: "Size of RSS in bytes.",
27-
LabelKeys: baseLabelKeys,
28-
},
20+
desc: containerMemoryRss,
2921
valueFunc: func() metricValues {
3022
return metricValues{{value: mem.RssBytes, metricType: types.MetricType_GAUGE}}
3123
},
3224
},
3325
{
34-
desc: &types.MetricDescriptor{
35-
Name: "container_memory_kernel_usage",
36-
Help: "Size of kernel memory allocated in bytes.",
37-
LabelKeys: baseLabelKeys,
38-
},
26+
desc: containerMemoryKernelUsage,
3927
valueFunc: func() metricValues {
4028
return metricValues{{value: mem.KernelUsage, metricType: types.MetricType_GAUGE}}
4129
},
4230
},
4331
{
44-
desc: &types.MetricDescriptor{
45-
Name: "container_memory_mapped_file",
46-
Help: "Size of memory mapped files in bytes.",
47-
LabelKeys: baseLabelKeys,
48-
},
32+
desc: containerMemoryMappedFile,
4933
valueFunc: func() metricValues {
5034
return metricValues{{value: mem.FileMapped, metricType: types.MetricType_GAUGE}}
5135
},
5236
},
5337
{
54-
desc: &types.MetricDescriptor{
55-
Name: "container_memory_swap",
56-
Help: "Container swap usage in bytes.",
57-
LabelKeys: baseLabelKeys,
58-
},
38+
desc: containerMemorySwap,
5939
valueFunc: func() metricValues {
6040
return metricValues{{value: mem.SwapUsage, metricType: types.MetricType_GAUGE}}
6141
},
6242
},
6343
{
64-
desc: &types.MetricDescriptor{
65-
Name: "container_memory_failcnt",
66-
Help: "Number of memory usage hits limits",
67-
LabelKeys: baseLabelKeys,
68-
},
44+
desc: containerMemoryFailcnt,
6945
valueFunc: func() metricValues {
7046
return metricValues{{value: mem.Failcnt, metricType: types.MetricType_COUNTER}}
7147
},
7248
},
7349
{
74-
desc: &types.MetricDescriptor{
75-
Name: "container_memory_usage_bytes",
76-
Help: "Current memory usage in bytes, including all memory regardless of when it was accessed",
77-
LabelKeys: baseLabelKeys,
78-
},
50+
desc: containerMemoryUsageBytes,
7951
valueFunc: func() metricValues {
8052
return metricValues{{
8153
value: mem.Usage,
@@ -84,11 +56,7 @@ func generateSandboxMemoryMetrics(sb *sandbox.Sandbox, mem *cgmgr.MemoryStats) [
8456
},
8557
},
8658
{
87-
desc: &types.MetricDescriptor{
88-
Name: "container_memory_max_usage_bytes",
89-
Help: "Maximum memory usage recorded in bytes",
90-
LabelKeys: baseLabelKeys,
91-
},
59+
desc: containerMemoryMaxUsageBytes,
9260
valueFunc: func() metricValues {
9361
return metricValues{{
9462
value: mem.MaxUsage,
@@ -97,21 +65,13 @@ func generateSandboxMemoryMetrics(sb *sandbox.Sandbox, mem *cgmgr.MemoryStats) [
9765
},
9866
},
9967
{
100-
desc: &types.MetricDescriptor{
101-
Name: "container_memory_working_set_bytes",
102-
Help: "Current working set in bytes.",
103-
LabelKeys: baseLabelKeys,
104-
},
68+
desc: containerMemoryWorkingSetBytes,
10569
valueFunc: func() metricValues {
10670
return metricValues{{value: mem.WorkingSetBytes, metricType: types.MetricType_GAUGE}}
10771
},
10872
},
10973
{
110-
desc: &types.MetricDescriptor{
111-
Name: "container_memory_failures_total",
112-
Help: "Cumulative count of memory allocation failures.",
113-
LabelKeys: append(baseLabelKeys, "failure_type", "scope"),
114-
},
74+
desc: containerMemoryFailuresTotal,
11575
valueFunc: func() metricValues {
11676
metrics := make([]metricValue, 0)
11777
pgfaultMetrics := metricValues{
@@ -152,11 +112,7 @@ func generateSandboxMemoryMetrics(sb *sandbox.Sandbox, mem *cgmgr.MemoryStats) [
152112
func GenerateSandboxOOMMetrics(sb *sandbox.Sandbox, c *oci.Container, oomCount uint64) []*types.Metric {
153113
oomMetrics := []*containerMetric{
154114
{
155-
desc: &types.MetricDescriptor{
156-
Name: "container_oom_events_total",
157-
Help: "Count of out of memory events observed for the container",
158-
LabelKeys: baseLabelKeys,
159-
},
115+
desc: containerOomEventsTotal,
160116
valueFunc: func() metricValues {
161117
return metricValues{{value: oomCount, metricType: types.MetricType_COUNTER}}
162118
},

0 commit comments

Comments
 (0)