diff --git a/rules/alerting.go b/rules/alerting.go index 2930ec937a..f28ffa2895 100644 --- a/rules/alerting.go +++ b/rules/alerting.go @@ -198,6 +198,7 @@ func (r *AlertingRule) eval(ts model.Time, engine *promql.Engine, externalURLPat return model.LabelValue(result) } + delete(smpl.Metric, model.MetricNameLabel) labels := make(model.LabelSet, len(smpl.Metric)+len(r.labels)+1) for ln, lv := range smpl.Metric { labels[ln] = lv @@ -219,8 +220,6 @@ func (r *AlertingRule) eval(ts model.Time, engine *promql.Engine, externalURLPat continue } - delete(smpl.Metric, model.MetricNameLabel) - r.active[fp] = &Alert{ Labels: labels, Annotations: annotations, diff --git a/rules/manager_test.go b/rules/manager_test.go index 9c18ff53e4..dfee078d7b 100644 --- a/rules/manager_test.go +++ b/rules/manager_test.go @@ -136,6 +136,12 @@ func TestAlertingRule(t *testing.T) { t.Errorf("%d. Expected and actual outputs don't match:", i) t.Fatalf("Expected:\n%v\n----\nActual:\n%v", strings.Join(expected, "\n"), strings.Join(actual, "\n")) } + + for _, aa := range rule.ActiveAlerts() { + if _, ok := aa.Labels[model.MetricNameLabel]; ok { + t.Fatalf("%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) + } + } } }