()
| 91 | } |
| 92 | |
| 93 | func newCollector() *objectCollector { |
| 94 | oc := &objectCollector{ |
| 95 | objectsByController: map[string]sets.Set[string]{}, |
| 96 | statusByObject: map[string]vmv1beta1.UpdateStatus{}, |
| 97 | } |
| 98 | registeredObjects := []string{ |
| 99 | "vmagent", "vmalert", "vmsingle", "vmcluster", "vmalertmanager", "vmauth", "vlogs", "vlsingle", |
| 100 | "vlcluster", "vmalertmanagerconfig", "vmrule", "vmuser", "vmservicescrape", "vmstaticscrape", |
| 101 | "vmnodescrape", "vmpodscrape", "vmprobe", "vmscrapeconfig", "vmanomaly", "vlagent", |
| 102 | "vtsingle", "vtcluster", "vmdistributed", "podmonitor", "prometheusrule", "servicemonitor", |
| 103 | "alertmanagerconfig", "probe", "scrapeconfig", "vmanomalyconfig", |
| 104 | } |
| 105 | for _, controller := range registeredObjects { |
| 106 | oc.objectsByController[controller] = sets.New[string]() |
| 107 | } |
| 108 | registry := metrics.Registry |
| 109 | instrumentMetric := func(controller string) prometheus.GaugeFunc { |
| 110 | g := prometheus.NewGaugeFunc(prometheus.GaugeOpts{ |
| 111 | Name: "operator_controller_objects_count", |
| 112 | Help: "Number of exist CR objects by controller", |
| 113 | ConstLabels: map[string]string{"controller": controller}, |
| 114 | }, |
| 115 | func() float64 { |
| 116 | return oc.countByController(controller) |
| 117 | }) |
| 118 | return g |
| 119 | } |
| 120 | |
| 121 | for _, controller := range registeredObjects { |
| 122 | registry.MustRegister(instrumentMetric(controller)) |
| 123 | } |
| 124 | registry.MustRegister(oc) |
| 125 | return oc |
| 126 | } |
| 127 | |
| 128 | // registerObject registers given CR object name with namespace for controller |
| 129 | func registerObjectByCollector(name, ns, controller string) { |
no test coverage detected