...
1
16
17 package controllers
18
19 import (
20 "sync"
21
22 k8smetrics "k8s.io/component-base/metrics"
23 "k8s.io/component-base/metrics/legacyregistry"
24 )
25
26 var (
27 once sync.Once
28 controllerInstanceCount = k8smetrics.NewGaugeVec(
29 &k8smetrics.GaugeOpts{
30 Name: "running_managed_controllers",
31 Help: "Indicates where instances of a controller are currently running",
32 StabilityLevel: k8smetrics.ALPHA,
33 },
34 []string{"name", "manager"},
35 )
36 )
37
38
39 type ControllerManagerMetrics struct {
40 manager string
41 }
42
43
44 func NewControllerManagerMetrics(manager string) *ControllerManagerMetrics {
45 controllerMetrics := &ControllerManagerMetrics{
46 manager: manager,
47 }
48 return controllerMetrics
49 }
50
51
52 func Register() {
53 once.Do(func() {
54 legacyregistry.MustRegister(controllerInstanceCount)
55 })
56 }
57
58
59
60
61 func (a *ControllerManagerMetrics) ControllerStarted(name string) {
62 controllerInstanceCount.With(k8smetrics.Labels{"name": name, "manager": a.manager}).Set(float64(1))
63 }
64
65
66 func (a *ControllerManagerMetrics) ControllerStopped(name string) {
67 controllerInstanceCount.With(k8smetrics.Labels{"name": name, "manager": a.manager}).Set(float64(0))
68 }
69
View as plain text