Skip to content

Commit a313ed5

Browse files
authored
Use native metrics instead of collector (#393) (#400)
1 parent 885fbe9 commit a313ed5

File tree

4 files changed

+75
-189
lines changed

4 files changed

+75
-189
lines changed

cmd/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import (
4848
//+kubebuilder:scaffold:imports
4949
)
5050

51-
const OperatorVersion = "0.5.2"
51+
const OperatorVersion = "0.5.3"
5252

5353
var (
5454
scheme = k8sruntime.NewScheme()
@@ -285,7 +285,7 @@ func main() {
285285
os.Exit(1)
286286
}
287287

288-
if err := monitoring.SetupMetrics(); err != nil {
288+
if err := monitoring.RegisterMetrics(); err != nil {
289289
setupLog.Error(err, "unable to set up metrics")
290290
os.Exit(1)
291291
}

internal/controller/coralogix/coralogix-reconciler/coralogix_reconciler.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
cxsdk "github.com/coralogix/coralogix-management-sdk/go"
3636

3737
"github.com/coralogix/coralogix-operator/internal/config"
38+
"github.com/coralogix/coralogix-operator/internal/monitoring"
3839
"github.com/coralogix/coralogix-operator/internal/utils"
3940
)
4041

@@ -101,6 +102,11 @@ func ReconcileResource(ctx context.Context, req ctrl.Request, obj client.Object,
101102
return ManageErrorWithRequeue(ctx, obj, utils.ReasonInternalK8sError, err)
102103
}
103104

105+
monitoring.DeleteResourceInfoMetric(
106+
obj.GetObjectKind().GroupVersionKind().Kind,
107+
obj.GetName(),
108+
obj.GetNamespace(),
109+
)
104110
return ctrl.Result{}, nil
105111
}
106112

@@ -121,6 +127,11 @@ func ReconcileResource(ctx context.Context, req ctrl.Request, obj client.Object,
121127
return ManageErrorWithRequeue(ctx, obj, utils.ReasonInternalK8sError, err)
122128
}
123129

130+
monitoring.DeleteResourceInfoMetric(
131+
obj.GetObjectKind().GroupVersionKind().Kind,
132+
obj.GetName(),
133+
obj.GetNamespace(),
134+
)
124135
return ctrl.Result{}, nil
125136
}
126137

@@ -196,6 +207,12 @@ func ManageErrorWithRequeue(ctx context.Context, obj client.Object, reason strin
196207
}
197208
}
198209

210+
monitoring.SetResourceInfoMetricUnsynced(
211+
obj.GetObjectKind().GroupVersionKind().Kind,
212+
obj.GetName(),
213+
obj.GetNamespace(),
214+
)
215+
199216
return reconcile.Result{}, err
200217
}
201218

@@ -210,6 +227,12 @@ func ManageSuccessWithRequeue(ctx context.Context, obj client.Object, interval t
210227
}
211228
}
212229

230+
monitoring.SetResourceInfoMetricSynced(
231+
obj.GetObjectKind().GroupVersionKind().Kind,
232+
obj.GetName(),
233+
obj.GetNamespace(),
234+
)
235+
213236
return reconcile.Result{RequeueAfter: interval}, nil
214237
}
215238

internal/monitoring/collectors.go

Lines changed: 0 additions & 168 deletions
This file was deleted.

internal/monitoring/metrics.go

Lines changed: 50 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,16 @@ import (
2222

2323
var 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

3830
func 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

5142
var 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

6364
func 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

Comments
 (0)