Skip to content

Commit 3a50917

Browse files
author
Han Kang
committed
migrate kubelet's metrics/probes & metrics endpoint to metrics stability framework
1 parent d7ecc85 commit 3a50917

File tree

23 files changed

+438
-347
lines changed

23 files changed

+438
-347
lines changed

pkg/kubelet/certificate/BUILD

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ go_library(
2626
"//staging/src/k8s.io/client-go/rest:go_default_library",
2727
"//staging/src/k8s.io/client-go/util/certificate:go_default_library",
2828
"//staging/src/k8s.io/client-go/util/connrotation:go_default_library",
29-
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
29+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
30+
"//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library",
3031
"//vendor/k8s.io/klog:go_default_library",
3132
],
3233
)

pkg/kubelet/certificate/kubelet.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ import (
2424
"net"
2525
"sort"
2626

27-
"github.com/prometheus/client_golang/prometheus"
28-
2927
certificates "k8s.io/api/certificates/v1beta1"
3028
"k8s.io/api/core/v1"
3129
"k8s.io/apimachinery/pkg/types"
3230
clientset "k8s.io/client-go/kubernetes"
3331
certificatesclient "k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
3432
"k8s.io/client-go/util/certificate"
33+
compbasemetrics "k8s.io/component-base/metrics"
34+
"k8s.io/component-base/metrics/legacyregistry"
3535
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
3636
"k8s.io/kubernetes/pkg/kubelet/metrics"
3737
)
@@ -52,15 +52,16 @@ func NewKubeletServerCertificateManager(kubeClient clientset.Interface, kubeCfg
5252
if err != nil {
5353
return nil, fmt.Errorf("failed to initialize server certificate store: %v", err)
5454
}
55-
var certificateExpiration = prometheus.NewGauge(
56-
prometheus.GaugeOpts{
57-
Namespace: metrics.KubeletSubsystem,
58-
Subsystem: "certificate_manager",
59-
Name: "server_expiration_seconds",
60-
Help: "Gauge of the lifetime of a certificate. The value is the date the certificate will expire in seconds since January 1, 1970 UTC.",
55+
var certificateExpiration = compbasemetrics.NewGauge(
56+
&compbasemetrics.GaugeOpts{
57+
Namespace: metrics.KubeletSubsystem,
58+
Subsystem: "certificate_manager",
59+
Name: "server_expiration_seconds",
60+
Help: "Gauge of the lifetime of a certificate. The value is the date the certificate will expire in seconds since January 1, 1970 UTC.",
61+
StabilityLevel: compbasemetrics.ALPHA,
6162
},
6263
)
63-
prometheus.MustRegister(certificateExpiration)
64+
legacyregistry.MustRegister(certificateExpiration)
6465

6566
getTemplate := func() *x509.CertificateRequest {
6667
hostnames, ips := addressesToHostnamesAndIPs(getAddresses())
@@ -166,15 +167,16 @@ func NewKubeletClientCertificateManager(
166167
if err != nil {
167168
return nil, fmt.Errorf("failed to initialize client certificate store: %v", err)
168169
}
169-
var certificateExpiration = prometheus.NewGauge(
170-
prometheus.GaugeOpts{
171-
Namespace: metrics.KubeletSubsystem,
172-
Subsystem: "certificate_manager",
173-
Name: "client_expiration_seconds",
174-
Help: "Gauge of the lifetime of a certificate. The value is the date the certificate will expire in seconds since January 1, 1970 UTC.",
170+
var certificateExpiration = compbasemetrics.NewGauge(
171+
&compbasemetrics.GaugeOpts{
172+
Namespace: metrics.KubeletSubsystem,
173+
Subsystem: "certificate_manager",
174+
Name: "client_expiration_seconds",
175+
Help: "Gauge of the lifetime of a certificate. The value is the date the certificate will expire in seconds since January 1, 1970 UTC.",
176+
StabilityLevel: compbasemetrics.ALPHA,
175177
},
176178
)
177-
prometheus.Register(certificateExpiration)
179+
legacyregistry.Register(certificateExpiration)
178180

179181
m, err := certificate.NewManager(&certificate.Config{
180182
ClientFn: clientFn,

pkg/kubelet/dockershim/metrics/BUILD

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ go_library(
55
srcs = ["metrics.go"],
66
importpath = "k8s.io/kubernetes/pkg/kubelet/dockershim/metrics",
77
visibility = ["//visibility:public"],
8-
deps = ["//vendor/github.com/prometheus/client_golang/prometheus:go_default_library"],
8+
deps = [
9+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
10+
"//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library",
11+
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
12+
],
913
)
1014

1115
filegroup(

pkg/kubelet/dockershim/metrics/metrics.go

Lines changed: 60 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ import (
2121
"time"
2222

2323
"github.com/prometheus/client_golang/prometheus"
24+
25+
"k8s.io/component-base/metrics"
26+
"k8s.io/component-base/metrics/legacyregistry"
2427
)
2528

2629
const (
@@ -49,79 +52,87 @@ const (
4952
var (
5053
// DockerOperationsLatency collects operation latency numbers by operation
5154
// type.
52-
DockerOperationsLatency = prometheus.NewHistogramVec(
53-
prometheus.HistogramOpts{
54-
Subsystem: kubeletSubsystem,
55-
Name: DockerOperationsLatencyKey,
56-
Help: "Latency in seconds of Docker operations. Broken down by operation type.",
57-
Buckets: prometheus.DefBuckets,
55+
DockerOperationsLatency = metrics.NewHistogramVec(
56+
&metrics.HistogramOpts{
57+
Subsystem: kubeletSubsystem,
58+
Name: DockerOperationsLatencyKey,
59+
Help: "Latency in seconds of Docker operations. Broken down by operation type.",
60+
Buckets: prometheus.DefBuckets,
61+
StabilityLevel: metrics.ALPHA,
5862
},
5963
[]string{"operation_type"},
6064
)
6165
// DockerOperations collects operation counts by operation type.
62-
DockerOperations = prometheus.NewCounterVec(
63-
prometheus.CounterOpts{
64-
Subsystem: kubeletSubsystem,
65-
Name: DockerOperationsKey,
66-
Help: "Cumulative number of Docker operations by operation type.",
66+
DockerOperations = metrics.NewCounterVec(
67+
&metrics.CounterOpts{
68+
Subsystem: kubeletSubsystem,
69+
Name: DockerOperationsKey,
70+
Help: "Cumulative number of Docker operations by operation type.",
71+
StabilityLevel: metrics.ALPHA,
6772
},
6873
[]string{"operation_type"},
6974
)
7075
// DockerOperationsErrors collects operation errors by operation
7176
// type.
72-
DockerOperationsErrors = prometheus.NewCounterVec(
73-
prometheus.CounterOpts{
74-
Subsystem: kubeletSubsystem,
75-
Name: DockerOperationsErrorsKey,
76-
Help: "Cumulative number of Docker operation errors by operation type.",
77+
DockerOperationsErrors = metrics.NewCounterVec(
78+
&metrics.CounterOpts{
79+
Subsystem: kubeletSubsystem,
80+
Name: DockerOperationsErrorsKey,
81+
Help: "Cumulative number of Docker operation errors by operation type.",
82+
StabilityLevel: metrics.ALPHA,
7783
},
7884
[]string{"operation_type"},
7985
)
8086
// DockerOperationsTimeout collects operation timeouts by operation type.
81-
DockerOperationsTimeout = prometheus.NewCounterVec(
82-
prometheus.CounterOpts{
83-
Subsystem: kubeletSubsystem,
84-
Name: DockerOperationsTimeoutKey,
85-
Help: "Cumulative number of Docker operation timeout by operation type.",
87+
DockerOperationsTimeout = metrics.NewCounterVec(
88+
&metrics.CounterOpts{
89+
Subsystem: kubeletSubsystem,
90+
Name: DockerOperationsTimeoutKey,
91+
Help: "Cumulative number of Docker operation timeout by operation type.",
92+
StabilityLevel: metrics.ALPHA,
8693
},
8794
[]string{"operation_type"},
8895
)
8996

9097
// DeprecatedDockerOperationsLatency collects operation latency numbers by operation
9198
// type.
92-
DeprecatedDockerOperationsLatency = prometheus.NewSummaryVec(
93-
prometheus.SummaryOpts{
94-
Subsystem: kubeletSubsystem,
95-
Name: DeprecatedDockerOperationsLatencyKey,
96-
Help: "(Deprecated) Latency in microseconds of Docker operations. Broken down by operation type.",
99+
DeprecatedDockerOperationsLatency = metrics.NewSummaryVec(
100+
&metrics.SummaryOpts{
101+
Subsystem: kubeletSubsystem,
102+
Name: DeprecatedDockerOperationsLatencyKey,
103+
Help: "(Deprecated) Latency in microseconds of Docker operations. Broken down by operation type.",
104+
StabilityLevel: metrics.ALPHA,
97105
},
98106
[]string{"operation_type"},
99107
)
100108
// DeprecatedDockerOperations collects operation counts by operation type.
101-
DeprecatedDockerOperations = prometheus.NewCounterVec(
102-
prometheus.CounterOpts{
103-
Subsystem: kubeletSubsystem,
104-
Name: DeprecatedDockerOperationsKey,
105-
Help: "(Deprecated) Cumulative number of Docker operations by operation type.",
109+
DeprecatedDockerOperations = metrics.NewCounterVec(
110+
&metrics.CounterOpts{
111+
Subsystem: kubeletSubsystem,
112+
Name: DeprecatedDockerOperationsKey,
113+
Help: "(Deprecated) Cumulative number of Docker operations by operation type.",
114+
StabilityLevel: metrics.ALPHA,
106115
},
107116
[]string{"operation_type"},
108117
)
109118
// DeprecatedDockerOperationsErrors collects operation errors by operation
110119
// type.
111-
DeprecatedDockerOperationsErrors = prometheus.NewCounterVec(
112-
prometheus.CounterOpts{
113-
Subsystem: kubeletSubsystem,
114-
Name: DeprecatedDockerOperationsErrorsKey,
115-
Help: "(Deprecated) Cumulative number of Docker operation errors by operation type.",
120+
DeprecatedDockerOperationsErrors = metrics.NewCounterVec(
121+
&metrics.CounterOpts{
122+
Subsystem: kubeletSubsystem,
123+
Name: DeprecatedDockerOperationsErrorsKey,
124+
Help: "(Deprecated) Cumulative number of Docker operation errors by operation type.",
125+
StabilityLevel: metrics.ALPHA,
116126
},
117127
[]string{"operation_type"},
118128
)
119129
// DeprecatedDockerOperationsTimeout collects operation timeouts by operation type.
120-
DeprecatedDockerOperationsTimeout = prometheus.NewCounterVec(
121-
prometheus.CounterOpts{
122-
Subsystem: kubeletSubsystem,
123-
Name: DeprecatedDockerOperationsTimeoutKey,
124-
Help: "(Deprecated) Cumulative number of Docker operation timeout by operation type.",
130+
DeprecatedDockerOperationsTimeout = metrics.NewCounterVec(
131+
&metrics.CounterOpts{
132+
Subsystem: kubeletSubsystem,
133+
Name: DeprecatedDockerOperationsTimeoutKey,
134+
Help: "(Deprecated) Cumulative number of Docker operation timeout by operation type.",
135+
StabilityLevel: metrics.ALPHA,
125136
},
126137
[]string{"operation_type"},
127138
)
@@ -132,14 +143,14 @@ var registerMetrics sync.Once
132143
// Register all metrics.
133144
func Register() {
134145
registerMetrics.Do(func() {
135-
prometheus.MustRegister(DockerOperationsLatency)
136-
prometheus.MustRegister(DockerOperations)
137-
prometheus.MustRegister(DockerOperationsErrors)
138-
prometheus.MustRegister(DockerOperationsTimeout)
139-
prometheus.MustRegister(DeprecatedDockerOperationsLatency)
140-
prometheus.MustRegister(DeprecatedDockerOperations)
141-
prometheus.MustRegister(DeprecatedDockerOperationsErrors)
142-
prometheus.MustRegister(DeprecatedDockerOperationsTimeout)
146+
legacyregistry.MustRegister(DockerOperationsLatency)
147+
legacyregistry.MustRegister(DockerOperations)
148+
legacyregistry.MustRegister(DockerOperationsErrors)
149+
legacyregistry.MustRegister(DockerOperationsTimeout)
150+
legacyregistry.MustRegister(DeprecatedDockerOperationsLatency)
151+
legacyregistry.MustRegister(DeprecatedDockerOperations)
152+
legacyregistry.MustRegister(DeprecatedDockerOperationsErrors)
153+
legacyregistry.MustRegister(DeprecatedDockerOperationsTimeout)
143154
})
144155
}
145156

pkg/kubelet/dockershim/network/metrics/BUILD

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ go_library(
55
srcs = ["metrics.go"],
66
importpath = "k8s.io/kubernetes/pkg/kubelet/dockershim/network/metrics",
77
visibility = ["//visibility:public"],
8-
deps = ["//vendor/github.com/prometheus/client_golang/prometheus:go_default_library"],
8+
deps = [
9+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
10+
"//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library",
11+
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
12+
],
913
)
1014

1115
filegroup(

pkg/kubelet/dockershim/network/metrics/metrics.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ import (
2121
"time"
2222

2323
"github.com/prometheus/client_golang/prometheus"
24+
25+
"k8s.io/component-base/metrics"
26+
"k8s.io/component-base/metrics/legacyregistry"
2427
)
2528

2629
const (
@@ -38,23 +41,25 @@ const (
3841
var (
3942
// NetworkPluginOperationsLatency collects operation latency numbers by operation
4043
// type.
41-
NetworkPluginOperationsLatency = prometheus.NewHistogramVec(
42-
prometheus.HistogramOpts{
43-
Subsystem: kubeletSubsystem,
44-
Name: NetworkPluginOperationsLatencyKey,
45-
Help: "Latency in seconds of network plugin operations. Broken down by operation type.",
46-
Buckets: prometheus.DefBuckets,
44+
NetworkPluginOperationsLatency = metrics.NewHistogramVec(
45+
&metrics.HistogramOpts{
46+
Subsystem: kubeletSubsystem,
47+
Name: NetworkPluginOperationsLatencyKey,
48+
Help: "Latency in seconds of network plugin operations. Broken down by operation type.",
49+
Buckets: prometheus.DefBuckets,
50+
StabilityLevel: metrics.ALPHA,
4751
},
4852
[]string{"operation_type"},
4953
)
5054

5155
// DeprecatedNetworkPluginOperationsLatency collects operation latency numbers by operation
5256
// type.
53-
DeprecatedNetworkPluginOperationsLatency = prometheus.NewSummaryVec(
54-
prometheus.SummaryOpts{
55-
Subsystem: kubeletSubsystem,
56-
Name: DeprecatedNetworkPluginOperationsLatencyKey,
57-
Help: "(Deprecated) Latency in microseconds of network plugin operations. Broken down by operation type.",
57+
DeprecatedNetworkPluginOperationsLatency = metrics.NewSummaryVec(
58+
&metrics.SummaryOpts{
59+
Subsystem: kubeletSubsystem,
60+
Name: DeprecatedNetworkPluginOperationsLatencyKey,
61+
Help: "(Deprecated) Latency in microseconds of network plugin operations. Broken down by operation type.",
62+
StabilityLevel: metrics.ALPHA,
5863
},
5964
[]string{"operation_type"},
6065
)
@@ -65,8 +70,8 @@ var registerMetrics sync.Once
6570
// Register all metrics.
6671
func Register() {
6772
registerMetrics.Do(func() {
68-
prometheus.MustRegister(NetworkPluginOperationsLatency)
69-
prometheus.MustRegister(DeprecatedNetworkPluginOperationsLatency)
73+
legacyregistry.MustRegister(NetworkPluginOperationsLatency)
74+
legacyregistry.MustRegister(DeprecatedNetworkPluginOperationsLatency)
7075
})
7176
}
7277

pkg/kubelet/kuberuntime/BUILD

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,11 @@ go_test(
117117
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
118118
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
119119
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
120+
"//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library",
120121
"//staging/src/k8s.io/cri-api/pkg/apis/runtime/v1alpha2:go_default_library",
121122
"//staging/src/k8s.io/cri-api/pkg/apis/testing:go_default_library",
122123
"//vendor/github.com/golang/mock/gomock:go_default_library",
123124
"//vendor/github.com/google/cadvisor/info/v1:go_default_library",
124-
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
125-
"//vendor/github.com/prometheus/client_golang/prometheus/promhttp:go_default_library",
126125
"//vendor/github.com/stretchr/testify/assert:go_default_library",
127126
"//vendor/github.com/stretchr/testify/require:go_default_library",
128127
"//vendor/k8s.io/utils/pointer:go_default_library",

pkg/kubelet/kuberuntime/instrumented_services_test.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ import (
2222
"testing"
2323
"time"
2424

25-
"github.com/prometheus/client_golang/prometheus"
26-
"github.com/prometheus/client_golang/prometheus/promhttp"
2725
"github.com/stretchr/testify/assert"
26+
27+
"k8s.io/component-base/metrics/legacyregistry"
2828
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
2929
"k8s.io/kubernetes/pkg/kubelet/metrics"
3030
)
3131

3232
func TestRecordOperation(t *testing.T) {
33-
prometheus.MustRegister(metrics.RuntimeOperations)
34-
prometheus.MustRegister(metrics.RuntimeOperationsDuration)
35-
prometheus.MustRegister(metrics.RuntimeOperationsErrors)
33+
legacyregistry.MustRegister(metrics.RuntimeOperations)
34+
legacyregistry.MustRegister(metrics.RuntimeOperationsDuration)
35+
legacyregistry.MustRegister(metrics.RuntimeOperationsErrors)
3636

3737
temporalServer := "127.0.0.1:1234"
3838
l, err := net.Listen("tcp", temporalServer)
@@ -41,7 +41,8 @@ func TestRecordOperation(t *testing.T) {
4141

4242
prometheusURL := "http://" + temporalServer + "/metrics"
4343
mux := http.NewServeMux()
44-
mux.Handle("/metrics", promhttp.Handler())
44+
//lint:ignore SA1019 ignore deprecated warning until we move off of global registries
45+
mux.Handle("/metrics", legacyregistry.Handler())
4546
server := &http.Server{
4647
Addr: temporalServer,
4748
Handler: mux,

pkg/kubelet/metrics/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ go_library(
1515
"//staging/src/k8s.io/api/core/v1:go_default_library",
1616
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
1717
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
18+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
19+
"//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library",
1820
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
1921
"//vendor/k8s.io/klog:go_default_library",
2022
],

0 commit comments

Comments
 (0)