Skip to content

Commit 3c1d016

Browse files
committed
Filter out unacceptable labels in AgentStats
Signed-off-by: Danny Kopping <danny@coder.com>
1 parent 06f2f87 commit 3c1d016

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

coderd/prometheusmetrics/aggregator_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ func TestUpdateMetrics_MetricsExpire(t *testing.T) {
262262

263263
// given
264264
registry := prometheus.NewRegistry()
265-
metricsAggregator, err := prometheusmetrics.NewMetricsAggregator(slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}), registry, time.Millisecond, nil)
265+
metricsAggregator, err := prometheusmetrics.NewMetricsAggregator(slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}), registry, time.Millisecond, agentmetrics.LabelAll)
266266
require.NoError(t, err)
267267

268268
ctx, cancelFunc := context.WithCancel(context.Background())

coderd/prometheusmetrics/prometheusmetrics.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,8 @@ func AgentStats(ctx context.Context, logger slog.Logger, registerer prometheus.R
338338
aggregateByLabels = agentmetrics.LabelAgentStats
339339
}
340340

341+
aggregateByLabels = filterInvalidLabels(aggregateByLabels)
342+
341343
metricsCollectorAgentStats := prometheus.NewHistogram(prometheus.HistogramOpts{
342344
Namespace: "coderd",
343345
Subsystem: "prometheusmetrics",
@@ -514,3 +516,20 @@ func AgentStats(ctx context.Context, logger slog.Logger, registerer prometheus.R
514516
<-done
515517
}, nil
516518
}
519+
520+
// filterInvalidLabels handles a slightly messy situation whereby `prometheus-aggregate-agent-stats-by` can control on
521+
// which labels agent stats are aggregated, but for these specific metrics in this file there is no `template` label value,
522+
// and therefore we have to exclude it from the list of acceptable labels.
523+
func filterInvalidLabels(labels []string) []string {
524+
var out []string
525+
526+
for _, label := range labels {
527+
if label == agentmetrics.LabelTemplateName {
528+
continue
529+
}
530+
531+
out = append(out, label)
532+
}
533+
534+
return out
535+
}

coderd/prometheusmetrics/prometheusmetrics_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"database/sql"
66
"encoding/json"
77
"fmt"
8+
"github.com/coder/coder/v2/coderd/agentmetrics"
89
"os"
910
"reflect"
1011
"sync/atomic"
@@ -451,7 +452,7 @@ func TestAgentStats(t *testing.T) {
451452
// and it doesn't depend on the real time.
452453
closeFunc, err := prometheusmetrics.AgentStats(ctx, slogtest.Make(t, &slogtest.Options{
453454
IgnoreErrors: true,
454-
}), registry, db, time.Now().Add(-time.Minute), time.Millisecond, nil)
455+
}), registry, db, time.Now().Add(-time.Minute), time.Millisecond, agentmetrics.LabelAll)
455456
require.NoError(t, err)
456457
t.Cleanup(closeFunc)
457458

0 commit comments

Comments
 (0)