Skip to content

Commit aa149b4

Browse files
author
Shashank Sinha
authored
PMM-10271 Fix meta-metric label for general collector (#515)
* PMM-10271 Fix meta-metric label for general collector Meta-metric generated for general collector were incorrectly labeled as dbstats. When dbstats and general collector were executed for a scrape request, two metric were generated with the same name and labels. This duplicate metric would trigger a panic in the metric generation library. This change updates the label for general collector and fixes the issue. * Fix tests for general collector * Fix test for replication status collector
1 parent 1ff9bef commit aa149b4

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

exporter/general_collector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (d *generalCollector) Collect(ch chan<- prometheus.Metric) {
4949
}
5050

5151
func (d *generalCollector) collect(ch chan<- prometheus.Metric) {
52-
defer prometheus.MeasureCollectTime(ch, "mongodb", "dbstats")()
52+
defer prometheus.MeasureCollectTime(ch, "mongodb", "general")()
5353
ch <- mongodbUpMetric(d.ctx, d.base.client, d.base.logger)
5454
}
5555

exporter/general_collector_test.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,22 @@ func TestGeneralCollector(t *testing.T) {
3737
client := tu.DefaultTestClient(ctx, t)
3838
c := newGeneralCollector(ctx, client, logrus.New())
3939

40+
filter := []string{
41+
"collector_scrape_time_ms",
42+
}
43+
count := testutil.CollectAndCount(c, filter...)
44+
assert.Equal(t, len(filter), count, "Meta-metric for collector is missing")
45+
4046
// The last \n at the end of this string is important
4147
expected := strings.NewReader(`
4248
# HELP mongodb_up Whether MongoDB is up.
4349
# TYPE mongodb_up gauge
4450
mongodb_up 1
45-
# HELP collector_scrape_time_ms Time taken for scrape by collector
46-
# TYPE collector_scrape_time_ms gauge
47-
collector_scrape_time_ms{collector="dbstats",exporter="mongodb"} 0` + "\n")
48-
err := testutil.CollectAndCompare(c, expected)
51+
` + "\n")
52+
filter = []string{
53+
"mongodb_up",
54+
}
55+
err := testutil.CollectAndCompare(c, expected, filter...)
4956
require.NoError(t, err)
5057

5158
assert.NoError(t, client.Disconnect(ctx))
@@ -54,9 +61,10 @@ func TestGeneralCollector(t *testing.T) {
5461
# HELP mongodb_up Whether MongoDB is up.
5562
# TYPE mongodb_up gauge
5663
mongodb_up 0
57-
# HELP collector_scrape_time_ms Time taken for scrape by collector
58-
# TYPE collector_scrape_time_ms gauge
59-
collector_scrape_time_ms{collector="dbstats",exporter="mongodb"} 0` + "\n")
60-
err = testutil.CollectAndCompare(c, expected)
64+
` + "\n")
65+
filter = []string{
66+
"mongodb_up",
67+
}
68+
err = testutil.CollectAndCompare(c, expected, filter...)
6169
require.NoError(t, err)
6270
}

exporter/indexstats_collector_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ mongodb_indexstats_accesses_ops{collection="testcol_02",database="testdb",key_na
7979
mongodb_indexstats_accesses_ops{collection="testcol_02",database="testdb",key_name="idx_01"} 0` +
8080
"\n")
8181

82-
// on race run we will have collector_scrape_time_ms > 0, in normal run it will be fast and will 0
8382
filter := []string{
8483
"mongodb_indexstats_accesses_ops",
8584
}
@@ -132,7 +131,6 @@ func TestDescendingIndexOverride(t *testing.T) {
132131
mongodb_indexstats_accesses_ops{collection="testcol_02",database="testdb",key_name="f1_1"} 0
133132
mongodb_indexstats_accesses_ops{collection="testcol_02",database="testdb",key_name="f1_DESC"} 0` + "\n")
134133

135-
// on race run we will have collector_scrape_time_ms > 0, in normal run it will be fast and will 0
136134
filter := []string{
137135
"mongodb_indexstats_accesses_ops",
138136
}

exporter/replset_status_collector_test.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,9 @@ func TestReplsetStatusCollectorNoSharding(t *testing.T) {
6969

7070
c := newReplicationSetStatusCollector(ctx, client, logrus.New(), false, ti)
7171

72-
expected := strings.NewReader(`
73-
# HELP collector_scrape_time_ms Time taken for scrape by collector
74-
# TYPE collector_scrape_time_ms gauge
75-
collector_scrape_time_ms{collector="replset_status",exporter="mongodb"} 0` + "\n")
76-
err := testutil.CollectAndCompare(c, expected)
77-
assert.NoError(t, err)
72+
// Replication set metrics should not be generated for unsharded server
73+
count := testutil.CollectAndCount(c)
74+
75+
metaMetricCount := 1
76+
assert.Equal(t, metaMetricCount, count, "Mismatch in metric count for collector run on unsharded server")
7877
}

0 commit comments

Comments
 (0)