@@ -23,11 +23,10 @@ package deployment
2323import (
2424 "sync"
2525
26- "github.com/prometheus/client_golang/prometheus"
27-
2826 api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
2927 "github.com/arangodb/kube-arangodb/pkg/deployment/features"
3028 "github.com/arangodb/kube-arangodb/pkg/generated/metric_descriptions"
29+ "github.com/arangodb/kube-arangodb/pkg/metrics/collector"
3130 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/definitions"
3231 "github.com/arangodb/kube-arangodb/pkg/util/metrics"
3332)
@@ -49,13 +48,12 @@ func init() {
4948 operatorStateRefreshMetric : metrics .NewDescription ("arango_operator_deployment_state_refresh_count" , "Number of refreshes in deployment" , []string {"namespace" , "deployment" , "type" }, nil ),
5049 }
5150
52- prometheus .MustRegister (& localInventory )
51+ collector .GetCollector ().RegisterMetric (& localInventory )
52+ collector .GetCollector ().RegisterDescription (& localInventory )
5353}
5454
5555var localInventory inventory
5656
57- var _ prometheus.Collector = & inventory {}
58-
5957type inventory struct {
6058 lock sync.Mutex
6159 deployments map [string ]map [string ]* Deployment
@@ -65,50 +63,42 @@ type inventory struct {
6563 operatorStateRefreshMetric metrics.Description
6664}
6765
68- func (i * inventory ) Describe (descs chan <- * prometheus.Desc ) {
69- i .lock .Lock ()
70- defer i .lock .Unlock ()
71-
72- pd := metrics .NewPushDescription (descs )
73- pd .Push (i .deploymentsMetric , i .deploymentMetricsMembersMetric , i .deploymentAgencyStateMetric , i .deploymentShardLeadersMetric , i .deploymentShardsMetric , i .operatorStateRefreshMetric )
66+ func (i * inventory ) CollectDescriptions (in metrics.PushDescription ) {
67+ in .Push (i .deploymentsMetric , i .deploymentMetricsMembersMetric , i .deploymentAgencyStateMetric , i .deploymentShardLeadersMetric , i .deploymentShardsMetric , i .operatorStateRefreshMetric )
7468
75- metric_descriptions .Descriptions (pd )
69+ metric_descriptions .Descriptions (in )
7670}
7771
78- func (i * inventory ) Collect (m chan <- prometheus.Metric ) {
79- i .lock .Lock ()
80- defer i .lock .Unlock ()
81-
82- p := metrics .NewPushMetric (m )
72+ func (i * inventory ) CollectMetrics (in metrics.PushMetric ) {
8373 for _ , deployments := range i .deployments {
8474 for _ , deployment := range deployments {
85- p .Push (i .deploymentsMetric .Gauge (1 , deployment .GetNamespace (), deployment .GetName ()))
75+ in .Push (i .deploymentsMetric .Gauge (1 , deployment .GetNamespace (), deployment .GetName ()))
8676
87- deployment .CollectMetrics (p )
77+ deployment .CollectMetrics (in )
8878
8979 if state := deployment .acs .CurrentClusterCache (); state != nil {
9080 t := state .GetThrottles ()
9181
9282 for _ , c := range definitions .AllComponents () {
93- p .Push (i .operatorStateRefreshMetric .Gauge (float64 (t .Get (c ).Count ()), deployment .GetNamespace (), deployment .GetName (), string (c )))
83+ in .Push (i .operatorStateRefreshMetric .Gauge (float64 (t .Get (c ).Count ()), deployment .GetNamespace (), deployment .GetName (), string (c )))
9484 }
9585 }
9686
9787 spec := deployment .GetSpec ()
9888 status := deployment .GetStatus ()
9989
10090 for _ , member := range status .Members .AsList () {
101- p .Push (i .deploymentMetricsMembersMetric .Gauge (1 , deployment .GetNamespace (), deployment .GetName (), member .Group .AsRole (), member .Member .ID ))
91+ in .Push (i .deploymentMetricsMembersMetric .Gauge (1 , deployment .GetNamespace (), deployment .GetName (), member .Group .AsRole (), member .Member .ID ))
10292 }
10393
10494 if spec .Mode .Get ().HasAgents () {
10595 agency , agencyOk := deployment .GetAgencyCache ()
10696 if ! agencyOk {
107- p .Push (i .deploymentAgencyStateMetric .Gauge (0 , deployment .GetNamespace (), deployment .GetName ()))
97+ in .Push (i .deploymentAgencyStateMetric .Gauge (0 , deployment .GetNamespace (), deployment .GetName ()))
10898 continue
10999 }
110100
111- p .Push (i .deploymentAgencyStateMetric .Gauge (1 , deployment .GetNamespace (), deployment .GetName ()))
101+ in .Push (i .deploymentAgencyStateMetric .Gauge (1 , deployment .GetNamespace (), deployment .GetName ()))
112102
113103 if spec .Mode .Get () == api .DeploymentModeCluster {
114104 for db , collections := range agency .Current .Collections {
@@ -145,9 +135,9 @@ func (i *inventory) Collect(m chan<- prometheus.Metric) {
145135 }
146136
147137 if id == 0 {
148- p .Push (i .deploymentShardLeadersMetric .Gauge (1 , m ... ))
138+ in .Push (i .deploymentShardLeadersMetric .Gauge (1 , m ... ))
149139 }
150- p .Push (i .deploymentShardsMetric .Gauge (1 , m ... ))
140+ in .Push (i .deploymentShardsMetric .Gauge (1 , m ... ))
151141 }
152142 }
153143 }
0 commit comments