Skip to content

Commit b909c01

Browse files
authored
Merge pull request #1844 from CatherineF-dev/import-k8s-metrics-stability
Import k8s metrics stability framework
2 parents 0880c8d + 5995c1e commit b909c01

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+783
-558
lines changed

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ require (
2222
k8s.io/apimachinery v0.25.2
2323
k8s.io/autoscaler/vertical-pod-autoscaler v0.12.0
2424
k8s.io/client-go v0.25.2
25+
k8s.io/component-base v0.25.2
2526
k8s.io/klog/v2 v2.80.1
2627
k8s.io/sample-controller v0.25.2
2728
k8s.io/utils v0.0.0-20220922133306-665eaaec4324
@@ -40,6 +41,7 @@ require (
4041
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
4142
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
4243
github.com/beorn7/perks v1.0.1 // indirect
44+
github.com/blang/semver/v4 v4.0.0 // indirect
4345
github.com/cespare/xxhash/v2 v2.1.2 // indirect
4446
github.com/davecgh/go-spew v1.1.1 // indirect
4547
github.com/emicklei/go-restful/v3 v3.8.0 // indirect

go.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
9393
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
9494
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
9595
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
96+
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
9697
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
9798
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
9899
github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
@@ -984,6 +985,8 @@ k8s.io/client-go v0.25.2/go.mod h1:i7cNU7N+yGQmJkewcRD2+Vuj4iz7b30kI8OcL3horQ4=
984985
k8s.io/code-generator v0.25.0/go.mod h1:B6jZgI3DvDFAualltPitbYMQ74NjaCFxum3YeKZZ+3w=
985986
k8s.io/code-generator v0.25.2/go.mod h1:f61OcU2VqVQcjt/6TrU0sta1TA5hHkOO6ZZPwkL9Eys=
986987
k8s.io/component-base v0.25.0/go.mod h1:F2Sumv9CnbBlqrpdf7rKZTmmd2meJq0HizeyY/yAFxk=
988+
k8s.io/component-base v0.25.2 h1:Nve/ZyHLUBHz1rqwkjXm/Re6IniNa5k7KgzxZpTfSQY=
989+
k8s.io/component-base v0.25.2/go.mod h1:90W21YMr+Yjg7MX+DohmZLzjsBtaxQDDwaX4YxDkl60=
987990
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
988991
k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
989992
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=

internal/store/certificatesigningrequest.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package store
1919
import (
2020
"context"
2121

22+
basemetrics "k8s.io/component-base/metrics"
23+
2224
"k8s.io/kube-state-metrics/v2/pkg/metric"
2325
generator "k8s.io/kube-state-metrics/v2/pkg/metric_generator"
2426

@@ -58,10 +60,11 @@ func csrMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
5860
}
5961
}),
6062
),
61-
*generator.NewFamilyGenerator(
63+
*generator.NewFamilyGeneratorWithStability(
6264
descCSRLabelsName,
6365
descCSRLabelsHelp,
6466
metric.Gauge,
67+
basemetrics.STABLE,
6568
"",
6669
wrapCSRFunc(func(j *certv1.CertificateSigningRequest) *metric.Family {
6770
labelKeys, labelValues := createPrometheusLabelKeysValues("label", j.Labels, allowLabelsList)
@@ -76,10 +79,11 @@ func csrMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
7679
}
7780
}),
7881
),
79-
*generator.NewFamilyGenerator(
82+
*generator.NewFamilyGeneratorWithStability(
8083
"kube_certificatesigningrequest_created",
8184
"Unix creation timestamp",
8285
metric.Gauge,
86+
basemetrics.STABLE,
8387
"",
8488
wrapCSRFunc(func(csr *certv1.CertificateSigningRequest) *metric.Family {
8589
ms := []*metric.Metric{}
@@ -96,21 +100,23 @@ func csrMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
96100
}
97101
}),
98102
),
99-
*generator.NewFamilyGenerator(
103+
*generator.NewFamilyGeneratorWithStability(
100104
"kube_certificatesigningrequest_condition",
101105
"The number of each certificatesigningrequest condition",
102106
metric.Gauge,
107+
basemetrics.STABLE,
103108
"",
104109
wrapCSRFunc(func(csr *certv1.CertificateSigningRequest) *metric.Family {
105110
return &metric.Family{
106111
Metrics: addCSRConditionMetrics(csr.Status),
107112
}
108113
}),
109114
),
110-
*generator.NewFamilyGenerator(
115+
*generator.NewFamilyGeneratorWithStability(
111116
"kube_certificatesigningrequest_cert_length",
112117
"Length of the issued cert",
113118
metric.Gauge,
119+
basemetrics.STABLE,
114120
"",
115121
wrapCSRFunc(func(csr *certv1.CertificateSigningRequest) *metric.Family {
116122
return &metric.Family{

internal/store/certificatesigningrequest_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ import (
2828

2929
func TestCsrStore(t *testing.T) {
3030
const metadata = `
31-
# HELP kube_certificatesigningrequest_labels Kubernetes labels converted to Prometheus labels.
31+
# HELP kube_certificatesigningrequest_labels [STABLE] Kubernetes labels converted to Prometheus labels.
3232
# TYPE kube_certificatesigningrequest_labels gauge
33-
# HELP kube_certificatesigningrequest_created Unix creation timestamp
33+
# HELP kube_certificatesigningrequest_created [STABLE] Unix creation timestamp
3434
# TYPE kube_certificatesigningrequest_created gauge
35-
# HELP kube_certificatesigningrequest_condition The number of each certificatesigningrequest condition
35+
# HELP kube_certificatesigningrequest_condition [STABLE] The number of each certificatesigningrequest condition
3636
# TYPE kube_certificatesigningrequest_condition gauge
37-
# HELP kube_certificatesigningrequest_cert_length Length of the issued cert
37+
# HELP kube_certificatesigningrequest_cert_length [STABLE] Length of the issued cert
3838
# TYPE kube_certificatesigningrequest_cert_length gauge
3939
`
4040
cases := []generateMetricsTestCase{

internal/store/configmap.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"k8s.io/apimachinery/pkg/watch"
2626
clientset "k8s.io/client-go/kubernetes"
2727
"k8s.io/client-go/tools/cache"
28+
basemetrics "k8s.io/component-base/metrics"
2829

2930
"k8s.io/kube-state-metrics/v2/pkg/metric"
3031
generator "k8s.io/kube-state-metrics/v2/pkg/metric_generator"
@@ -54,10 +55,11 @@ func configMapMetricFamilies(allowAnnotationsList, allowLabelsList []string) []g
5455
}
5556
}),
5657
),
57-
*generator.NewFamilyGenerator(
58+
*generator.NewFamilyGeneratorWithStability(
5859
"kube_configmap_labels",
5960
"Kubernetes labels converted to Prometheus labels.",
6061
metric.Gauge,
62+
basemetrics.STABLE,
6163
"",
6264
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
6365
labelKeys, labelValues := createPrometheusLabelKeysValues("label", c.Labels, allowLabelsList)
@@ -72,10 +74,11 @@ func configMapMetricFamilies(allowAnnotationsList, allowLabelsList []string) []g
7274
}
7375
}),
7476
),
75-
*generator.NewFamilyGenerator(
77+
*generator.NewFamilyGeneratorWithStability(
7678
"kube_configmap_info",
7779
"Information about configmap.",
7880
metric.Gauge,
81+
basemetrics.STABLE,
7982
"",
8083
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
8184
return &metric.Family{
@@ -87,10 +90,11 @@ func configMapMetricFamilies(allowAnnotationsList, allowLabelsList []string) []g
8790
}
8891
}),
8992
),
90-
*generator.NewFamilyGenerator(
93+
*generator.NewFamilyGeneratorWithStability(
9194
"kube_configmap_created",
9295
"Unix creation timestamp",
9396
metric.Gauge,
97+
basemetrics.STABLE,
9498
"",
9599
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
96100
ms := []*metric.Metric{}

internal/store/configmap_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ func TestConfigMapStore(t *testing.T) {
5454
},
5555
Want: `
5656
# HELP kube_configmap_annotations Kubernetes annotations converted to Prometheus labels.
57-
# HELP kube_configmap_labels Kubernetes labels converted to Prometheus labels.
58-
# HELP kube_configmap_info Information about configmap.
57+
# HELP kube_configmap_labels [STABLE] Kubernetes labels converted to Prometheus labels.
58+
# HELP kube_configmap_info [STABLE] Information about configmap.
5959
# HELP kube_configmap_metadata_resource_version Resource version representing a specific version of the configmap.
6060
# TYPE kube_configmap_annotations gauge
6161
# TYPE kube_configmap_labels gauge
@@ -82,8 +82,8 @@ func TestConfigMapStore(t *testing.T) {
8282
},
8383
},
8484
Want: `
85-
# HELP kube_configmap_created Unix creation timestamp
86-
# HELP kube_configmap_info Information about configmap.
85+
# HELP kube_configmap_created [STABLE] Unix creation timestamp
86+
# HELP kube_configmap_info [STABLE] Information about configmap.
8787
# HELP kube_configmap_metadata_resource_version Resource version representing a specific version of the configmap.
8888
# TYPE kube_configmap_created gauge
8989
# TYPE kube_configmap_info gauge

internal/store/cronjob.go

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"k8s.io/apimachinery/pkg/watch"
3030
clientset "k8s.io/client-go/kubernetes"
3131
"k8s.io/client-go/tools/cache"
32+
basemetrics "k8s.io/component-base/metrics"
3233

3334
"k8s.io/kube-state-metrics/v2/pkg/metric"
3435
generator "k8s.io/kube-state-metrics/v2/pkg/metric_generator"
@@ -62,10 +63,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
6263
}
6364
}),
6465
),
65-
*generator.NewFamilyGenerator(
66+
*generator.NewFamilyGeneratorWithStability(
6667
descCronJobLabelsName,
6768
descCronJobLabelsHelp,
6869
metric.Gauge,
70+
basemetrics.STABLE,
6971
"",
7072
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
7173
labelKeys, labelValues := createPrometheusLabelKeysValues("label", j.Labels, allowLabelsList)
@@ -80,10 +82,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
8082
}
8183
}),
8284
),
83-
*generator.NewFamilyGenerator(
85+
*generator.NewFamilyGeneratorWithStability(
8486
"kube_cronjob_info",
8587
"Info about cronjob.",
8688
metric.Gauge,
89+
basemetrics.STABLE,
8790
"",
8891
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
8992
return &metric.Family{
@@ -97,10 +100,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
97100
}
98101
}),
99102
),
100-
*generator.NewFamilyGenerator(
103+
*generator.NewFamilyGeneratorWithStability(
101104
"kube_cronjob_created",
102105
"Unix creation timestamp",
103106
metric.Gauge,
107+
basemetrics.STABLE,
104108
"",
105109
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
106110
ms := []*metric.Metric{}
@@ -117,10 +121,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
117121
}
118122
}),
119123
),
120-
*generator.NewFamilyGenerator(
124+
*generator.NewFamilyGeneratorWithStability(
121125
"kube_cronjob_status_active",
122126
"Active holds pointers to currently running jobs.",
123127
metric.Gauge,
128+
basemetrics.STABLE,
124129
"",
125130
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
126131
return &metric.Family{
@@ -134,10 +139,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
134139
}
135140
}),
136141
),
137-
*generator.NewFamilyGenerator(
142+
*generator.NewFamilyGeneratorWithStability(
138143
"kube_cronjob_status_last_schedule_time",
139144
"LastScheduleTime keeps information of when was the last time the job was successfully scheduled.",
140145
metric.Gauge,
146+
basemetrics.STABLE,
141147
"",
142148
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
143149
ms := []*metric.Metric{}
@@ -176,10 +182,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
176182
}
177183
}),
178184
),
179-
*generator.NewFamilyGenerator(
185+
*generator.NewFamilyGeneratorWithStability(
180186
"kube_cronjob_spec_suspend",
181187
"Suspend flag tells the controller to suspend subsequent executions.",
182188
metric.Gauge,
189+
basemetrics.STABLE,
183190
"",
184191
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
185192
ms := []*metric.Metric{}
@@ -197,10 +204,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
197204
}
198205
}),
199206
),
200-
*generator.NewFamilyGenerator(
207+
*generator.NewFamilyGeneratorWithStability(
201208
"kube_cronjob_spec_starting_deadline_seconds",
202209
"Deadline in seconds for starting the job if it misses scheduled time for any reason.",
203210
metric.Gauge,
211+
basemetrics.STABLE,
204212
"",
205213
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
206214
ms := []*metric.Metric{}
@@ -219,10 +227,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
219227
}
220228
}),
221229
),
222-
*generator.NewFamilyGenerator(
230+
*generator.NewFamilyGeneratorWithStability(
223231
"kube_cronjob_next_schedule_time",
224232
"Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed.",
225233
metric.Gauge,
234+
basemetrics.STABLE,
226235
"",
227236
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
228237
ms := []*metric.Metric{}
@@ -244,10 +253,11 @@ func cronJobMetricFamilies(allowAnnotationsList, allowLabelsList []string) []gen
244253
}
245254
}),
246255
),
247-
*generator.NewFamilyGenerator(
256+
*generator.NewFamilyGeneratorWithStability(
248257
"kube_cronjob_metadata_resource_version",
249258
"Resource version representing a specific version of the cronjob.",
250259
metric.Gauge,
260+
basemetrics.STABLE,
251261
"",
252262
wrapCronJobFunc(func(j *batchv1.CronJob) *metric.Family {
253263
return &metric.Family{

0 commit comments

Comments
 (0)