mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 10:19:50 +00:00
Merge pull request #78773 from logicalhan/base-registry
preload metrics for legacyregistry for backwards compatibility
This commit is contained in:
commit
aef21debe0
@ -10,6 +10,7 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/version:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/version:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/metrics:go_default_library",
|
"//staging/src/k8s.io/component-base/metrics:go_default_library",
|
||||||
|
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,9 +18,11 @@ package legacyregistry
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
apimachineryversion "k8s.io/apimachinery/pkg/version"
|
apimachineryversion "k8s.io/apimachinery/pkg/version"
|
||||||
"k8s.io/component-base/metrics"
|
"k8s.io/component-base/metrics"
|
||||||
"sync"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var globalRegistryFactory = metricsRegistryFactory{
|
var globalRegistryFactory = metricsRegistryFactory{
|
||||||
@ -51,7 +53,11 @@ func SetRegistryFactoryVersion(ver apimachineryversion.Info) []error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
registrationErrs := make([]error, 0)
|
registrationErrs := make([]error, 0)
|
||||||
globalRegistryFactory.globalRegistry = metrics.NewKubeRegistry(ver)
|
preloadedMetrics := []prometheus.Collector{
|
||||||
|
prometheus.NewGoCollector(),
|
||||||
|
prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}),
|
||||||
|
}
|
||||||
|
globalRegistryFactory.globalRegistry = metrics.NewPreloadedKubeRegistry(ver, preloadedMetrics...)
|
||||||
globalRegistryFactory.kubeVersion = &ver
|
globalRegistryFactory.kubeVersion = &ver
|
||||||
for _, c := range globalRegistryFactory.registerQueue {
|
for _, c := range globalRegistryFactory.registerQueue {
|
||||||
err := globalRegistryFactory.globalRegistry.Register(c)
|
err := globalRegistryFactory.globalRegistry.Register(c)
|
||||||
|
@ -193,3 +193,33 @@ func TestDeferredMustRegister(t *testing.T) {
|
|||||||
},
|
},
|
||||||
"Did not panic even though we expected it.")
|
"Did not panic even though we expected it.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPreloadedMetrics(t *testing.T) {
|
||||||
|
// reset the global registry for this test.
|
||||||
|
globalRegistryFactory = metricsRegistryFactory{
|
||||||
|
registerQueue: make([]metrics.KubeCollector, 0),
|
||||||
|
mustRegisterQueue: make([]metrics.KubeCollector, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
SetRegistryFactoryVersion(apimachineryversion.Info{
|
||||||
|
Major: "1",
|
||||||
|
Minor: "15",
|
||||||
|
GitVersion: "v1.15.0-alpha-1.12345",
|
||||||
|
})
|
||||||
|
// partial list of some preregistered metrics we expect
|
||||||
|
expectedMetricNames := []string{"go_gc_duration_seconds", "process_start_time_seconds"}
|
||||||
|
|
||||||
|
mf, err := globalRegistryFactory.globalRegistry.Gather()
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Got unexpected error %v ", err)
|
||||||
|
}
|
||||||
|
metricNames := map[string]struct{}{}
|
||||||
|
for _, f := range mf {
|
||||||
|
metricNames[f.GetName()] = struct{}{}
|
||||||
|
}
|
||||||
|
for _, expectedMetric := range expectedMetricNames {
|
||||||
|
if _, ok := metricNames[expectedMetric]; !ok {
|
||||||
|
t.Errorf("Expected %v to be preregistered", expectedMetric)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -94,3 +94,18 @@ func NewKubeRegistry(v apimachineryversion.Info) KubeRegistry {
|
|||||||
version: parseVersion(v),
|
version: parseVersion(v),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewPreloadedKubeRegistry creates a new Registry with preloaded prometheus collectors
|
||||||
|
// already registered. This is exposed specifically to maintain backwards
|
||||||
|
// compatibility with the global prometheus registry.
|
||||||
|
//
|
||||||
|
// Deprecated
|
||||||
|
func NewPreloadedKubeRegistry(v apimachineryversion.Info, cs ...prometheus.Collector) KubeRegistry {
|
||||||
|
registry := &kubeRegistry{
|
||||||
|
PromRegistry: prometheus.NewRegistry(),
|
||||||
|
version: parseVersion(v),
|
||||||
|
}
|
||||||
|
|
||||||
|
registry.PromRegistry.MustRegister(cs...)
|
||||||
|
return registry
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user