From 4f1f5167955d6a12cfebf68aaa7bec703b5469b9 Mon Sep 17 00:00:00 2001 From: idoko Date: Mon, 27 May 2024 08:31:51 +0100 Subject: [PATCH] split metrics collection --- exporter/diagnostic_data_collector.go | 17 ++++++++++++----- exporter/v1_compatibility.go | 19 +++++-------------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/exporter/diagnostic_data_collector.go b/exporter/diagnostic_data_collector.go index e4c48ee60..99b0ddfc1 100644 --- a/exporter/diagnostic_data_collector.go +++ b/exporter/diagnostic_data_collector.go @@ -106,15 +106,22 @@ func (d *diagnosticDataCollector) collect(ch chan<- prometheus.Metric) { } else if securityMetric != nil { metrics = append(metrics, securityMetric) } - } - if d.compatibleMode { - metrics = append(metrics, specialMetrics(d.ctx, client, m, logger)...) + if d.compatibleMode { + metrics = append(metrics, specialMetrics(d.ctx, client, m, nodeType, logger)...) - if cem, err := cacheEvictedTotalMetric(m); err == nil { - metrics = append(metrics, cem) + if cem, err := cacheEvictedTotalMetric(m); err == nil { + metrics = append(metrics, cem) + } } + } + if d.compatibleMode { + if nodeType == typeArbiter { + if hm := arbiterMetrics(d.ctx, client, logger); hm != nil { + metrics = append(metrics, hm...) + } + } if nodeType == typeMongos { metrics = append(metrics, mongosMetrics(d.ctx, client, logger)...) } diff --git a/exporter/v1_compatibility.go b/exporter/v1_compatibility.go index 1c4b81f4d..d34eb1a9c 100644 --- a/exporter/v1_compatibility.go +++ b/exporter/v1_compatibility.go @@ -782,7 +782,7 @@ func specialMetricDefinitions() []specialMetric { } } -func specialMetrics(ctx context.Context, client *mongo.Client, m bson.M, l *logrus.Logger) []prometheus.Metric { +func specialMetrics(ctx context.Context, client *mongo.Client, m bson.M, nodeType mongoDBNodeType, l *logrus.Logger) []prometheus.Metric { metrics := make([]prometheus.Metric, 0) for _, def := range specialMetricDefinitions() { @@ -807,25 +807,16 @@ func specialMetrics(ctx context.Context, client *mongo.Client, m bson.M, l *logr l.Errorf("cannot retrieve MongoDB buildInfo: %s", err) } - nodeType, err := getNodeType(ctx, client) - if err != nil { - l.WithFields(logrus.Fields{ - "component": "diagnosticDataCollector", - }).Errorf("Cannot get node type: %s", err) - } - if nodeType == typeMongod || nodeType == typeArbiter { - if engine, err := storageEngine(m); err == nil { + if engine, err := storageEngine(m); err != nil { + l.Errorf("cannot retrieve engine type: %s", err) + } else { metrics = append(metrics, engine) } } metrics = append(metrics, serverVersion(buildInfo)) - if nodeType == typeArbiter { - if hm := arbiterMetrics(ctx, client, l); hm != nil { - metrics = append(metrics, hm...) - } - } else { + if nodeType != typeArbiter { metrics = append(metrics, myState(ctx, client)) if rm := replSetMetrics(m); rm != nil { metrics = append(metrics, rm...)