Skip to content

Commit 98946ac

Browse files
committed
feat: add server label to metrics #161
1 parent 3d4f3cc commit 98946ac

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

cmd/integration_test.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ type integrationTest struct {
3434

3535
func TestMetricsConfigv2(t *testing.T) {
3636
expected := map[string]string{
37-
"myapp_example_simplevalue_total": `name:"myapp_example_simplevalue_total" help:"Simple gauge metric" type:GAUGE metric:<gauge:<value:2 > > `,
38-
"myapp_example_processes_total": `name:"myapp_example_processes_total" help:"The total number of processes in a job queue" type:GAUGE metric:<label:<name:"status" value:"postponed" > label:<name:"type" value:"foobar" > gauge:<value:2 > > metric:<label:<name:"status" value:"processing" > label:<name:"type" value:"bar" > gauge:<value:1 > > `,
39-
"myapp_events_total": `name:"myapp_events_total" help:"The total number of events (created 1h ago or newer)" type:GAUGE metric:<label:<name:"type" value:"bar" > gauge:<value:2 > > metric:<label:<name:"type" value:"foo" > gauge:<value:1 > > `,
37+
"myapp_example_simplevalue_total": `name:"myapp_example_simplevalue_total" help:"Simple gauge metric" type:GAUGE metric:<label:<name:"server" value:"main" > gauge:<value:2 > > `,
38+
"myapp_example_processes_total": `name:"myapp_example_processes_total" help:"The total number of processes in a job queue" type:GAUGE metric:<label:<name:"server" value:"main" > label:<name:"status" value:"postponed" > label:<name:"type" value:"foobar" > gauge:<value:2 > > metric:<label:<name:"server" value:"main" > label:<name:"status" value:"processing" > label:<name:"type" value:"bar" > gauge:<value:1 > > `,
39+
"myapp_events_total": `name:"myapp_events_total" help:"The total number of events (created 1h ago or newer)" type:GAUGE metric:<label:<name:"server" value:"main" > label:<name:"type" value:"bar" > gauge:<value:2 > > metric:<label:<name:"server" value:"main" > label:<name:"type" value:"foo" > gauge:<value:1 > > `,
4040
"mongodb_query_exporter_query_total": `name:"mongodb_query_exporter_query_total" help:"How many MongoDB queries have been processed, partitioned by metric, server and status" type:COUNTER metric:<label:<name:"aggregation" value:"aggregation_0" > label:<name:"result" value:"SUCCESS" > label:<name:"server" value:"main" > counter:<value:1 > > metric:<label:<name:"aggregation" value:"aggregation_1" > label:<name:"result" value:"SUCCESS" > label:<name:"server" value:"main" > counter:<value:1 > > metric:<label:<name:"aggregation" value:"aggregation_2" > label:<name:"result" value:"SUCCESS" > label:<name:"server" value:"main" > counter:<value:1 > > `,
4141
}
4242

@@ -65,6 +65,12 @@ func TestMetricsConfigv2(t *testing.T) {
6565
mongodbImage: "mongo:5.0",
6666
expectedMetrics: expected,
6767
},
68+
integrationTest{
69+
name: "integration test using config v3.0 and mongodb:6.0",
70+
configPath: "../example/configv3.yaml",
71+
mongodbImage: "mongo:6.0",
72+
expectedMetrics: expected,
73+
},
6874
}
6975

7076
for _, test := range tests {

collector/collector.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func (c *Collector) describeMetric(metric *Metric) *prometheus.Desc {
181181
return prometheus.NewDesc(
182182
metric.Name,
183183
metric.Help,
184-
metric.Labels,
184+
append([]string{"server"}, metric.Labels...),
185185
metric.ConstLabels,
186186
)
187187
}
@@ -392,7 +392,7 @@ func (c *Collector) aggregate(aggregation *Aggregation, srv *server, ch chan<- p
392392
}
393393

394394
for _, metric := range aggregation.Metrics {
395-
m, err := createMetric(metric, result)
395+
m, err := createMetric(srv, metric, result)
396396
if err != nil {
397397
return err
398398
}
@@ -414,7 +414,7 @@ func (c *Collector) aggregate(aggregation *Aggregation, srv *server, ch chan<- p
414414
result[label] = ""
415415
}
416416

417-
m, err := createMetric(metric, result)
417+
m, err := createMetric(srv, metric, result)
418418
if err != nil {
419419
return err
420420
}
@@ -427,7 +427,7 @@ func (c *Collector) aggregate(aggregation *Aggregation, srv *server, ch chan<- p
427427
return multierr.ErrorOrNil()
428428
}
429429

430-
func createMetric(metric *Metric, result AggregationResult) (prometheus.Metric, error) {
430+
func createMetric(srv *server, metric *Metric, result AggregationResult) (prometheus.Metric, error) {
431431
value, err := metric.getValue(result)
432432
if err != nil {
433433
return nil, err
@@ -438,6 +438,7 @@ func createMetric(metric *Metric, result AggregationResult) (prometheus.Metric,
438438
return nil, err
439439
}
440440

441+
labels = append([]string{srv.name}, labels...)
441442
return prometheus.NewConstMetric(metric.desc, prometheus.GaugeValue, value, labels...)
442443
}
443444

collector/collector_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func TestInitializeMetrics(t *testing.T) {
8686
expected: `
8787
# HELP simple foobar
8888
# TYPE simple gauge
89-
simple{foo="bar"} 1
89+
simple{foo="bar",server="main"} 1
9090
`,
9191
},
9292
aggregationTest{
@@ -108,7 +108,7 @@ func TestInitializeMetrics(t *testing.T) {
108108
expected: `
109109
# HELP simple foobar
110110
# TYPE simple gauge
111-
simple 2
111+
simple{server="main"} 2
112112
`,
113113
},
114114
aggregationTest{
@@ -134,7 +134,7 @@ func TestInitializeMetrics(t *testing.T) {
134134
counter_total{aggregation="aggregation_0",result="SUCCESS",server="main"} 1
135135
# HELP simple foobar
136136
# TYPE simple gauge
137-
simple 2
137+
simple{server="main"} 2
138138
`,
139139
},
140140
aggregationTest{
@@ -169,7 +169,7 @@ func TestInitializeMetrics(t *testing.T) {
169169
expected: `
170170
# HELP simple_gauge_value_not_found_overridden overridden
171171
# TYPE simple_gauge_value_not_found_overridden gauge
172-
simple_gauge_value_not_found_overridden 12
172+
simple_gauge_value_not_found_overridden{server="main"} 12
173173
`,
174174
},
175175
aggregationTest{
@@ -271,7 +271,7 @@ func TestInitializeMetrics(t *testing.T) {
271271
expected: `
272272
# HELP simple_gauge_label foobar
273273
# TYPE simple_gauge_label gauge
274-
simple_gauge_label{foo="bar"} 1
274+
simple_gauge_label{foo="bar",server="main"} 1
275275
`,
276276
},
277277
aggregationTest{
@@ -303,11 +303,11 @@ func TestInitializeMetrics(t *testing.T) {
303303
expected: `
304304
# HELP simple_gauge_label foobar
305305
# TYPE simple_gauge_label gauge
306-
simple_gauge_label{foo="bar"} 1
306+
simple_gauge_label{foo="bar",server="main"} 1
307307
308308
# HELP simple_gauge_label_with_constant bar
309309
# TYPE simple_gauge_label_with_constant gauge
310-
simple_gauge_label_with_constant{foo="bar", foobar="foo"} 1
310+
simple_gauge_label_with_constant{foo="bar",foobar="foo",server="main"} 1
311311
`,
312312
},
313313
}
@@ -369,12 +369,12 @@ func TestCachedMetric(t *testing.T) {
369369
expected: `
370370
# HELP simple_gauge_no_cache foobar
371371
# TYPE simple_gauge_no_cache gauge
372-
simple_gauge_no_cache 1
372+
simple_gauge_no_cache{server="main"} 1
373373
`,
374374
expectedCached: `
375375
# HELP simple_gauge_no_cache foobar
376376
# TYPE simple_gauge_no_cache gauge
377-
simple_gauge_no_cache 2
377+
simple_gauge_no_cache{server="main"} 2
378378
`,
379379
},
380380
aggregationTest{
@@ -397,12 +397,12 @@ func TestCachedMetric(t *testing.T) {
397397
expected: `
398398
# HELP simple_gauge_cached Cached for 60s
399399
# TYPE simple_gauge_cached gauge
400-
simple_gauge_cached 1
400+
simple_gauge_cached{server="main"} 1
401401
`,
402402
expectedCached: `
403403
# HELP simple_gauge_cached Cached for 60s
404404
# TYPE simple_gauge_cached gauge
405-
simple_gauge_cached 1
405+
simple_gauge_cached{server="main"} 1
406406
`,
407407
},
408408
}

0 commit comments

Comments
 (0)