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 will initialize all Desc and it intends to be called by registry.
|
||||||
Create(version *semver.Version, self StableCollector) bool
|
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
|
// 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
|
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
|
// Check if our BaseStableCollector implements necessary interface
|
||||||
var _ StableCollector = &BaseStableCollector{}
|
var _ StableCollector = &BaseStableCollector{}
|
||||||
|
@@ -131,7 +131,9 @@ type kubeRegistry struct {
|
|||||||
PromRegistry
|
PromRegistry
|
||||||
version semver.Version
|
version semver.Version
|
||||||
hiddenCollectors map[string]Registerable // stores all collectors that has been hidden
|
hiddenCollectors map[string]Registerable // stores all collectors that has been hidden
|
||||||
|
stableCollectors []StableCollector // stores all stable collector
|
||||||
hiddenCollectorsLock sync.RWMutex
|
hiddenCollectorsLock sync.RWMutex
|
||||||
|
stableCollectorsLock sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register registers a new Collector to be included in metrics
|
// 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.
|
// CustomRegister registers a new custom collector.
|
||||||
func (kr *kubeRegistry) CustomRegister(c StableCollector) error {
|
func (kr *kubeRegistry) CustomRegister(c StableCollector) error {
|
||||||
|
kr.trackStableCollectors(c)
|
||||||
|
|
||||||
if c.Create(&kr.version, c) {
|
if c.Create(&kr.version, c) {
|
||||||
return kr.PromRegistry.Register(c)
|
return kr.PromRegistry.Register(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,6 +180,8 @@ func (kr *kubeRegistry) CustomRegister(c StableCollector) error {
|
|||||||
// StableCollectors and panics upon the first registration that causes an
|
// StableCollectors and panics upon the first registration that causes an
|
||||||
// error.
|
// error.
|
||||||
func (kr *kubeRegistry) CustomMustRegister(cs ...StableCollector) {
|
func (kr *kubeRegistry) CustomMustRegister(cs ...StableCollector) {
|
||||||
|
kr.trackStableCollectors(cs...)
|
||||||
|
|
||||||
collectors := make([]prometheus.Collector, 0, len(cs))
|
collectors := make([]prometheus.Collector, 0, len(cs))
|
||||||
for _, c := range cs {
|
for _, c := range cs {
|
||||||
if c.Create(&kr.version, c) {
|
if c.Create(&kr.version, c) {
|
||||||
@@ -234,6 +239,14 @@ func (kr *kubeRegistry) trackHiddenCollector(c Registerable) {
|
|||||||
kr.hiddenCollectors[c.FQName()] = c
|
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.
|
// enableHiddenCollectors will re-register all of the hidden collectors.
|
||||||
func (kr *kubeRegistry) enableHiddenCollectors() {
|
func (kr *kubeRegistry) enableHiddenCollectors() {
|
||||||
kr.hiddenCollectorsLock.Lock()
|
kr.hiddenCollectorsLock.Lock()
|
||||||
|
Reference in New Issue
Block a user