diff --git a/rules/manager.go b/rules/manager.go index a38be82ebe..09b1ef2b82 100644 --- a/rules/manager.go +++ b/rules/manager.go @@ -342,7 +342,7 @@ func (m *Manager) LoadGroups( externalLabels, externalURL, !shouldRestore, - m.logger.With("alert", r.Alert), + m.logger.With("alert", r.Alert.Value), )) continue } diff --git a/template/template.go b/template/template.go index 75a9f33bd2..edbb42f009 100644 --- a/template/template.go +++ b/template/template.go @@ -281,14 +281,30 @@ func NewTemplateExpander( } } +type templateData struct { + Labels map[string]string + ExternalLabels map[string]string + ExternalURL string + Value interface{} +} + +// String implements fmt.Stringer interface. +func (t templateData) String() string { + labelsString := func(labels map[string]string) string { + // model.LabelSet has a ready String() method, that we can use. + labelSet := make(model.LabelSet, len(t.Labels)) + for k, v := range t.Labels { + labelSet[model.LabelName(k)] = model.LabelValue(v) + } + return labelSet.String() + } + + return fmt.Sprintf("", labelsString(t.Labels), labelsString(t.ExternalLabels), t.ExternalURL, t.Value) +} + // AlertTemplateData returns the interface to be used in expanding the template. func AlertTemplateData(labels, externalLabels map[string]string, externalURL string, smpl promql.Sample) interface{} { - res := struct { - Labels map[string]string - ExternalLabels map[string]string - ExternalURL string - Value interface{} - }{ + res := templateData{ Labels: labels, ExternalLabels: externalLabels, ExternalURL: externalURL,