From d301e9c3a513982f546e97da94a9f24d8ef4cc88 Mon Sep 17 00:00:00 2001 From: Han Kang Date: Fri, 30 Aug 2019 10:41:52 -0700 Subject: [PATCH] clean-up shared metrics code and remaining references (component-base's copy is a drop in replacement) --- cmd/kubelet/BUILD | 2 +- cmd/kubelet/kubelet.go | 4 +- cmd/kubemark/BUILD | 2 +- cmd/kubemark/hollow-node.go | 2 +- pkg/BUILD | 1 - pkg/client/metrics/OWNERS | 9 - pkg/client/metrics/prometheus/BUILD | 29 ---- pkg/client/metrics/prometheus/prometheus.go | 84 ---------- pkg/util/BUILD | 2 - pkg/util/prometheusclientgo/BUILD | 30 ---- pkg/util/prometheusclientgo/adapters.go | 24 --- .../prometheusclientgo/leaderelection/BUILD | 26 --- .../leaderelection/adapter.go | 55 ------ pkg/util/workqueue/prometheus/BUILD | 29 ---- pkg/util/workqueue/prometheus/prometheus.go | 156 ------------------ 15 files changed, 5 insertions(+), 450 deletions(-) delete mode 100644 pkg/client/metrics/OWNERS delete mode 100644 pkg/client/metrics/prometheus/BUILD delete mode 100644 pkg/client/metrics/prometheus/prometheus.go delete mode 100644 pkg/util/prometheusclientgo/BUILD delete mode 100644 pkg/util/prometheusclientgo/adapters.go delete mode 100644 pkg/util/prometheusclientgo/leaderelection/BUILD delete mode 100644 pkg/util/prometheusclientgo/leaderelection/adapter.go delete mode 100644 pkg/util/workqueue/prometheus/BUILD delete mode 100644 pkg/util/workqueue/prometheus/prometheus.go diff --git a/cmd/kubelet/BUILD b/cmd/kubelet/BUILD index 519101d2edd..1f628f59b77 100644 --- a/cmd/kubelet/BUILD +++ b/cmd/kubelet/BUILD @@ -19,9 +19,9 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kubelet", deps = [ "//cmd/kubelet/app:go_default_library", - "//pkg/client/metrics/prometheus:go_default_library", "//pkg/version/prometheus:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", + "//staging/src/k8s.io/component-base/metrics/prometheus/restclient:go_default_library", ], ) diff --git a/cmd/kubelet/kubelet.go b/cmd/kubelet/kubelet.go index 92b8ac76a0e..5fc2fd5296b 100644 --- a/cmd/kubelet/kubelet.go +++ b/cmd/kubelet/kubelet.go @@ -26,9 +26,9 @@ import ( "time" "k8s.io/component-base/logs" + _ "k8s.io/component-base/metrics/prometheus/restclient" "k8s.io/kubernetes/cmd/kubelet/app" - _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration - _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration + _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration ) func main() { diff --git a/cmd/kubemark/BUILD b/cmd/kubemark/BUILD index 0647cc9d5e4..224b12c8d8b 100644 --- a/cmd/kubemark/BUILD +++ b/cmd/kubemark/BUILD @@ -17,7 +17,6 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kubemark", deps = [ "//pkg/api/legacyscheme:go_default_library", - "//pkg/client/metrics/prometheus:go_default_library", "//pkg/features:go_default_library", "//pkg/kubelet/cadvisor/testing:go_default_library", "//pkg/kubelet/cm:go_default_library", @@ -38,6 +37,7 @@ go_library( "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//staging/src/k8s.io/component-base/cli/flag:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", + "//staging/src/k8s.io/component-base/metrics/prometheus/restclient:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", "//vendor/k8s.io/klog:go_default_library", diff --git a/cmd/kubemark/hollow-node.go b/cmd/kubemark/hollow-node.go index 8792bb9e360..e931bdc4f6d 100644 --- a/cmd/kubemark/hollow-node.go +++ b/cmd/kubemark/hollow-node.go @@ -37,8 +37,8 @@ import ( "k8s.io/client-go/tools/record" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" + _ "k8s.io/component-base/metrics/prometheus/restclient" // for client metric registration "k8s.io/kubernetes/pkg/api/legacyscheme" - _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration "k8s.io/kubernetes/pkg/features" cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing" "k8s.io/kubernetes/pkg/kubelet/cm" diff --git a/pkg/BUILD b/pkg/BUILD index 85056576840..a89c9d13d98 100644 --- a/pkg/BUILD +++ b/pkg/BUILD @@ -54,7 +54,6 @@ filegroup( "//pkg/capabilities:all-srcs", "//pkg/client/conditions:all-srcs", "//pkg/client/leaderelectionconfig:all-srcs", - "//pkg/client/metrics/prometheus:all-srcs", "//pkg/client/testdata:all-srcs", "//pkg/client/tests:all-srcs", "//pkg/cloudprovider:all-srcs", diff --git a/pkg/client/metrics/OWNERS b/pkg/client/metrics/OWNERS deleted file mode 100644 index f150be53699..00000000000 --- a/pkg/client/metrics/OWNERS +++ /dev/null @@ -1,9 +0,0 @@ -# See the OWNERS docs at https://go.k8s.io/owners - -reviewers: -- wojtek-t -- eparis -- krousey -- jayunit100 -- fgrzadkowski -- tmrts diff --git a/pkg/client/metrics/prometheus/BUILD b/pkg/client/metrics/prometheus/BUILD deleted file mode 100644 index 40b04cbf373..00000000000 --- a/pkg/client/metrics/prometheus/BUILD +++ /dev/null @@ -1,29 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -load( - "@io_bazel_rules_go//go:def.bzl", - "go_library", -) - -go_library( - name = "go_default_library", - srcs = ["prometheus.go"], - importpath = "k8s.io/kubernetes/pkg/client/metrics/prometheus", - deps = [ - "//staging/src/k8s.io/client-go/tools/metrics:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - ], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [":package-srcs"], - tags = ["automanaged"], -) diff --git a/pkg/client/metrics/prometheus/prometheus.go b/pkg/client/metrics/prometheus/prometheus.go deleted file mode 100644 index c7804dfc2c1..00000000000 --- a/pkg/client/metrics/prometheus/prometheus.go +++ /dev/null @@ -1,84 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Package prometheus creates and registers prometheus metrics with -// rest clients. To use this package, you just have to import it. -package prometheus - -import ( - "net/url" - "time" - - "k8s.io/client-go/tools/metrics" - - "github.com/prometheus/client_golang/prometheus" -) - -var ( - // requestLatency is a Prometheus Summary metric type partitioned by - // "verb" and "url" labels. It is used for the rest client latency metrics. - requestLatency = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "rest_client_request_duration_seconds", - Help: "Request latency in seconds. Broken down by verb and URL.", - Buckets: prometheus.ExponentialBuckets(0.001, 2, 10), - }, - []string{"verb", "url"}, - ) - - // deprecatedRequestLatency is deprecated, please use requestLatency. - deprecatedRequestLatency = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "rest_client_request_latency_seconds", - Help: "(Deprecated) Request latency in seconds. Broken down by verb and URL.", - Buckets: prometheus.ExponentialBuckets(0.001, 2, 10), - }, - []string{"verb", "url"}, - ) - - requestResult = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "rest_client_requests_total", - Help: "Number of HTTP requests, partitioned by status code, method, and host.", - }, - []string{"code", "method", "host"}, - ) -) - -func init() { - prometheus.MustRegister(requestLatency) - prometheus.MustRegister(deprecatedRequestLatency) - prometheus.MustRegister(requestResult) - metrics.Register(&latencyAdapter{m: requestLatency, dm: deprecatedRequestLatency}, &resultAdapter{requestResult}) -} - -type latencyAdapter struct { - m *prometheus.HistogramVec - dm *prometheus.HistogramVec -} - -func (l *latencyAdapter) Observe(verb string, u url.URL, latency time.Duration) { - l.m.WithLabelValues(verb, u.String()).Observe(latency.Seconds()) - l.dm.WithLabelValues(verb, u.String()).Observe(latency.Seconds()) -} - -type resultAdapter struct { - m *prometheus.CounterVec -} - -func (r *resultAdapter) Increment(code, method, host string) { - r.m.WithLabelValues(code, method, host).Inc() -} diff --git a/pkg/util/BUILD b/pkg/util/BUILD index b280f705965..576010282c5 100644 --- a/pkg/util/BUILD +++ b/pkg/util/BUILD @@ -40,7 +40,6 @@ filegroup( "//pkg/util/parsers:all-srcs", "//pkg/util/pod:all-srcs", "//pkg/util/procfs:all-srcs", - "//pkg/util/prometheusclientgo:all-srcs", "//pkg/util/removeall:all-srcs", "//pkg/util/resizefs:all-srcs", "//pkg/util/rlimit:all-srcs", @@ -50,7 +49,6 @@ filegroup( "//pkg/util/tail:all-srcs", "//pkg/util/taints:all-srcs", "//pkg/util/tolerations:all-srcs", - "//pkg/util/workqueue/prometheus:all-srcs", ], tags = ["automanaged"], ) diff --git a/pkg/util/prometheusclientgo/BUILD b/pkg/util/prometheusclientgo/BUILD deleted file mode 100644 index 40936caf625..00000000000 --- a/pkg/util/prometheusclientgo/BUILD +++ /dev/null @@ -1,30 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = ["adapters.go"], - importpath = "k8s.io/kubernetes/pkg/util/prometheusclientgo", - visibility = ["//visibility:public"], - deps = [ - "//pkg/client/metrics/prometheus:go_default_library", - "//pkg/util/prometheusclientgo/leaderelection:go_default_library", - "//pkg/util/workqueue/prometheus:go_default_library", - ], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [ - ":package-srcs", - "//pkg/util/prometheusclientgo/leaderelection:all-srcs", - ], - tags = ["automanaged"], - visibility = ["//visibility:public"], -) diff --git a/pkg/util/prometheusclientgo/adapters.go b/pkg/util/prometheusclientgo/adapters.go deleted file mode 100644 index 75b316015f0..00000000000 --- a/pkg/util/prometheusclientgo/adapters.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package prometheusclientgo - -// Provided metrics needing adapting -import ( - _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration - _ "k8s.io/kubernetes/pkg/util/prometheusclientgo/leaderelection" // for leader election metric registration - _ "k8s.io/kubernetes/pkg/util/workqueue/prometheus" // for workqueue metric registration -) diff --git a/pkg/util/prometheusclientgo/leaderelection/BUILD b/pkg/util/prometheusclientgo/leaderelection/BUILD deleted file mode 100644 index b43cf980dea..00000000000 --- a/pkg/util/prometheusclientgo/leaderelection/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = ["adapter.go"], - importpath = "k8s.io/kubernetes/pkg/util/prometheusclientgo/leaderelection", - visibility = ["//visibility:public"], - deps = [ - "//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - ], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [":package-srcs"], - tags = ["automanaged"], - visibility = ["//visibility:public"], -) diff --git a/pkg/util/prometheusclientgo/leaderelection/adapter.go b/pkg/util/prometheusclientgo/leaderelection/adapter.go deleted file mode 100644 index 58753c2900c..00000000000 --- a/pkg/util/prometheusclientgo/leaderelection/adapter.go +++ /dev/null @@ -1,55 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package prometheus - -import ( - "github.com/prometheus/client_golang/prometheus" - "k8s.io/client-go/tools/leaderelection" -) - -// Package prometheus sets the workqueue DefaultMetricsFactory to produce -// prometheus metrics. To use this package, you just have to import it. - -func init() { - leaderelection.SetProvider(prometheusMetricsProvider{}) -} - -type prometheusMetricsProvider struct{} - -func (prometheusMetricsProvider) NewLeaderMetric() leaderelection.SwitchMetric { - leaderGauge := prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Name: "leader_election_master_status", - Help: "Gauge of if the reporting system is master of the relevant lease, 0 indicates backup, 1 indicates master. 'name' is the string used to identify the lease. Please make sure to group by name.", - }, - []string{"name"}, - ) - prometheus.Register(leaderGauge) - return &switchAdapter{gauge: leaderGauge} -} - -type switchAdapter struct { - gauge *prometheus.GaugeVec -} - -func (s *switchAdapter) On(name string) { - s.gauge.WithLabelValues(name).Set(1.0) -} - -func (s *switchAdapter) Off(name string) { - s.gauge.WithLabelValues(name).Set(0.0) -} diff --git a/pkg/util/workqueue/prometheus/BUILD b/pkg/util/workqueue/prometheus/BUILD deleted file mode 100644 index 62a98289a50..00000000000 --- a/pkg/util/workqueue/prometheus/BUILD +++ /dev/null @@ -1,29 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -load( - "@io_bazel_rules_go//go:def.bzl", - "go_library", -) - -go_library( - name = "go_default_library", - srcs = ["prometheus.go"], - importpath = "k8s.io/kubernetes/pkg/util/workqueue/prometheus", - deps = [ - "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - ], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [":package-srcs"], - tags = ["automanaged"], -) diff --git a/pkg/util/workqueue/prometheus/prometheus.go b/pkg/util/workqueue/prometheus/prometheus.go deleted file mode 100644 index 8b26d35fffe..00000000000 --- a/pkg/util/workqueue/prometheus/prometheus.go +++ /dev/null @@ -1,156 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package prometheus - -import ( - "k8s.io/client-go/util/workqueue" - - "github.com/prometheus/client_golang/prometheus" -) - -// Package prometheus sets the workqueue DefaultMetricsFactory to produce -// prometheus metrics. To use this package, you just have to import it. - -// Metrics subsystem and keys used by the workqueue. -const ( - WorkQueueSubsystem = "workqueue" - DepthKey = "depth" - AddsKey = "adds_total" - QueueLatencyKey = "queue_duration_seconds" - WorkDurationKey = "work_duration_seconds" - UnfinishedWorkKey = "unfinished_work_seconds" - LongestRunningProcessorKey = "longest_running_processor_seconds" - RetriesKey = "retries_total" -) - -var ( - depth = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Subsystem: WorkQueueSubsystem, - Name: DepthKey, - Help: "Current depth of workqueue", - }, - []string{"name"}, - ) - - adds = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Subsystem: WorkQueueSubsystem, - Name: AddsKey, - Help: "Total number of adds handled by workqueue", - }, - []string{"name"}, - ) - - latency = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Subsystem: WorkQueueSubsystem, - Name: QueueLatencyKey, - Help: "How long in seconds an item stays in workqueue before being requested.", - Buckets: prometheus.ExponentialBuckets(10e-9, 10, 10), - }, - []string{"name"}, - ) - - workDuration = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Subsystem: WorkQueueSubsystem, - Name: WorkDurationKey, - Help: "How long in seconds processing an item from workqueue takes.", - Buckets: prometheus.ExponentialBuckets(10e-9, 10, 10), - }, - []string{"name"}, - ) - - unfinished = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Subsystem: WorkQueueSubsystem, - Name: UnfinishedWorkKey, - Help: "How many seconds of work has done that " + - "is in progress and hasn't been observed by work_duration. Large " + - "values indicate stuck threads. One can deduce the number of stuck " + - "threads by observing the rate at which this increases.", - }, - []string{"name"}, - ) - - longestRunningProcessor = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Subsystem: WorkQueueSubsystem, - Name: LongestRunningProcessorKey, - Help: "How many seconds has the longest running " + - "processor for workqueue been running.", - }, - []string{"name"}, - ) - - retries = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Subsystem: WorkQueueSubsystem, - Name: RetriesKey, - Help: "Total number of retries handled by workqueue", - }, - []string{"name"}, - ) -) - -func registerMetrics() { - prometheus.MustRegister( - depth, - adds, - latency, - workDuration, - unfinished, - longestRunningProcessor, - retries, - ) -} - -func init() { - registerMetrics() - workqueue.SetProvider(prometheusMetricsProvider{}) -} - -type prometheusMetricsProvider struct{} - -func (prometheusMetricsProvider) NewDepthMetric(name string) workqueue.GaugeMetric { - return depth.WithLabelValues(name) -} - -func (prometheusMetricsProvider) NewAddsMetric(name string) workqueue.CounterMetric { - return adds.WithLabelValues(name) -} - -func (prometheusMetricsProvider) NewLatencyMetric(name string) workqueue.HistogramMetric { - return latency.WithLabelValues(name) -} - -func (prometheusMetricsProvider) NewWorkDurationMetric(name string) workqueue.HistogramMetric { - return workDuration.WithLabelValues(name) -} - -func (prometheusMetricsProvider) NewUnfinishedWorkSecondsMetric(name string) workqueue.SettableGaugeMetric { - return unfinished.WithLabelValues(name) -} - -func (prometheusMetricsProvider) NewLongestRunningProcessorSecondsMetric(name string) workqueue.SettableGaugeMetric { - return longestRunningProcessor.WithLabelValues(name) -} - -func (prometheusMetricsProvider) NewRetriesMetric(name string) workqueue.CounterMetric { - return retries.WithLabelValues(name) -}