Skip to content

Commit ca6312f

Browse files
committed
PMM-14431 makeMetrics has only list not client passed.
1 parent f5977df commit ca6312f

10 files changed

+67
-23
lines changed

exporter/collstats_collector.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,12 @@ func (d *collstatsCollector) collect(ch chan<- prometheus.Metric) {
151151
labels["shard"] = shard
152152
}
153153

154-
for _, metric := range makeMetrics(client, prefix, metrics, labels, d.compatibleMode) {
154+
reservedNames, err := allReservedNames(client)
155+
if err != nil {
156+
// handle error, skip metrics
157+
continue
158+
}
159+
for _, metric := range makeMetrics(reservedNames, prefix, metrics, labels, d.compatibleMode) {
155160
ch <- metric
156161
}
157162
}

exporter/dbstats_collector.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@ func (d *dbstatsCollector) collect(ch chan<- prometheus.Metric) {
7272
return
7373
}
7474

75+
reservedNames, err := allReservedNames(client)
76+
if err != nil {
77+
logger.Error("Failed to get reserved names", "error", err)
78+
79+
return
80+
}
81+
7582
logger.Debug("getting stats for databases", "databases", dbNames)
7683
for _, db := range dbNames {
7784
var dbStats bson.M
@@ -100,7 +107,7 @@ func (d *dbstatsCollector) collect(ch chan<- prometheus.Metric) {
100107
// to differentiate metrics between different databases.
101108
labels["database"] = db
102109

103-
newMetrics := makeMetrics(client, prefix, dbStats, labels, d.compatibleMode)
110+
newMetrics := makeMetrics(reservedNames, prefix, dbStats, labels, d.compatibleMode)
104111
for _, metric := range newMetrics {
105112
ch <- metric
106113
}

exporter/diagnostic_data_collector.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,13 @@ func (d *diagnosticDataCollector) collect(ch chan<- prometheus.Metric) {
126126
m = b
127127
}
128128

129-
metrics = makeMetrics(client, "", m, d.topologyInfo.baseLabels(), d.compatibleMode)
129+
reservedNames, err := allReservedNames(client)
130+
if err != nil {
131+
logger.Error("Failed to get reserved names", "error", err)
132+
133+
return
134+
}
135+
metrics = makeMetrics(reservedNames, "", m, d.topologyInfo.baseLabels(), d.compatibleMode)
130136
metrics = append(metrics, locksMetrics(logger, m)...)
131137

132138
securityMetric, err := d.getSecurityMetricFromLineOptions(client)

exporter/indexstats_collector.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,12 @@ func (d *indexstatsCollector) collect(ch chan<- prometheus.Metric) {
137137
labels["key_name"] = indexName
138138

139139
metrics := sanitizeMetrics(metric)
140-
for _, metric := range makeMetrics(d.base.client, prefix, metrics, labels, false) {
140+
reservedNames, err := allReservedNames(d.base.client)
141+
if err != nil {
142+
// handle error, skip metrics
143+
continue
144+
}
145+
for _, metric := range makeMetrics(reservedNames, prefix, metrics, labels, false) {
141146
ch <- metric
142147
}
143148
}

exporter/metrics.go

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ func metricHelp(prefix, name string) string {
366366
return name
367367
}
368368

369-
func makeMetrics(client *mongo.Client, prefix string, m bson.M, labels map[string]string, compatibleMode bool) []prometheus.Metric {
369+
func makeMetrics(reservedNames []string, prefix string, m bson.M, labels map[string]string, compatibleMode bool) []prometheus.Metric {
370370
var res []prometheus.Metric
371371

372372
if prefix != "" {
@@ -390,30 +390,24 @@ func makeMetrics(client *mongo.Client, prefix string, m bson.M, labels map[strin
390390
} else {
391391
l = labels
392392
}
393-
res = append(res, handleMetric(client, prefix, nextPrefix, k, val, l, compatibleMode)...)
393+
res = append(res, handleMetric(reservedNames, prefix, nextPrefix, k, val, l, compatibleMode)...)
394394
}
395395

396396
return res
397397
}
398398

399-
func handleMetric(client *mongo.Client, prefix, nextPrefix, k string, val interface{}, l map[string]string, compatibleMode bool) []prometheus.Metric {
399+
func handleMetric(reservedNames []string, prefix, nextPrefix, k string, val interface{}, l map[string]string, compatibleMode bool) []prometheus.Metric {
400400
var res []prometheus.Metric
401401
switch v := val.(type) {
402402
case bson.M:
403-
res = append(res, makeMetrics(client, nextPrefix, v, l, compatibleMode)...)
403+
res = append(res, makeMetrics(reservedNames, nextPrefix, v, l, compatibleMode)...)
404404
case map[string]interface{}:
405-
res = append(res, makeMetrics(client, nextPrefix, v, l, compatibleMode)...)
405+
res = append(res, makeMetrics(reservedNames, nextPrefix, v, l, compatibleMode)...)
406406
case primitive.A:
407-
res = append(res, processSlice(client, nextPrefix, v, l, compatibleMode)...)
407+
res = append(res, processSlice(reservedNames, nextPrefix, v, l, compatibleMode)...)
408408
case []interface{}:
409409
// skip
410410
default:
411-
reservedNames, err := allReservedNames(client)
412-
if err != nil {
413-
fmt.Printf("\n\n\n cannot get reserved names: %v \n\n\n", err)
414-
return res
415-
}
416-
417411
rm, err := makeRawMetric(reservedNames, prefix, k, v, l)
418412
if err != nil {
419413
invalidMetric := prometheus.NewInvalidMetric(prometheus.NewInvalidDesc(err), err)
@@ -453,7 +447,7 @@ func handleMetric(client *mongo.Client, prefix, nextPrefix, k string, val interf
453447

454448
// Extract maps from arrays. Only some structures like replicasets have arrays of members
455449
// and each member is represented by a map[string]interface{}.
456-
func processSlice(client *mongo.Client, prefix string, v []interface{}, commonLabels map[string]string, compatibleMode bool) []prometheus.Metric {
450+
func processSlice(reservedNames []string, prefix string, v []interface{}, commonLabels map[string]string, compatibleMode bool) []prometheus.Metric {
457451
metrics := make([]prometheus.Metric, 0)
458452
labels := make(map[string]string)
459453
for name, value := range commonLabels {
@@ -483,7 +477,7 @@ func processSlice(client *mongo.Client, prefix string, v []interface{}, commonLa
483477
labels["member_idx"] = host
484478
}
485479

486-
metrics = append(metrics, makeMetrics(client, prefix, s, labels, compatibleMode)...)
480+
metrics = append(metrics, makeMetrics(reservedNames, prefix, s, labels, compatibleMode)...)
487481
}
488482

489483
return metrics

exporter/profile_status_collector.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,12 @@ func (d *profileCollector) collect(ch chan<- prometheus.Metric) {
8888
logger.Debug("profile response from MongoDB:")
8989
debugResult(logger, primitive.M{db: m})
9090

91-
for _, metric := range makeMetrics(client, "profile_slow_query", m, labels, d.compatibleMode) {
91+
reservedNames, err := allReservedNames(client)
92+
if err != nil {
93+
// handle error, skip metrics
94+
continue
95+
}
96+
for _, metric := range makeMetrics(reservedNames, "profile_slow_query", m, labels, d.compatibleMode) {
9297
ch <- metric
9398
}
9499
}

exporter/replset_config_collector.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,13 @@ func (d *replSetGetConfigCollector) collect(ch chan<- prometheus.Metric) {
8686
logger.Debug("replSetGetConfig result:")
8787
debugResult(logger, m)
8888

89-
for _, metric := range makeMetrics(client, "rs_cfg", m, d.topologyInfo.baseLabels(), d.compatibleMode) {
89+
reservedNames, err := allReservedNames(client)
90+
if err != nil {
91+
logger.Error("Failed to get reserved names", "error", err)
92+
93+
return
94+
}
95+
for _, metric := range makeMetrics(reservedNames, "rs_cfg", m, d.topologyInfo.baseLabels(), d.compatibleMode) {
9096
ch <- metric
9197
}
9298
}

exporter/replset_status_collector.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,13 @@ func (d *replSetGetStatusCollector) collect(ch chan<- prometheus.Metric) {
8181
logger.Debug("replSetGetStatus result:")
8282
debugResult(logger, m)
8383

84-
for _, metric := range makeMetrics(client, "", m, d.topologyInfo.baseLabels(), d.compatibleMode) {
84+
reservedNames, err := allReservedNames(client)
85+
if err != nil {
86+
logger.Error("Failed to get reserved names", "error", err)
87+
88+
return
89+
}
90+
for _, metric := range makeMetrics(reservedNames, "", m, d.topologyInfo.baseLabels(), d.compatibleMode) {
8591
ch <- metric
8692
}
8793
}

exporter/shards_collector.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,12 @@ func (d *shardsCollector) collect(ch chan<- prometheus.Metric) {
104104
if !success {
105105
continue
106106
}
107-
for _, metric := range makeMetrics(client, prefix, primitive.M{"count": chunks}, labels, d.compatible) {
107+
reservedNames, err := allReservedNames(client)
108+
if err != nil {
109+
// handle error, skip metrics
110+
continue
111+
}
112+
for _, metric := range makeMetrics(reservedNames, prefix, primitive.M{"count": chunks}, labels, d.compatible) {
108113
ch <- metric
109114
}
110115
}

exporter/top_collector.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,12 @@ func (d *topCollector) collect(ch chan<- prometheus.Metric) {
150150
continue
151151
}
152152

153-
for _, metric := range makeMetrics(client, "top", mm, labels, d.compatibleMode) {
153+
reservedNames, err := allReservedNames(client)
154+
if err != nil {
155+
// handle error, skip metrics
156+
continue
157+
}
158+
for _, metric := range makeMetrics(reservedNames, "top", mm, labels, d.compatibleMode) {
154159
ch <- metric
155160
}
156161
}

0 commit comments

Comments
 (0)