@@ -22,25 +22,16 @@ import (
2222
2323var metricsLog = logf .Log .WithName ("metrics" )
2424
25- func SetupMetrics () error {
26- metricsLog .V (1 ).Info ("Setting up metrics" )
27- if err := RegisterMetrics (); err != nil {
28- return err
29- }
30-
31- if err := RegisterCollectors (); err != nil {
32- return err
33- }
34-
35- return nil
36- }
25+ const (
26+ remoteSynced = "RemoteSynced"
27+ remoteUnsynced = "RemoteUnsynced"
28+ )
3729
3830func RegisterMetrics () error {
3931 metricsLog .V (1 ).Info ("Registering metrics" )
4032 for _ , metric := range metricsList {
4133 err := metrics .Registry .Register (metric )
4234 if err != nil {
43- metricsLog .Error (err , "Failed to register metric" , "metric" , metric )
4435 return err
4536 }
4637 }
@@ -50,14 +41,24 @@ func RegisterMetrics() error {
5041
5142var metricsList = []prometheus.Collector {
5243 operatorInfoMetric ,
44+ resourceInfoMetric ,
5345}
5446
55- var operatorInfoMetric = prometheus .NewGaugeVec (
56- prometheus.GaugeOpts {
57- Name : "cx_operator_info" ,
58- Help : "Coralogix Operator information." ,
59- },
60- []string {"go_version" , "operator_version" , "coralogix_url" },
47+ var (
48+ operatorInfoMetric = prometheus .NewGaugeVec (
49+ prometheus.GaugeOpts {
50+ Name : "cx_operator_build_info" ,
51+ Help : "Coralogix Operator build information." ,
52+ },
53+ []string {"go_version" , "operator_version" , "coralogix_url" },
54+ )
55+ resourceInfoMetric = prometheus .NewGaugeVec (
56+ prometheus.GaugeOpts {
57+ Name : "cx_operator_resource_info" ,
58+ Help : "Coralogix Operator custom resource information." ,
59+ },
60+ []string {"kind" , "name" , "namespace" , "status" },
61+ )
6162)
6263
6364func SetOperatorInfoMetric (goVersion , operatorVersion , url string ) {
@@ -68,3 +69,33 @@ func SetOperatorInfoMetric(goVersion, operatorVersion, url string) {
6869 )
6970 operatorInfoMetric .WithLabelValues (goVersion , operatorVersion , url ).Set (1 )
7071}
72+
73+ func SetResourceInfoMetricSynced (kind , name , namespace string ) {
74+ metricsLog .V (1 ).Info ("Setting resource info metric synced" ,
75+ "kind" , kind ,
76+ "name" , name ,
77+ "namespace" , namespace ,
78+ )
79+ resourceInfoMetric .WithLabelValues (kind , name , namespace , remoteSynced ).Set (1 )
80+ resourceInfoMetric .DeleteLabelValues (kind , name , namespace , remoteUnsynced )
81+ }
82+
83+ func SetResourceInfoMetricUnsynced (kind , name , namespace string ) {
84+ metricsLog .V (1 ).Info ("Setting resource info metric unsynced" ,
85+ "kind" , kind ,
86+ "name" , name ,
87+ "namespace" , namespace ,
88+ )
89+ resourceInfoMetric .WithLabelValues (kind , name , namespace , remoteUnsynced ).Set (1 )
90+ resourceInfoMetric .DeleteLabelValues (kind , name , namespace , remoteSynced )
91+ }
92+
93+ func DeleteResourceInfoMetric (kind , name , namespace string ) {
94+ metricsLog .V (1 ).Info ("Deleting resource info metric" ,
95+ "kind" , kind ,
96+ "name" , name ,
97+ "namespace" , namespace ,
98+ )
99+ resourceInfoMetric .DeleteLabelValues (kind , name , namespace , remoteSynced )
100+ resourceInfoMetric .DeleteLabelValues (kind , name , namespace , remoteUnsynced )
101+ }
0 commit comments