Skip to content

Commit fb056e5

Browse files
committed
Add Misc cgroup support to Prometheus metrics
1 parent 450edef commit fb056e5

File tree

5 files changed

+65
-0
lines changed

5 files changed

+65
-0
lines changed

docs/storage/prometheus.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ Metric name | Type | Description | Unit (where applicable) | option parameter |
5050
`container_hugetlb_failcnt` | Counter | Number of hugepage usage hits limits | | hugetlb |
5151
`container_hugetlb_max_usage_bytes` | Gauge | Maximum hugepage usages recorded | bytes | hugetlb |
5252
`container_hugetlb_usage_bytes` | Gauge | Current hugepage usage | bytes | hugetlb |
53+
`container_misc_usage` | Gauge | Current usage of the misc scalar resource specified by the label | | misc |
54+
`container_misc_events` | Counter | Number of times the usage for the misc scalar resource specified by the label was about to go over the max boundary | | misc |
5355
`container_last_seen` | Gauge | Last time a container was seen by the exporter | timestamp | - |
5456
`container_llc_occupancy_bytes` | Gauge | Last level cache usage statistics for container counted with RDT Memory Bandwidth Monitoring (MBM). | bytes | resctrl |
5557
`container_memory_bandwidth_bytes` | Gauge | Total memory bandwidth usage statistics for container counted with RDT Memory Bandwidth Monitoring (MBM). | bytes | resctrl |

metrics/prometheus.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,43 @@ func NewPrometheusCollector(i infoProvider, f ContainerLabelsFunc, includedMetri
368368
},
369369
}...)
370370
}
371+
if includedMetrics.Has(container.MiscMetrics) {
372+
c.containerMetrics = append(c.containerMetrics, []containerMetric{
373+
{
374+
name: "container_misc_usage",
375+
help: "Current usage of the misc scalar resource specified by the label",
376+
valueType: prometheus.GaugeValue,
377+
extraLabels: []string{"resource"},
378+
getValues: func(s *info.ContainerStats) metricValues {
379+
values := make(metricValues, 0, len(s.Misc))
380+
for k, v := range s.Misc {
381+
values = append(values, metricValue{
382+
value: float64(v.Usage),
383+
labels: []string{k},
384+
timestamp: s.Timestamp,
385+
})
386+
}
387+
return values
388+
},
389+
}, {
390+
name: "container_misc_events",
391+
help: "Number of times the usage for the misc scalar resource specified by the label was about to go over the max boundary",
392+
valueType: prometheus.CounterValue,
393+
extraLabels: []string{"resource"},
394+
getValues: func(s *info.ContainerStats) metricValues {
395+
values := make(metricValues, 0, len(s.Misc))
396+
for k, v := range s.Misc {
397+
values = append(values, metricValue{
398+
value: float64(v.Events),
399+
labels: []string{k},
400+
timestamp: s.Timestamp,
401+
})
402+
}
403+
return values
404+
},
405+
},
406+
}...)
407+
}
371408
if includedMetrics.Has(container.MemoryUsageMetrics) {
372409
c.containerMetrics = append(c.containerMetrics, []containerMetric{
373410
{

metrics/prometheus_fake.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,16 @@ func (p testSubcontainersInfoProvider) GetRequestedContainersInfo(string, v2.Req
371371
Failcnt: 0,
372372
},
373373
},
374+
Misc: map[string]info.MiscStats{
375+
"res_a": {
376+
Usage: 1,
377+
Events: 42,
378+
},
379+
"res_b": {
380+
Usage: 2,
381+
Events: 42,
382+
},
383+
},
374384
Network: info.NetworkStats{
375385
InterfaceStats: info.InterfaceStats{
376386
Name: "eth0",

metrics/testdata/prometheus_metrics

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ container_hugetlb_max_usage_bytes{container_env_foo_env="prod",container_label_f
136136
# TYPE container_hugetlb_usage_bytes gauge
137137
container_hugetlb_usage_bytes{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",pagesize="1Gi",zone_name="hello"} 0 1395066363000
138138
container_hugetlb_usage_bytes{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",pagesize="2Mi",zone_name="hello"} 4 1395066363000
139+
# HELP container_misc_usage Current usage of the resource
140+
# TYPE container_misc_usage gauge
141+
container_misc_usage{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",resource="res_a",zone_name="hello"} 1 1395066363000
142+
container_misc_usage{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",resource="res_b",zone_name="hello"} 2 1395066363000
143+
# HELP container_misc_events Number of times the usage for the resource was about to go over the max boundary
144+
# TYPE container_misc_events counter
145+
container_misc_events{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",resource="res_a",zone_name="hello"} 42 1395066363000
146+
container_misc_events{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",resource="res_b",zone_name="hello"} 42 1395066363000
139147
# HELP container_last_seen Last time a container was seen by the exporter
140148
# TYPE container_last_seen gauge
141149
container_last_seen{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 1.395066363e+09 1395066363000

metrics/testdata/prometheus_metrics_whitelist_filtered

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ container_hugetlb_max_usage_bytes{container_env_foo_env="prod",id="testcontainer
136136
# TYPE container_hugetlb_usage_bytes gauge
137137
container_hugetlb_usage_bytes{container_env_foo_env="prod",id="testcontainer",image="test",name="testcontaineralias",pagesize="1Gi",zone_name="hello"} 0 1395066363000
138138
container_hugetlb_usage_bytes{container_env_foo_env="prod",id="testcontainer",image="test",name="testcontaineralias",pagesize="2Mi",zone_name="hello"} 4 1395066363000
139+
# HELP container_misc_usage Current usage of the resource
140+
# TYPE container_misc_usage gauge
141+
container_misc_usage{container_env_foo_env="prod",id="testcontainer",image="test",name="testcontaineralias",resource="res_a",zone_name="hello"} 1 1395066363000
142+
container_misc_usage{container_env_foo_env="prod",id="testcontainer",image="test",name="testcontaineralias",resource="res_b",zone_name="hello"} 2 1395066363000
143+
# HELP container_misc_events Number of times the usage for the resource was about to go over the max boundary
144+
# TYPE container_misc_events counter
145+
container_misc_events{container_env_foo_env="prod",id="testcontainer",image="test",name="testcontaineralias",resource="res_a",zone_name="hello"} 42 1395066363000
146+
container_misc_events{container_env_foo_env="prod",id="testcontainer",image="test",name="testcontaineralias",resource="res_b",zone_name="hello"} 42 1395066363000
139147
# HELP container_last_seen Last time a container was seen by the exporter
140148
# TYPE container_last_seen gauge
141149
container_last_seen{container_env_foo_env="prod",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 1.395066363e+09 1395066363000

0 commit comments

Comments
 (0)