[v10.0.x] Alerting: Fix email template for text/plain emails (#70111)

Alerting: Fix email template for text/plain emails (#69951)

This commit fixes the email template for text/plain emails to
support custom messages. It also fixes the default template,
removing extra whitespace and showing Summary and Description
annotations separate from the other annotations.

(cherry picked from commit c1e3362e21)

Co-authored-by: George Robinson <george.robinson@grafana.com>
This commit is contained in:
Grot (@grafanabot)
2023-06-14 23:18:05 +01:00
committed by GitHub
co-authored by George Robinson
parent 20916f597c
commit 39cd2f19e5
2 changed files with 117 additions and 70 deletions
+59 -35
View File
@@ -1,38 +1,62 @@
[[HiddenSubject .Subject "[[.Title]]"]]
[[- define "__default_message" -]]
You have [[ len .Alerts.Firing ]] firing alert(s), and [[ len .Alerts.Resolved ]] resolved alert(s) for [[ .GroupLabels ]]
[[.Title]]
----------------
[[ if .Alerts.Firing -]]
([[ len .Alerts.Firing ]]) FIRING
-----------
[[ template "__default_alerts_summarize" .Alerts.Firing ]]
[[- end ]]
[[ .Alerts | len ]] alert[[ if gt (len .Alerts) 1 ]]s[[ end ]] for
[[ range .GroupLabels.SortedPairs ]]
[[ .Name ]] = [[ .Value ]]
[[ end ]]
[[ if gt (len .Alerts.Firing) 0 ]]([[ .Alerts.Firing | len ]]) Firing[[ end ]]
[[ range .Alerts.Firing ]]
Labels:
[[ range .Labels.SortedPairs ]]
[[ .Name ]] = [[ .Value ]]
[[ end ]]
[[ if gt (len .Annotations) 0 ]]
Annotations:
[[ end ]]
[[ range .Annotations.SortedPairs ]]
[[ .Name ]] = [[ .Value ]]
[[ end ]]
[[ end ]][[ if gt (len .Alerts.Resolved) 0 ]]([[ .Alerts.Resolved | len ]]) Resolved[[ end ]]
[[ range .Alerts.Resolved ]]
Labels:
[[ range .Labels.SortedPairs ]]
[[ .Name ]] = [[ .Value ]]
[[ end ]]
[[ if gt (len .Annotations) 0 ]]
Annotations:
[[ end ]]
[[ range .Annotations.SortedPairs ]]
[[ .Name ]] = [[ .Value ]]
[[ end ]]
[[ end ]]View your Alert rule:
[[.RuleUrl]]
[[ if .Alerts.Resolved -]]
([[ len .Alerts.Resolved ]]) RESOLVED
-------------
[[ template "__default_alerts_summarize" .Alerts.Resolved ]]
[[- end ]]
Go to the Alerts page: [[ .AlertPageUrl ]]
[[- end -]]
Go to the Alerts page:
[[.AlertPageUrl]]
[[- define "__default_alerts_summarize" -]]
[[- range . ]]
[[ template "__default_alert_labels" . ]]
[[ template "__default_alert_annotations" . ]]
[[- end ]]
[[- end -]]
[[- define "__default_alert_labels" -]]
[[- if gt (len .Labels) 3 -]]
Labels: [[ template "__default_sorted_pairs" .Labels ]]
[[- else -]]
Labels: [[ .Labels.SortedPairs ]]
[[- end -]]
[[- end -]]
[[- define "__default_alert_annotations" -]]
[[- $annotations := .Annotations -]]
[[- if index $annotations "summary" -]]
Summary: [[ index .Annotations "summary" ]]
[[- $annotations = $annotations.Remove (toStrings (list "summary")) ]]
[[ end -]]
[[- if index $annotations "description" -]]
Description: [[ index $annotations "description" ]]
[[- $annotations = $annotations.Remove (toStrings (list "description")) ]]
[[ end -]]
[[- if index $annotations "runbook_url" -]]
Runbook: [[ index $annotations "runbook_url" ]]
[[- $annotations = $annotations.Remove (toStrings (list "runbook_url")) ]]
[[ end -]]
[[- if $annotations -]]
Annotations: [[ template "__default_sorted_pairs" $annotations ]]
[[ end -]]
[[- end -]]
[[- define "__default_sorted_pairs" -]]
[[ range .SortedPairs ]]
[[ .Name ]] = [[ .Value ]]
[[- end ]]
[[- end -]]
[[- if .Message -]]
[[ .Message ]]
[[ else -]]
[[ template "__default_message" . ]]
[[- end ]]
+58 -35
View File
@@ -1,41 +1,64 @@
{{HiddenSubject .Subject "{{.Title}}"}}
{{- define "__default_message" -}}
You have {{ len .Alerts.Firing }} firing alert(s), and {{ len .Alerts.Resolved }} resolved alert(s) for {{ .GroupLabels }}
{{.Title}}
----------------
{{ if .Alerts.Firing -}}
({{ len .Alerts.Firing }}) FIRING
-----------
{{ template "__default_alerts_summarize" .Alerts.Firing }}
{{- end }}
{{ .Alerts | len }} alert{{ if gt (len .Alerts) 1 }}s{{ end }} for
{{ range .GroupLabels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{ end }}
{{ if gt (len .Alerts.Firing) 0 }}({{ .Alerts.Firing | len }}) Firing{{ end }}
{{ range .Alerts.Firing }}
Labels:
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{ end }}
{{ if gt (len .Annotations) 0 }}
Annotations:
{{ end }}
{{ range .Annotations.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{ end }}
{{ end }}{{ if gt (len .Alerts.Resolved) 0 }}({{ .Alerts.Resolved | len }}) Resolved{{ end }}
{{ range .Alerts.Resolved }}
Labels:
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{ end }}
{{ if gt (len .Annotations) 0 }}
Annotations:
{{ end }}
{{ range .Annotations.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{ end }}
{{ end }}View your Alert rule:
{{.RuleUrl}}
{{ if .Alerts.Resolved -}}
({{ len .Alerts.Resolved }}) RESOLVED
-------------
{{ template "__default_alerts_summarize" .Alerts.Resolved }}
{{- end }}
Go to the Alerts page: {{ .AlertPageUrl }}
{{- end -}}
Go to the Alerts page:
{{.AlertPageUrl}}
{{- define "__default_alerts_summarize" -}}
{{- range . }}
{{ template "__default_alert_labels" . }}
{{ template "__default_alert_annotations" . }}
{{- end }}
{{- end -}}
{{- define "__default_alert_labels" -}}
{{- if gt (len .Labels) 3 -}}
Labels: {{ template "__default_sorted_pairs" .Labels }}
{{- else -}}
Labels: {{ .Labels.SortedPairs }}
{{- end -}}
{{- end -}}
{{- define "__default_alert_annotations" -}}
{{- $annotations := .Annotations -}}
{{- if index $annotations "summary" -}}
Summary: {{ index .Annotations "summary" }}
{{- $annotations = $annotations.Remove (toStrings (list "summary")) }}
{{ end -}}
{{- if index $annotations "description" -}}
Description: {{ index $annotations "description" }}
{{- $annotations = $annotations.Remove (toStrings (list "description")) }}
{{ end -}}
{{- if index $annotations "runbook_url" -}}
Runbook: {{ index $annotations "runbook_url" }}
{{- $annotations = $annotations.Remove (toStrings (list "runbook_url")) }}
{{ end -}}
{{- if $annotations -}}
Annotations: {{ template "__default_sorted_pairs" $annotations }}
{{ end -}}
{{- end -}}
{{- define "__default_sorted_pairs" -}}
{{ range .SortedPairs }}
{{ .Name }} = {{ .Value }}
{{- end }}
{{- end -}}
{{- if .Message -}}
{{ .Message }}
{{ else -}}
{{ template "__default_message" . }}
{{- end }}
Sent by Grafana v{{.BuildVersion}} (c) {{now | date "2006"}} Grafana Labs