mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #53434 from crassirostris/fix-apiserver-client-metrics
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Fix a bug with exposing prometheus client metrics in multiple components I think this is a bug caused by splitting the repos: prometheus metrics are registered in a module that initialized metrics client-go never uses. ```release-note Fix a bug that prevents client-go metrics from being registered in prometheus in multiple components. ```
This commit is contained in:
commit
960287878e
@ -57,7 +57,7 @@ filegroup(
|
|||||||
"//pkg/client/listers/scheduling/internalversion:all-srcs",
|
"//pkg/client/listers/scheduling/internalversion:all-srcs",
|
||||||
"//pkg/client/listers/settings/internalversion:all-srcs",
|
"//pkg/client/listers/settings/internalversion:all-srcs",
|
||||||
"//pkg/client/listers/storage/internalversion:all-srcs",
|
"//pkg/client/listers/storage/internalversion:all-srcs",
|
||||||
"//pkg/client/metrics: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/client/unversioned:all-srcs",
|
"//pkg/client/unversioned:all-srcs",
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = ["metrics.go"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [
|
|
||||||
":package-srcs",
|
|
||||||
"//pkg/client/metrics/prometheus:all-srcs",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
)
|
|
@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015 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 metrics provides abstractions for registering which metrics
|
|
||||||
// to record.
|
|
||||||
package metrics
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/url"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
var registerMetrics sync.Once
|
|
||||||
|
|
||||||
// LatencyMetric observes client latency partitioned by verb and url.
|
|
||||||
type LatencyMetric interface {
|
|
||||||
Observe(verb string, u url.URL, latency time.Duration)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResultMetric counts response codes partitioned by method and host.
|
|
||||||
type ResultMetric interface {
|
|
||||||
Increment(code string, method string, host string)
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
// RequestLatency is the latency metric that rest clients will update.
|
|
||||||
RequestLatency LatencyMetric = noopLatency{}
|
|
||||||
// RequestResult is the result metric that rest clients will update.
|
|
||||||
RequestResult ResultMetric = noopResult{}
|
|
||||||
)
|
|
||||||
|
|
||||||
// Register registers metrics for the rest client to use. This can
|
|
||||||
// only be called once.
|
|
||||||
func Register(lm LatencyMetric, rm ResultMetric) {
|
|
||||||
registerMetrics.Do(func() {
|
|
||||||
RequestLatency = lm
|
|
||||||
RequestResult = rm
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
type noopLatency struct{}
|
|
||||||
|
|
||||||
func (noopLatency) Observe(string, url.URL, time.Duration) {}
|
|
||||||
|
|
||||||
type noopResult struct{}
|
|
||||||
|
|
||||||
func (noopResult) Increment(string, string, string) {}
|
|
@ -9,8 +9,8 @@ go_library(
|
|||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = ["prometheus.go"],
|
srcs = ["prometheus.go"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/client/metrics:go_default_library",
|
|
||||||
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
|
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/metrics:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/client/metrics"
|
"k8s.io/client-go/tools/metrics"
|
||||||
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user