mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +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 = [
|
||||
"//staging/src/k8s.io/apimachinery/pkg/version: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 (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
apimachineryversion "k8s.io/apimachinery/pkg/version"
|
||||
"k8s.io/component-base/metrics"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var globalRegistryFactory = metricsRegistryFactory{
|
||||
@ -51,7 +53,11 @@ func SetRegistryFactoryVersion(ver apimachineryversion.Info) []error {
|
||||
return nil
|
||||
}
|
||||
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
|
||||
for _, c := range globalRegistryFactory.registerQueue {
|
||||
err := globalRegistryFactory.globalRegistry.Register(c)
|
||||
|
@ -193,3 +193,33 @@ func TestDeferredMustRegister(t *testing.T) {
|
||||
},
|
||||
"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),
|
||||
}
|
||||
}
|
||||
|
||||
// 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