Skip to content

Commit 889e23f

Browse files
authored
Merge pull request #2930 from Colstuwjx/container-env-as-metrics-labels
feat: add container whitelisted envs as metrics labels.
2 parents 2dd0cd9 + f05754a commit 889e23f

File tree

3 files changed

+455
-1
lines changed

3 files changed

+455
-1
lines changed

metrics/prometheus.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1836,7 +1836,7 @@ func DefaultContainerLabels(container *info.ContainerInfo) map[string]string {
18361836
}
18371837

18381838
// BaseContainerLabels returns a ContainerLabelsFunc that exports the container
1839-
// name, first alias, image name as well as white listed label values.
1839+
// name, first alias, image name as well as all its white listed env and label values.
18401840
func BaseContainerLabels(whiteList []string) func(container *info.ContainerInfo) map[string]string {
18411841
whiteListMap := make(map[string]struct{}, len(whiteList))
18421842
for _, k := range whiteList {
@@ -1856,6 +1856,9 @@ func BaseContainerLabels(whiteList []string) func(container *info.ContainerInfo)
18561856
set[ContainerLabelPrefix+k] = v
18571857
}
18581858
}
1859+
for k, v := range container.Spec.Envs {
1860+
set[ContainerEnvPrefix+k] = v
1861+
}
18591862
return set
18601863
}
18611864
}

metrics/prometheus_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,22 @@ func TestPrometheusCollector(t *testing.T) {
4444
testPrometheusCollector(t, reg, "testdata/prometheus_metrics")
4545
}
4646

47+
func TestPrometheusCollectorWithWhiteList(t *testing.T) {
48+
c := NewPrometheusCollector(testSubcontainersInfoProvider{}, func(container *info.ContainerInfo) map[string]string {
49+
whitelistedLabels := []string{
50+
"no_one_match",
51+
}
52+
containerLabelFunc := BaseContainerLabels(whitelistedLabels)
53+
s := containerLabelFunc(container)
54+
s["zone.name"] = "hello"
55+
return s
56+
}, container.AllMetrics, now, v2.RequestOptions{})
57+
reg := prometheus.NewRegistry()
58+
reg.MustRegister(c)
59+
60+
testPrometheusCollector(t, reg, "testdata/prometheus_metrics_whitelist_filtered")
61+
}
62+
4763
func TestPrometheusCollectorWithPerfAggregated(t *testing.T) {
4864
metrics := container.MetricSet{
4965
container.PerfMetrics: struct{}{},

0 commit comments

Comments
 (0)