mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #81190 from logicalhan/raw-registration
expose ability to register native prometheus collectors
This commit is contained in:
commit
9050d7fd02
@ -40,10 +40,12 @@ var (
|
|||||||
|
|
||||||
type noopRegistry struct{}
|
type noopRegistry struct{}
|
||||||
|
|
||||||
func (noopRegistry) Register(metrics.Registerable) error { return nil }
|
func (noopRegistry) Register(metrics.Registerable) error { return nil }
|
||||||
func (noopRegistry) MustRegister(...metrics.Registerable) {}
|
func (noopRegistry) MustRegister(...metrics.Registerable) {}
|
||||||
func (noopRegistry) Unregister(metrics.Registerable) bool { return true }
|
func (noopRegistry) RawRegister(prometheus.Collector) error { return nil }
|
||||||
func (noopRegistry) Gather() ([]*dto.MetricFamily, error) { return nil, nil }
|
func (noopRegistry) RawMustRegister(...prometheus.Collector) {}
|
||||||
|
func (noopRegistry) Unregister(metrics.Registerable) bool { return true }
|
||||||
|
func (noopRegistry) Gather() ([]*dto.MetricFamily, error) { return nil, nil }
|
||||||
|
|
||||||
type metricsRegistryFactory struct {
|
type metricsRegistryFactory struct {
|
||||||
globalRegistry metrics.KubeRegistry
|
globalRegistry metrics.KubeRegistry
|
||||||
@ -79,7 +81,8 @@ func SetRegistryFactoryVersion(ver apimachineryversion.Info) []error {
|
|||||||
prometheus.NewGoCollector(),
|
prometheus.NewGoCollector(),
|
||||||
prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}),
|
prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}),
|
||||||
}
|
}
|
||||||
globalRegistryFactory.globalRegistry = metrics.NewPreloadedKubeRegistry(ver, preloadedMetrics...)
|
globalRegistryFactory.globalRegistry = metrics.NewKubeRegistry(ver)
|
||||||
|
globalRegistryFactory.globalRegistry.RawMustRegister(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)
|
||||||
|
@ -57,6 +57,10 @@ type Registerable interface {
|
|||||||
// KubeRegistry is an interface which implements a subset of prometheus.Registerer and
|
// KubeRegistry is an interface which implements a subset of prometheus.Registerer and
|
||||||
// prometheus.Gatherer interfaces
|
// prometheus.Gatherer interfaces
|
||||||
type KubeRegistry interface {
|
type KubeRegistry interface {
|
||||||
|
// Deprecated
|
||||||
|
RawRegister(prometheus.Collector) error
|
||||||
|
// Deprecated
|
||||||
|
RawMustRegister(...prometheus.Collector)
|
||||||
Register(Registerable) error
|
Register(Registerable) error
|
||||||
MustRegister(...Registerable)
|
MustRegister(...Registerable)
|
||||||
Unregister(Registerable) bool
|
Unregister(Registerable) bool
|
||||||
@ -96,6 +100,24 @@ func (kr *kubeRegistry) MustRegister(cs ...Registerable) {
|
|||||||
kr.PromRegistry.MustRegister(metrics...)
|
kr.PromRegistry.MustRegister(metrics...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RawRegister takes a native prometheus.Collector and registers the collector
|
||||||
|
// to the registry. This bypasses metrics safety checks, so should only be used
|
||||||
|
// to register custom prometheus collectors.
|
||||||
|
//
|
||||||
|
// Deprecated
|
||||||
|
func (kr *kubeRegistry) RawRegister(c prometheus.Collector) error {
|
||||||
|
return kr.PromRegistry.Register(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RawMustRegister takes a native prometheus.Collector and registers the collector
|
||||||
|
// to the registry. This bypasses metrics safety checks, so should only be used
|
||||||
|
// to register custom prometheus collectors.
|
||||||
|
//
|
||||||
|
// Deprecated
|
||||||
|
func (kr *kubeRegistry) RawMustRegister(cs ...prometheus.Collector) {
|
||||||
|
kr.PromRegistry.MustRegister(cs...)
|
||||||
|
}
|
||||||
|
|
||||||
// Unregister unregisters the Collector that equals the Collector passed
|
// Unregister unregisters the Collector that equals the Collector passed
|
||||||
// in as an argument. (Two Collectors are considered equal if their
|
// in as an argument. (Two Collectors are considered equal if their
|
||||||
// Describe method yields the same set of descriptors.) The function
|
// Describe method yields the same set of descriptors.) The function
|
||||||
@ -125,18 +147,3 @@ 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