mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
clean-up shared metrics code and remaining references (component-base's copy is a drop in replacement)
This commit is contained in:
parent
afa979c295
commit
d301e9c3a5
@ -19,9 +19,9 @@ go_library(
|
|||||||
importpath = "k8s.io/kubernetes/cmd/kubelet",
|
importpath = "k8s.io/kubernetes/cmd/kubelet",
|
||||||
deps = [
|
deps = [
|
||||||
"//cmd/kubelet/app:go_default_library",
|
"//cmd/kubelet/app:go_default_library",
|
||||||
"//pkg/client/metrics/prometheus:go_default_library",
|
|
||||||
"//pkg/version/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/logs:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-base/metrics/prometheus/restclient:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -26,9 +26,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/component-base/logs"
|
"k8s.io/component-base/logs"
|
||||||
|
_ "k8s.io/component-base/metrics/prometheus/restclient"
|
||||||
"k8s.io/kubernetes/cmd/kubelet/app"
|
"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() {
|
func main() {
|
||||||
|
@ -17,7 +17,6 @@ go_library(
|
|||||||
importpath = "k8s.io/kubernetes/cmd/kubemark",
|
importpath = "k8s.io/kubernetes/cmd/kubemark",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/client/metrics/prometheus:go_default_library",
|
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/kubelet/cadvisor/testing:go_default_library",
|
"//pkg/kubelet/cadvisor/testing:go_default_library",
|
||||||
"//pkg/kubelet/cm: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/client-go/tools/record:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/cli/flag: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/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/cobra:go_default_library",
|
||||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
@ -37,8 +37,8 @@ import (
|
|||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
cliflag "k8s.io/component-base/cli/flag"
|
cliflag "k8s.io/component-base/cli/flag"
|
||||||
"k8s.io/component-base/logs"
|
"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/api/legacyscheme"
|
||||||
_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration
|
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
|
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
|
@ -54,7 +54,6 @@ filegroup(
|
|||||||
"//pkg/capabilities:all-srcs",
|
"//pkg/capabilities:all-srcs",
|
||||||
"//pkg/client/conditions:all-srcs",
|
"//pkg/client/conditions:all-srcs",
|
||||||
"//pkg/client/leaderelectionconfig:all-srcs",
|
"//pkg/client/leaderelectionconfig:all-srcs",
|
||||||
"//pkg/client/metrics/prometheus:all-srcs",
|
|
||||||
"//pkg/client/testdata:all-srcs",
|
"//pkg/client/testdata:all-srcs",
|
||||||
"//pkg/client/tests:all-srcs",
|
"//pkg/client/tests:all-srcs",
|
||||||
"//pkg/cloudprovider:all-srcs",
|
"//pkg/cloudprovider:all-srcs",
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
# See the OWNERS docs at https://go.k8s.io/owners
|
|
||||||
|
|
||||||
reviewers:
|
|
||||||
- wojtek-t
|
|
||||||
- eparis
|
|
||||||
- krousey
|
|
||||||
- jayunit100
|
|
||||||
- fgrzadkowski
|
|
||||||
- tmrts
|
|
@ -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"],
|
|
||||||
)
|
|
@ -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()
|
|
||||||
}
|
|
@ -40,7 +40,6 @@ filegroup(
|
|||||||
"//pkg/util/parsers:all-srcs",
|
"//pkg/util/parsers:all-srcs",
|
||||||
"//pkg/util/pod:all-srcs",
|
"//pkg/util/pod:all-srcs",
|
||||||
"//pkg/util/procfs:all-srcs",
|
"//pkg/util/procfs:all-srcs",
|
||||||
"//pkg/util/prometheusclientgo:all-srcs",
|
|
||||||
"//pkg/util/removeall:all-srcs",
|
"//pkg/util/removeall:all-srcs",
|
||||||
"//pkg/util/resizefs:all-srcs",
|
"//pkg/util/resizefs:all-srcs",
|
||||||
"//pkg/util/rlimit:all-srcs",
|
"//pkg/util/rlimit:all-srcs",
|
||||||
@ -50,7 +49,6 @@ filegroup(
|
|||||||
"//pkg/util/tail:all-srcs",
|
"//pkg/util/tail:all-srcs",
|
||||||
"//pkg/util/taints:all-srcs",
|
"//pkg/util/taints:all-srcs",
|
||||||
"//pkg/util/tolerations:all-srcs",
|
"//pkg/util/tolerations:all-srcs",
|
||||||
"//pkg/util/workqueue/prometheus:all-srcs",
|
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
)
|
)
|
||||||
|
@ -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"],
|
|
||||||
)
|
|
@ -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
|
|
||||||
)
|
|
@ -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"],
|
|
||||||
)
|
|
@ -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)
|
|
||||||
}
|
|
@ -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"],
|
|
||||||
)
|
|
@ -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)
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user