mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-10 13:42:02 +00:00
All stable collector should be tracked in registry.
This commit is contained in:
@@ -37,6 +37,9 @@ type StableCollector interface {
|
||||
|
||||
// Create will initialize all Desc and it intends to be called by registry.
|
||||
Create(version *semver.Version, self StableCollector) bool
|
||||
|
||||
// HiddenMetrics tells the list of hidden metrics with fqName.
|
||||
HiddenMetrics() []string
|
||||
}
|
||||
|
||||
// BaseStableCollector which implements almost all of the methods defined by StableCollector
|
||||
@@ -159,5 +162,13 @@ func (bsc *BaseStableCollector) Create(version *semver.Version, self StableColle
|
||||
return false
|
||||
}
|
||||
|
||||
// HiddenMetrics tells the list of hidden metrics with fqName.
|
||||
func (bsc *BaseStableCollector) HiddenMetrics() (fqNames []string) {
|
||||
for i := range bsc.hidden {
|
||||
fqNames = append(fqNames, bsc.hidden[i].fqName)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Check if our BaseStableCollector implements necessary interface
|
||||
var _ StableCollector = &BaseStableCollector{}
|
||||
|
@@ -131,7 +131,9 @@ type kubeRegistry struct {
|
||||
PromRegistry
|
||||
version semver.Version
|
||||
hiddenCollectors map[string]Registerable // stores all collectors that has been hidden
|
||||
stableCollectors []StableCollector // stores all stable collector
|
||||
hiddenCollectorsLock sync.RWMutex
|
||||
stableCollectorsLock sync.RWMutex
|
||||
}
|
||||
|
||||
// Register registers a new Collector to be included in metrics
|
||||
@@ -166,10 +168,11 @@ func (kr *kubeRegistry) MustRegister(cs ...Registerable) {
|
||||
|
||||
// CustomRegister registers a new custom collector.
|
||||
func (kr *kubeRegistry) CustomRegister(c StableCollector) error {
|
||||
kr.trackStableCollectors(c)
|
||||
|
||||
if c.Create(&kr.version, c) {
|
||||
return kr.PromRegistry.Register(c)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -177,6 +180,8 @@ func (kr *kubeRegistry) CustomRegister(c StableCollector) error {
|
||||
// StableCollectors and panics upon the first registration that causes an
|
||||
// error.
|
||||
func (kr *kubeRegistry) CustomMustRegister(cs ...StableCollector) {
|
||||
kr.trackStableCollectors(cs...)
|
||||
|
||||
collectors := make([]prometheus.Collector, 0, len(cs))
|
||||
for _, c := range cs {
|
||||
if c.Create(&kr.version, c) {
|
||||
@@ -234,6 +239,14 @@ func (kr *kubeRegistry) trackHiddenCollector(c Registerable) {
|
||||
kr.hiddenCollectors[c.FQName()] = c
|
||||
}
|
||||
|
||||
// trackStableCollectors stores all custom collectors.
|
||||
func (kr *kubeRegistry) trackStableCollectors(cs ...StableCollector) {
|
||||
kr.stableCollectorsLock.Lock()
|
||||
defer kr.stableCollectorsLock.Unlock()
|
||||
|
||||
kr.stableCollectors = append(kr.stableCollectors, cs...)
|
||||
}
|
||||
|
||||
// enableHiddenCollectors will re-register all of the hidden collectors.
|
||||
func (kr *kubeRegistry) enableHiddenCollectors() {
|
||||
kr.hiddenCollectorsLock.Lock()
|
||||
|
Reference in New Issue
Block a user