Alerting: Add value to notifier template (#41951) (#42028)

* add value to email template

* add value to default template

* update test string

* test: fix ngalert test suite

* test: run CI

Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
(cherry picked from commit 97978a7c02)

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
This commit is contained in:
Grot (@grafanabot) 2021-11-22 04:51:06 -05:00 committed by GitHub
parent 57ad07ae76
commit a69b3ea212
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 102 additions and 61 deletions

View File

@ -1,6 +1,11 @@
[[Subject .Subject "[[.Title]]"]] [[Subject .Subject "[[.Title]]"]]
[[ define "alert" ]] [[ define "alert" ]]
<tr>
<td colspan="2" class="value">
<span class="value-heading">Value:</span> <span class="value-value">[[ .ValueString ]]</span>
</td>
</tr>
[[ if gt (len .Annotations.SortedPairs) 0 ]] [[ if gt (len .Annotations.SortedPairs) 0 ]]
<tr> <tr>
<td colspan="2" class="annotations"> <td colspan="2" class="annotations">
@ -108,6 +113,16 @@
margin: 0 10px 0 0; margin: 0 10px 0 0;
padding: 5px 9px; padding: 5px 9px;
} }
.value {
font-size: 14px;
padding-top: 24px;
}
.value-heading {
font-weight: bold;
}
.value-value {
padding-left: 8px;
}
.annotations { .annotations {
font-size: 14px; font-size: 14px;
padding: 24px 0 12px 0; padding: 24px 0 12px 0;

View File

@ -13,6 +13,7 @@ var DefaultTemplateString = `
{{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }} {{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }}
{{ define "__text_alert_list" }}{{ range . }} {{ define "__text_alert_list" }}{{ range . }}
Value: {{ or .ValueString "<no value>" }}
Labels: Labels:
{{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }} {{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }}
{{ end }}Annotations: {{ end }}Annotations:
@ -33,6 +34,7 @@ Labels:
{{ define "__teams_text_alert_list" }}{{ range . }} {{ define "__teams_text_alert_list" }}{{ range . }}
Value: {{ or .ValueString "<no value>" }}
Labels: Labels:
{{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }} {{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }}
{{ end }} {{ end }}
@ -65,6 +67,7 @@ const TemplateForTestsString = `
{{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }} {{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }}
{{ define "__text_alert_list" }}{{ range . }} {{ define "__text_alert_list" }}{{ range . }}
Value: {{ or .ValueString "<no value>" }}
Labels: Labels:
{{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }} {{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }}
{{ end }}Annotations: {{ end }}Annotations:

View File

@ -21,7 +21,7 @@ func TestDefaultTemplateString(t *testing.T) {
Alert: model.Alert{ Alert: model.Alert{
Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val1"}, Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val1"},
Annotations: model.LabelSet{ Annotations: model.LabelSet{
"ann1": "annv1", "__dashboardUid__": "dbuid123", "__panelId__": "puid123", "ann1": "annv1", "__dashboardUid__": "dbuid123", "__panelId__": "puid123", "__value_string__": "1234",
}, },
StartsAt: time.Now(), StartsAt: time.Now(),
EndsAt: time.Now().Add(1 * time.Hour), EndsAt: time.Now().Add(1 * time.Hour),
@ -30,7 +30,7 @@ func TestDefaultTemplateString(t *testing.T) {
}, { // Firing without dashboard and panel ID. }, { // Firing without dashboard and panel ID.
Alert: model.Alert{ Alert: model.Alert{
Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val2"}, Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val2"},
Annotations: model.LabelSet{"ann1": "annv2"}, Annotations: model.LabelSet{"ann1": "annv2", "__value_string__": "1234"},
StartsAt: time.Now(), StartsAt: time.Now(),
EndsAt: time.Now().Add(2 * time.Hour), EndsAt: time.Now().Add(2 * time.Hour),
GeneratorURL: "http://localhost/alert2", GeneratorURL: "http://localhost/alert2",
@ -39,7 +39,7 @@ func TestDefaultTemplateString(t *testing.T) {
Alert: model.Alert{ Alert: model.Alert{
Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val3"}, Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val3"},
Annotations: model.LabelSet{ Annotations: model.LabelSet{
"ann1": "annv3", "__dashboardUid__": "dbuid456", "__panelId__": "puid456", "ann1": "annv3", "__dashboardUid__": "dbuid456", "__panelId__": "puid456", "__value_string__": "1234",
}, },
StartsAt: time.Now().Add(-1 * time.Hour), StartsAt: time.Now().Add(-1 * time.Hour),
EndsAt: time.Now().Add(-30 * time.Minute), EndsAt: time.Now().Add(-30 * time.Minute),
@ -48,7 +48,7 @@ func TestDefaultTemplateString(t *testing.T) {
}, { // Resolved without dashboard and panel ID. }, { // Resolved without dashboard and panel ID.
Alert: model.Alert{ Alert: model.Alert{
Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val4"}, Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val4"},
Annotations: model.LabelSet{"ann1": "annv4"}, Annotations: model.LabelSet{"ann1": "annv4", "__value_string__": "1234"},
StartsAt: time.Now().Add(-2 * time.Hour), StartsAt: time.Now().Add(-2 * time.Hour),
EndsAt: time.Now().Add(-3 * time.Hour), EndsAt: time.Now().Add(-3 * time.Hour),
GeneratorURL: "http://localhost/alert4", GeneratorURL: "http://localhost/alert4",
@ -92,6 +92,7 @@ func TestDefaultTemplateString(t *testing.T) {
templateString: `{{ template "default.message" .}}`, templateString: `{{ template "default.message" .}}`,
expected: `**Firing** expected: `**Firing**
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val1 - lbl1 = val1
@ -102,6 +103,7 @@ Silence: http://localhost/grafana/alerting/silence/new?alertmanager=grafana&matc
Dashboard: http://localhost/grafana/d/dbuid123 Dashboard: http://localhost/grafana/d/dbuid123
Panel: http://localhost/grafana/d/dbuid123?viewPanel=puid123 Panel: http://localhost/grafana/d/dbuid123?viewPanel=puid123
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val2 - lbl1 = val2
@ -113,6 +115,7 @@ Silence: http://localhost/grafana/alerting/silence/new?alertmanager=grafana&matc
**Resolved** **Resolved**
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val3 - lbl1 = val3
@ -123,6 +126,7 @@ Silence: http://localhost/grafana/alerting/silence/new?alertmanager=grafana&matc
Dashboard: http://localhost/grafana/d/dbuid456 Dashboard: http://localhost/grafana/d/dbuid456
Panel: http://localhost/grafana/d/dbuid456?viewPanel=puid456 Panel: http://localhost/grafana/d/dbuid456?viewPanel=puid456
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val4 - lbl1 = val4
@ -136,6 +140,7 @@ Silence: http://localhost/grafana/alerting/silence/new?alertmanager=grafana&matc
templateString: `{{ template "teams.default.message" .}}`, templateString: `{{ template "teams.default.message" .}}`,
expected: `**Firing** expected: `**Firing**
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val1 - lbl1 = val1
@ -153,6 +158,7 @@ Panel: http://localhost/grafana/d/dbuid123?viewPanel=puid123
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val2 - lbl1 = val2
@ -169,6 +175,7 @@ Silence: http://localhost/grafana/alerting/silence/new?alertmanager=grafana&matc
**Resolved** **Resolved**
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val3 - lbl1 = val3
@ -186,6 +193,7 @@ Panel: http://localhost/grafana/d/dbuid456?viewPanel=puid456
Value: 1234
Labels: Labels:
- alertname = alert1 - alertname = alert1
- lbl1 = val4 - lbl1 = val4

View File

@ -38,7 +38,7 @@ func TestDingdingNotifier(t *testing.T) {
{ {
Alert: model.Alert{ Alert: model.Alert{
Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val1"}, Labels: model.LabelSet{"alertname": "alert1", "lbl1": "val1"},
Annotations: model.LabelSet{"ann1": "annv1", "__dashboardUid__": "abcd", "__panelId__": "efgh"}, Annotations: model.LabelSet{"ann1": "annv1", "__dashboardUid__": "abcd", "__panelId__": "efgh", "__value_string__": "1234"},
}, },
}, },
}, },
@ -46,7 +46,7 @@ func TestDingdingNotifier(t *testing.T) {
"msgtype": "link", "msgtype": "link",
"link": map[string]interface{}{ "link": map[string]interface{}{
"messageUrl": "dingtalk://dingtalkclient/page/link?pc_slide=false&url=http%3A%2F%2Flocalhost%2Falerting%2Flist", "messageUrl": "dingtalk://dingtalkclient/page/link?pc_slide=false&url=http%3A%2F%2Flocalhost%2Falerting%2Flist",
"text": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "text": "**Firing**\n\nValue: 1234\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"title": "[FIRING:1] (val1)", "title": "[FIRING:1] (val1)",
}, },
}, },

View File

@ -43,7 +43,7 @@ func TestDiscordNotifier(t *testing.T) {
}, },
}, },
expMsg: map[string]interface{}{ expMsg: map[string]interface{}{
"content": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "content": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"embeds": []interface{}{map[string]interface{}{ "embeds": []interface{}{map[string]interface{}{
"color": 1.4037554e+07, "color": 1.4037554e+07,
"footer": map[string]interface{}{ "footer": map[string]interface{}{
@ -103,7 +103,7 @@ func TestDiscordNotifier(t *testing.T) {
{ {
name: "Default config with one alert, use default discord username", name: "Default config with one alert, use default discord username",
settings: `{ settings: `{
"url": "http://localhost", "url": "http://localhost",
"use_discord_username": true "use_discord_username": true
}`, }`,
alerts: []*types.Alert{ alerts: []*types.Alert{
@ -115,7 +115,7 @@ func TestDiscordNotifier(t *testing.T) {
}, },
}, },
expMsg: map[string]interface{}{ expMsg: map[string]interface{}{
"content": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "content": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"embeds": []interface{}{map[string]interface{}{ "embeds": []interface{}{map[string]interface{}{
"color": 1.4037554e+07, "color": 1.4037554e+07,
"footer": map[string]interface{}{ "footer": map[string]interface{}{

View File

@ -60,7 +60,7 @@ func TestGoogleChatNotifier(t *testing.T) {
Widgets: []widget{ Widgets: []widget{
textParagraphWidget{ textParagraphWidget{
Text: text{ Text: text{
Text: "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", Text: "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
}, },
}, },
buttonWidget{ buttonWidget{
@ -119,7 +119,7 @@ func TestGoogleChatNotifier(t *testing.T) {
Widgets: []widget{ Widgets: []widget{
textParagraphWidget{ textParagraphWidget{
Text: text{ Text: text{
Text: "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n", Text: "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n",
}, },
}, },
buttonWidget{ buttonWidget{

View File

@ -53,7 +53,7 @@ func TestKafkaNotifier(t *testing.T) {
"client": "Grafana", "client": "Grafana",
"client_url": "http://localhost/alerting/list", "client_url": "http://localhost/alerting/list",
"description": "[FIRING:1] (val1)", "description": "[FIRING:1] (val1)",
"details": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "details": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"incident_key": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733" "incident_key": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733"
} }
} }
@ -88,7 +88,7 @@ func TestKafkaNotifier(t *testing.T) {
"client": "Grafana", "client": "Grafana",
"client_url": "http://localhost/alerting/list", "client_url": "http://localhost/alerting/list",
"description": "[FIRING:2] ", "description": "[FIRING:2] ",
"details": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n", "details": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n",
"incident_key": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733" "incident_key": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733"
} }
} }

View File

@ -48,7 +48,7 @@ func TestLineNotifier(t *testing.T) {
"Authorization": "Bearer sometoken", "Authorization": "Bearer sometoken",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
}, },
expMsg: "message=%5BFIRING%3A1%5D++%28val1%29%0Ahttp%3A%2Flocalhost%2Falerting%2Flist%0A%0A%2A%2AFiring%2A%2A%0A%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0ADashboard%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%0APanel%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%3FviewPanel%3Defgh%0A", expMsg: "message=%5BFIRING%3A1%5D++%28val1%29%0Ahttp%3A%2Flocalhost%2Falerting%2Flist%0A%0A%2A%2AFiring%2A%2A%0A%0AValue%3A+%3Cno+value%3E%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0ADashboard%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%0APanel%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%3FviewPanel%3Defgh%0A",
expMsgError: nil, expMsgError: nil,
}, { }, {
name: "Multiple alerts", name: "Multiple alerts",
@ -70,7 +70,7 @@ func TestLineNotifier(t *testing.T) {
"Authorization": "Bearer sometoken", "Authorization": "Bearer sometoken",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
}, },
expMsg: "message=%5BFIRING%3A2%5D++%0Ahttp%3A%2Flocalhost%2Falerting%2Flist%0A%0A%2A%2AFiring%2A%2A%0A%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0A%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val2%0AAnnotations%3A%0A+-+ann1+%3D+annv2%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval2%0A", expMsg: "message=%5BFIRING%3A2%5D++%0Ahttp%3A%2Flocalhost%2Falerting%2Flist%0A%0A%2A%2AFiring%2A%2A%0A%0AValue%3A+%3Cno+value%3E%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0A%0AValue%3A+%3Cno+value%3E%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val2%0AAnnotations%3A%0A+-+ann1+%3D+annv2%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval2%0A",
expMsgError: nil, expMsgError: nil,
}, { }, {
name: "Token missing", name: "Token missing",

View File

@ -46,7 +46,7 @@ func TestOpsgenieNotifier(t *testing.T) {
}, },
expMsg: `{ expMsg: `{
"alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733", "alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733",
"description": "[FIRING:1] (val1)\nhttp://localhost/alerting/list\n\n**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "description": "[FIRING:1] (val1)\nhttp://localhost/alerting/list\n\n**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"details": { "details": {
"url": "http://localhost/alerting/list" "url": "http://localhost/alerting/list"
}, },
@ -71,7 +71,7 @@ func TestOpsgenieNotifier(t *testing.T) {
}, },
expMsg: `{ expMsg: `{
"alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733", "alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733",
"description": "[FIRING:1] (val1)\nhttp://localhost/alerting/list\n\n**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n", "description": "[FIRING:1] (val1)\nhttp://localhost/alerting/list\n\n**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n",
"details": { "details": {
"url": "http://localhost/alerting/list" "url": "http://localhost/alerting/list"
}, },
@ -96,7 +96,7 @@ func TestOpsgenieNotifier(t *testing.T) {
}, },
expMsg: `{ expMsg: `{
"alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733", "alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733",
"description": "[FIRING:1] (val1)\nhttp://localhost/alerting/list\n\n**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n", "description": "[FIRING:1] (val1)\nhttp://localhost/alerting/list\n\n**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n",
"details": { "details": {
"alertname": "alert1", "alertname": "alert1",
"lbl1": "val1", "lbl1": "val1",
@ -128,7 +128,7 @@ func TestOpsgenieNotifier(t *testing.T) {
}, },
expMsg: `{ expMsg: `{
"alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733", "alias": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733",
"description": "[FIRING:2] \nhttp://localhost/alerting/list\n\n**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n", "description": "[FIRING:2] \nhttp://localhost/alerting/list\n\n**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n",
"details": { "details": {
"alertname": "alert1", "alertname": "alert1",
"url": "http://localhost/alerting/list" "url": "http://localhost/alerting/list"

View File

@ -61,7 +61,7 @@ func TestPagerdutyNotifier(t *testing.T) {
Component: "Grafana", Component: "Grafana",
Group: "default", Group: "default",
CustomDetails: map[string]string{ CustomDetails: map[string]string{
"firing": "\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "firing": "\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"num_firing": "1", "num_firing": "1",
"num_resolved": "0", "num_resolved": "0",
"resolved": "", "resolved": "",
@ -107,7 +107,7 @@ func TestPagerdutyNotifier(t *testing.T) {
Component: "My Grafana", Component: "My Grafana",
Group: "my_group", Group: "my_group",
CustomDetails: map[string]string{ CustomDetails: map[string]string{
"firing": "\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n", "firing": "\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n",
"num_firing": "2", "num_firing": "2",
"num_resolved": "0", "num_resolved": "0",
"resolved": "", "resolved": "",

View File

@ -61,7 +61,7 @@ func TestPushoverNotifier(t *testing.T) {
"title": "[FIRING:1] (val1)", "title": "[FIRING:1] (val1)",
"url": "http://localhost/alerting/list", "url": "http://localhost/alerting/list",
"url_title": "Show alert rule", "url_title": "Show alert rule",
"message": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "message": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"html": "1", "html": "1",
}, },
expMsgError: nil, expMsgError: nil,

View File

@ -59,7 +59,7 @@ func TestSensuGoNotifier(t *testing.T) {
"ruleURL": "http://localhost/alerting/list", "ruleURL": "http://localhost/alerting/list",
}, },
}, },
"output": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "output": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
"issued": time.Now().Unix(), "issued": time.Now().Unix(),
"interval": 86400, "interval": 86400,
"status": 2, "status": 2,

View File

@ -58,7 +58,7 @@ func TestSlackNotifier(t *testing.T) {
{ {
Title: "[FIRING:1] (val1)", Title: "[FIRING:1] (val1)",
TitleLink: "http://localhost/alerting/list", TitleLink: "http://localhost/alerting/list",
Text: "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", Text: "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
Fallback: "[FIRING:1] (val1)", Fallback: "[FIRING:1] (val1)",
Fields: nil, Fields: nil,
Footer: "Grafana v", Footer: "Grafana v",
@ -93,7 +93,7 @@ func TestSlackNotifier(t *testing.T) {
{ {
Title: "[FIRING:1] (val1)", Title: "[FIRING:1] (val1)",
TitleLink: "http://localhost/alerting/list", TitleLink: "http://localhost/alerting/list",
Text: "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n", Text: "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n",
Fallback: "[FIRING:1] (val1)", Fallback: "[FIRING:1] (val1)",
Fields: nil, Fields: nil,
Footer: "Grafana v", Footer: "Grafana v",
@ -135,7 +135,7 @@ func TestSlackNotifier(t *testing.T) {
{ {
Title: "2 firing, 0 resolved", Title: "2 firing, 0 resolved",
TitleLink: "http://localhost/alerting/list", TitleLink: "http://localhost/alerting/list",
Text: "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n", Text: "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n",
Fallback: "2 firing, 0 resolved", Fallback: "2 firing, 0 resolved",
Fields: nil, Fields: nil,
Footer: "Grafana v", Footer: "Grafana v",

View File

@ -51,7 +51,7 @@ func TestTeamsNotifier(t *testing.T) {
"sections": []map[string]interface{}{ "sections": []map[string]interface{}{
{ {
"title": "Details", "title": "Details",
"text": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "text": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
}, },
}, },
"potentialAction": []map[string]interface{}{ "potentialAction": []map[string]interface{}{

View File

@ -48,7 +48,7 @@ func TestTelegramNotifier(t *testing.T) {
expMsg: map[string]string{ expMsg: map[string]string{
"chat_id": "someid", "chat_id": "someid",
"parse_mode": "html", "parse_mode": "html",
"text": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSource: a URL\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", "text": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSource: a URL\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
}, },
expMsgError: nil, expMsgError: nil,
}, { }, {
@ -75,7 +75,7 @@ func TestTelegramNotifier(t *testing.T) {
expMsg: map[string]string{ expMsg: map[string]string{
"chat_id": "someid", "chat_id": "someid",
"parse_mode": "html", "parse_mode": "html",
"text": "__Custom Firing__\n2 Firing\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSource: a URL\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n", "text": "__Custom Firing__\n2 Firing\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSource: a URL\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n",
}, },
expMsgError: nil, expMsgError: nil,
}, { }, {

View File

@ -47,7 +47,7 @@ func TestThreemaNotifier(t *testing.T) {
}, },
}, },
}, },
expMsg: "from=%2A1234567&secret=supersecret&text=%E2%9A%A0%EF%B8%8F+%5BFIRING%3A1%5D++%28val1%29%0A%0A%2AMessage%3A%2A%0A%2A%2AFiring%2A%2A%0A%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0ADashboard%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%0APanel%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%3FviewPanel%3Defgh%0A%0A%2AURL%3A%2A+http%3A%2Flocalhost%2Falerting%2Flist%0A&to=87654321", expMsg: "from=%2A1234567&secret=supersecret&text=%E2%9A%A0%EF%B8%8F+%5BFIRING%3A1%5D++%28val1%29%0A%0A%2AMessage%3A%2A%0A%2A%2AFiring%2A%2A%0A%0AValue%3A+%3Cno+value%3E%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0ADashboard%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%0APanel%3A+http%3A%2F%2Flocalhost%2Fd%2Fabcd%3FviewPanel%3Defgh%0A%0A%2AURL%3A%2A+http%3A%2Flocalhost%2Falerting%2Flist%0A&to=87654321",
expMsgError: nil, expMsgError: nil,
}, { }, {
name: "Multiple alerts", name: "Multiple alerts",
@ -69,7 +69,7 @@ func TestThreemaNotifier(t *testing.T) {
}, },
}, },
}, },
expMsg: "from=%2A1234567&secret=supersecret&text=%E2%9A%A0%EF%B8%8F+%5BFIRING%3A2%5D++%0A%0A%2AMessage%3A%2A%0A%2A%2AFiring%2A%2A%0A%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0A%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val2%0AAnnotations%3A%0A+-+ann1+%3D+annv2%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval2%0A%0A%2AURL%3A%2A+http%3A%2Flocalhost%2Falerting%2Flist%0A&to=87654321", expMsg: "from=%2A1234567&secret=supersecret&text=%E2%9A%A0%EF%B8%8F+%5BFIRING%3A2%5D++%0A%0A%2AMessage%3A%2A%0A%2A%2AFiring%2A%2A%0A%0AValue%3A+%3Cno+value%3E%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val1%0AAnnotations%3A%0A+-+ann1+%3D+annv1%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval1%0A%0AValue%3A+%3Cno+value%3E%0ALabels%3A%0A+-+alertname+%3D+alert1%0A+-+lbl1+%3D+val2%0AAnnotations%3A%0A+-+ann1+%3D+annv2%0ASilence%3A+http%3A%2F%2Flocalhost%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253Dalert1%252Clbl1%253Dval2%0A%0A%2AURL%3A%2A+http%3A%2Flocalhost%2Falerting%2Flist%0A&to=87654321",
expMsgError: nil, expMsgError: nil,
}, { }, {
name: "Invalid gateway id", name: "Invalid gateway id",

View File

@ -47,7 +47,7 @@ func TestVictoropsNotifier(t *testing.T) {
"entity_id": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733", "entity_id": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733",
"message_type": "CRITICAL", "message_type": "CRITICAL",
"monitoring_tool": "Grafana v", "monitoring_tool": "Grafana v",
"state_message": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n" "state_message": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n"
}`, }`,
expMsgError: nil, expMsgError: nil,
}, { }, {
@ -72,7 +72,7 @@ func TestVictoropsNotifier(t *testing.T) {
"entity_id": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733", "entity_id": "6e3538104c14b583da237e9693b76debbc17f0f8058ef20492e5853096cf8733",
"message_type": "CRITICAL", "message_type": "CRITICAL",
"monitoring_tool": "Grafana v", "monitoring_tool": "Grafana v",
"state_message": "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n" "state_message": "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n"
}`, }`,
expMsgError: nil, expMsgError: nil,
}, { }, {

View File

@ -89,7 +89,7 @@ func TestWebhookNotifier(t *testing.T) {
GroupKey: "alertname", GroupKey: "alertname",
Title: "[FIRING:1] (val1)", Title: "[FIRING:1] (val1)",
State: "alerting", State: "alerting",
Message: "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n", Message: "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\nDashboard: http://localhost/d/abcd\nPanel: http://localhost/d/abcd?viewPanel=efgh\n",
OrgID: orgID, OrgID: orgID,
}, },
expMsgError: nil, expMsgError: nil,
@ -167,7 +167,7 @@ func TestWebhookNotifier(t *testing.T) {
TruncatedAlerts: 1, TruncatedAlerts: 1,
Title: "[FIRING:2] ", Title: "[FIRING:2] ",
State: "alerting", State: "alerting",
Message: "**Firing**\n\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n", Message: "**Firing**\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val1\nAnnotations:\n - ann1 = annv1\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval1\n\nValue: <no value>\nLabels:\n - alertname = alert1\n - lbl1 = val2\nAnnotations:\n - ann1 = annv2\nSilence: http://localhost/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dalert1%2Clbl1%3Dval2\n",
OrgID: orgID, OrgID: orgID,
}, },
expMsgError: nil, expMsgError: nil,

View File

@ -200,7 +200,8 @@ func (am *Alertmanager) TestReceivers(ctx context.Context, c apimodels.TestRecei
func newTestAlert(c apimodels.TestReceiversConfigParams, startsAt, updatedAt time.Time) types.Alert { func newTestAlert(c apimodels.TestReceiversConfigParams, startsAt, updatedAt time.Time) types.Alert {
var ( var (
defaultAnnotations = model.LabelSet{ defaultAnnotations = model.LabelSet{
"summary": "Notification test", "summary": "Notification test",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]",
} }
defaultLabels = model.LabelSet{ defaultLabels = model.LabelSet{
"alertname": "TestAlert", "alertname": "TestAlert",

View File

@ -120,7 +120,8 @@ func TestTestReceivers(t *testing.T) {
expectedJSON := fmt.Sprintf(`{ expectedJSON := fmt.Sprintf(`{
"alert": { "alert": {
"annotations": { "annotations": {
"summary": "Notification test" "summary": "Notification test",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"alertname": "TestAlert", "alertname": "TestAlert",
@ -202,7 +203,8 @@ func TestTestReceivers(t *testing.T) {
expectedJSON := fmt.Sprintf(`{ expectedJSON := fmt.Sprintf(`{
"alert": { "alert": {
"annotations": { "annotations": {
"summary": "Notification test" "summary": "Notification test",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"alertname": "TestAlert", "alertname": "TestAlert",
@ -292,7 +294,8 @@ func TestTestReceivers(t *testing.T) {
expectedJSON := fmt.Sprintf(`{ expectedJSON := fmt.Sprintf(`{
"alert": { "alert": {
"annotations": { "annotations": {
"summary": "Notification test" "summary": "Notification test",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"alertname": "TestAlert", "alertname": "TestAlert",
@ -395,7 +398,8 @@ func TestTestReceivers(t *testing.T) {
expectedJSON := fmt.Sprintf(`{ expectedJSON := fmt.Sprintf(`{
"alert": { "alert": {
"annotations": { "annotations": {
"summary": "Notification test" "summary": "Notification test",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"alertname": "TestAlert", "alertname": "TestAlert",
@ -461,7 +465,8 @@ func TestTestReceiversAlertCustomization(t *testing.T) {
resp := postRequest(t, testReceiversURL, `{ resp := postRequest(t, testReceiversURL, `{
"alert": { "alert": {
"annotations": { "annotations": {
"annotation1": "value1" "annotation1": "value1",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"label1": "value1" "label1": "value1"
@ -500,7 +505,8 @@ func TestTestReceiversAlertCustomization(t *testing.T) {
"alert": { "alert": {
"annotations": { "annotations": {
"annotation1": "value1", "annotation1": "value1",
"summary": "Notification test" "summary": "Notification test",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"alertname": "TestAlert", "alertname": "TestAlert",
@ -556,7 +562,8 @@ func TestTestReceiversAlertCustomization(t *testing.T) {
resp := postRequest(t, testReceiversURL, `{ resp := postRequest(t, testReceiversURL, `{
"alert": { "alert": {
"annotations": { "annotations": {
"summary": "This is a custom annotation" "summary": "This is a custom annotation",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
} }
}, },
"receivers": [{ "receivers": [{
@ -591,7 +598,8 @@ func TestTestReceiversAlertCustomization(t *testing.T) {
expectedJSON := fmt.Sprintf(`{ expectedJSON := fmt.Sprintf(`{
"alert": { "alert": {
"annotations": { "annotations": {
"summary": "This is a custom annotation" "summary": "This is a custom annotation",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"alertname": "TestAlert", "alertname": "TestAlert",
@ -681,7 +689,8 @@ func TestTestReceiversAlertCustomization(t *testing.T) {
expectedJSON := fmt.Sprintf(`{ expectedJSON := fmt.Sprintf(`{
"alert": { "alert": {
"annotations": { "annotations": {
"summary": "Notification test" "summary": "Notification test",
"__value_string__": "[ metric='foo' labels={instance=bar} value=10 ]"
}, },
"labels": { "labels": {
"alertname": "This is a custom label", "alertname": "This is a custom label",
@ -2140,7 +2149,7 @@ var expNonEmailNotifications = map[string][]string{
{ {
"title": "[FIRING:1] SlackAlert2 ", "title": "[FIRING:1] SlackAlert2 ",
"title_link": "http://localhost:3000/alerting/list", "title_link": "http://localhost:3000/alerting/list",
"text": "**Firing**\n\nLabels:\n - alertname = SlackAlert2\nAnnotations:\nSource: http://localhost:3000/alerting/UID_SlackAlert2/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DSlackAlert2\n", "text": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = SlackAlert2\nAnnotations:\nSource: http://localhost:3000/alerting/UID_SlackAlert2/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DSlackAlert2\n",
"fallback": "[FIRING:1] SlackAlert2 ", "fallback": "[FIRING:1] SlackAlert2 ",
"footer": "Grafana v", "footer": "Grafana v",
"footer_icon": "https://grafana.com/assets/img/fav32.png", "footer_icon": "https://grafana.com/assets/img/fav32.png",
@ -2173,7 +2182,7 @@ var expNonEmailNotifications = map[string][]string{
"component": "Integration Test", "component": "Integration Test",
"group": "testgroup", "group": "testgroup",
"custom_details": { "custom_details": {
"firing": "\nLabels:\n - alertname = PagerdutyAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_PagerdutyAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DPagerdutyAlert\n", "firing": "\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = PagerdutyAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_PagerdutyAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DPagerdutyAlert\n",
"num_firing": "1", "num_firing": "1",
"num_resolved": "0", "num_resolved": "0",
"resolved": "" "resolved": ""
@ -2193,7 +2202,7 @@ var expNonEmailNotifications = map[string][]string{
`{ `{
"link": { "link": {
"messageUrl": "dingtalk://dingtalkclient/page/link?pc_slide=false&url=http%3A%2F%2Flocalhost%3A3000%2Falerting%2Flist", "messageUrl": "dingtalk://dingtalkclient/page/link?pc_slide=false&url=http%3A%2F%2Flocalhost%3A3000%2Falerting%2Flist",
"text": "**Firing**\n\nLabels:\n - alertname = DingDingAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_DingDingAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DDingDingAlert\n", "text": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = DingDingAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_DingDingAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DDingDingAlert\n",
"title": "[FIRING:1] DingDingAlert " "title": "[FIRING:1] DingDingAlert "
}, },
"msgtype": "link" "msgtype": "link"
@ -2218,7 +2227,7 @@ var expNonEmailNotifications = map[string][]string{
], ],
"sections": [ "sections": [
{ {
"text": "**Firing**\n\nLabels:\n - alertname = TeamsAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_TeamsAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DTeamsAlert\n", "text": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = TeamsAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_TeamsAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DTeamsAlert\n",
"title": "Details" "title": "Details"
} }
], ],
@ -2262,12 +2271,12 @@ var expNonEmailNotifications = map[string][]string{
"truncatedAlerts": 0, "truncatedAlerts": 0,
"title": "[FIRING:1] WebhookAlert ", "title": "[FIRING:1] WebhookAlert ",
"state": "alerting", "state": "alerting",
"message": "**Firing**\n\nLabels:\n - alertname = WebhookAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_WebhookAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DWebhookAlert\n" "message": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = WebhookAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_WebhookAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DWebhookAlert\n"
}`, }`,
}, },
"discord_recv/discord_test": { "discord_recv/discord_test": {
`{ `{
"content": "**Firing**\n\nLabels:\n - alertname = DiscordAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_DiscordAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DDiscordAlert\n", "content": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = DiscordAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_DiscordAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DDiscordAlert\n",
"embeds": [ "embeds": [
{ {
"color": 14037554, "color": 14037554,
@ -2295,7 +2304,7 @@ var expNonEmailNotifications = map[string][]string{
}, },
"name": "default" "name": "default"
}, },
"output": "**Firing**\n\nLabels:\n - alertname = SensuGoAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_SensuGoAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DSensuGoAlert\n", "output": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = SensuGoAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_SensuGoAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DSensuGoAlert\n",
"status": 2 "status": 2
}, },
"entity": { "entity": {
@ -2308,10 +2317,10 @@ var expNonEmailNotifications = map[string][]string{
}`, }`,
}, },
"pushover_recv/pushover_test": { "pushover_recv/pushover_test": {
"--abcd\r\nContent-Disposition: form-data; name=\"user\"\r\n\r\nmysecretkey\r\n--abcd\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nmysecrettoken\r\n--abcd\r\nContent-Disposition: form-data; name=\"priority\"\r\n\r\n0\r\n--abcd\r\nContent-Disposition: form-data; name=\"sound\"\r\n\r\n\r\n--abcd\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n[FIRING:1] PushoverAlert \r\n--abcd\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttp://localhost:3000/alerting/list\r\n--abcd\r\nContent-Disposition: form-data; name=\"url_title\"\r\n\r\nShow alert rule\r\n--abcd\r\nContent-Disposition: form-data; name=\"message\"\r\n\r\n**Firing**\n\nLabels:\n - alertname = PushoverAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_PushoverAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DPushoverAlert\n\r\n--abcd\r\nContent-Disposition: form-data; name=\"html\"\r\n\r\n1\r\n--abcd--\r\n", "--abcd\r\nContent-Disposition: form-data; name=\"user\"\r\n\r\nmysecretkey\r\n--abcd\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nmysecrettoken\r\n--abcd\r\nContent-Disposition: form-data; name=\"priority\"\r\n\r\n0\r\n--abcd\r\nContent-Disposition: form-data; name=\"sound\"\r\n\r\n\r\n--abcd\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n[FIRING:1] PushoverAlert \r\n--abcd\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttp://localhost:3000/alerting/list\r\n--abcd\r\nContent-Disposition: form-data; name=\"url_title\"\r\n\r\nShow alert rule\r\n--abcd\r\nContent-Disposition: form-data; name=\"message\"\r\n\r\n**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = PushoverAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_PushoverAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DPushoverAlert\n\r\n--abcd\r\nContent-Disposition: form-data; name=\"html\"\r\n\r\n1\r\n--abcd--\r\n",
}, },
"telegram_recv/bot6sh027hs034h": { "telegram_recv/bot6sh027hs034h": {
"--abcd\r\nContent-Disposition: form-data; name=\"chat_id\"\r\n\r\ntelegram_chat_id\r\n--abcd\r\nContent-Disposition: form-data; name=\"parse_mode\"\r\n\r\nhtml\r\n--abcd\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\n**Firing**\n\nLabels:\n - alertname = TelegramAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_TelegramAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DTelegramAlert\n\r\n--abcd--\r\n", "--abcd\r\nContent-Disposition: form-data; name=\"chat_id\"\r\n\r\ntelegram_chat_id\r\n--abcd\r\nContent-Disposition: form-data; name=\"parse_mode\"\r\n\r\nhtml\r\n--abcd\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\n**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = TelegramAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_TelegramAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DTelegramAlert\n\r\n--abcd--\r\n",
}, },
"googlechat_recv/googlechat_test": { "googlechat_recv/googlechat_test": {
`{ `{
@ -2327,7 +2336,7 @@ var expNonEmailNotifications = map[string][]string{
"widgets": [ "widgets": [
{ {
"textParagraph": { "textParagraph": {
"text": "**Firing**\n\nLabels:\n - alertname = GoogleChatAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_GoogleChatAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DGoogleChatAlert\n" "text": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = GoogleChatAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_GoogleChatAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DGoogleChatAlert\n"
} }
}, },
{ {
@ -2365,7 +2374,7 @@ var expNonEmailNotifications = map[string][]string{
"client": "Grafana", "client": "Grafana",
"client_url": "http://localhost:3000/alerting/list", "client_url": "http://localhost:3000/alerting/list",
"description": "[FIRING:1] KafkaAlert ", "description": "[FIRING:1] KafkaAlert ",
"details": "**Firing**\n\nLabels:\n - alertname = KafkaAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_KafkaAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DKafkaAlert\n", "details": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = KafkaAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_KafkaAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DKafkaAlert\n",
"incident_key": "35c0bdb1715f9162a20d7b2a01cb2e3a4c5b1dc663571701e3f67212b696332f" "incident_key": "35c0bdb1715f9162a20d7b2a01cb2e3a4c5b1dc663571701e3f67212b696332f"
} }
} }
@ -2373,10 +2382,10 @@ var expNonEmailNotifications = map[string][]string{
}`, }`,
}, },
"line_recv/line_test": { "line_recv/line_test": {
`message=%5BFIRING%3A1%5D+LineAlert+%0Ahttp%3A%2Flocalhost%3A3000%2Falerting%2Flist%0A%0A%2A%2AFiring%2A%2A%0A%0ALabels%3A%0A+-+alertname+%3D+LineAlert%0AAnnotations%3A%0ASource%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2FUID_LineAlert%2Fedit%0ASilence%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253DLineAlert%0A`, `message=%5BFIRING%3A1%5D+LineAlert+%0Ahttp%3A%2Flocalhost%3A3000%2Falerting%2Flist%0A%0A%2A%2AFiring%2A%2A%0A%0AValue%3A+%5B+var%3D%27A%27+labels%3D%7B%7D+value%3D1+%5D%0ALabels%3A%0A+-+alertname+%3D+LineAlert%0AAnnotations%3A%0ASource%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2FUID_LineAlert%2Fedit%0ASilence%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253DLineAlert%0A`,
}, },
"threema_recv/threema_test": { "threema_recv/threema_test": {
`from=%2A1234567&secret=myapisecret&text=%E2%9A%A0%EF%B8%8F+%5BFIRING%3A1%5D+ThreemaAlert+%0A%0A%2AMessage%3A%2A%0A%2A%2AFiring%2A%2A%0A%0ALabels%3A%0A+-+alertname+%3D+ThreemaAlert%0AAnnotations%3A%0ASource%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2FUID_ThreemaAlert%2Fedit%0ASilence%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253DThreemaAlert%0A%0A%2AURL%3A%2A+http%3A%2Flocalhost%3A3000%2Falerting%2Flist%0A&to=abcdefgh`, `from=%2A1234567&secret=myapisecret&text=%E2%9A%A0%EF%B8%8F+%5BFIRING%3A1%5D+ThreemaAlert+%0A%0A%2AMessage%3A%2A%0A%2A%2AFiring%2A%2A%0A%0AValue%3A+%5B+var%3D%27A%27+labels%3D%7B%7D+value%3D1+%5D%0ALabels%3A%0A+-+alertname+%3D+ThreemaAlert%0AAnnotations%3A%0ASource%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2FUID_ThreemaAlert%2Fedit%0ASilence%3A+http%3A%2F%2Flocalhost%3A3000%2Falerting%2Fsilence%2Fnew%3Falertmanager%3Dgrafana%26matchers%3Dalertname%253DThreemaAlert%0A%0A%2AURL%3A%2A+http%3A%2Flocalhost%3A3000%2Falerting%2Flist%0A&to=abcdefgh`,
}, },
"victorops_recv/victorops_test": { "victorops_recv/victorops_test": {
`{ `{
@ -2385,14 +2394,14 @@ var expNonEmailNotifications = map[string][]string{
"entity_id": "633ae988fa7074bcb51f3d1c5fef2ba1c5c4ccb45b3ecbf681f7d507b078b1ae", "entity_id": "633ae988fa7074bcb51f3d1c5fef2ba1c5c4ccb45b3ecbf681f7d507b078b1ae",
"message_type": "CRITICAL", "message_type": "CRITICAL",
"monitoring_tool": "Grafana v", "monitoring_tool": "Grafana v",
"state_message": "**Firing**\n\nLabels:\n - alertname = VictorOpsAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_VictorOpsAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DVictorOpsAlert\n", "state_message": "**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = VictorOpsAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_VictorOpsAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%%3DVictorOpsAlert\n",
"timestamp": %s "timestamp": %s
}`, }`,
}, },
"opsgenie_recv/opsgenie_test": { "opsgenie_recv/opsgenie_test": {
`{ `{
"alias": "47e92f0f6ef9fe99f3954e0d6155f8d09c4b9a038d8c3105e82c0cee4c62956e", "alias": "47e92f0f6ef9fe99f3954e0d6155f8d09c4b9a038d8c3105e82c0cee4c62956e",
"description": "[FIRING:1] OpsGenieAlert \nhttp://localhost:3000/alerting/list\n\n**Firing**\n\nLabels:\n - alertname = OpsGenieAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_OpsGenieAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DOpsGenieAlert\n", "description": "[FIRING:1] OpsGenieAlert \nhttp://localhost:3000/alerting/list\n\n**Firing**\n\nValue: [ var='A' labels={} value=1 ]\nLabels:\n - alertname = OpsGenieAlert\nAnnotations:\nSource: http://localhost:3000/alerting/UID_OpsGenieAlert/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DOpsGenieAlert\n",
"details": { "details": {
"url": "http://localhost:3000/alerting/list" "url": "http://localhost:3000/alerting/list"
}, },

View File

@ -207,8 +207,13 @@ text-decoration: underline;
{{Subject .Subject "{{.Title}}"}} {{Subject .Subject "{{.Title}}"}}
{{ define "alert" }} {{ define "alert" }}
</td></tr><tr style="vertical-align: top; padding: 0;" align="left">
<td colspan="2" class="value" style="word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; color: #222222; font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; margin: 0; padding: 24px 0 0;" align="left" valign="top">
<span class="value-heading" style="font-weight: bold;">Value:</span> <span class="value-value" style="padding-left: 8px;">{{ .ValueString }}</span>
</td>
</tr>
{{ if gt (len .Annotations.SortedPairs) 0 }} {{ if gt (len .Annotations.SortedPairs) 0 }}
</td></tr><tr style="vertical-align: top; padding: 0;" align="left"> <tr style="vertical-align: top; padding: 0;" align="left">
<td colspan="2" class="annotations" style="word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; color: #222222; font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; margin: 0; padding: 24px 0 12px;" align="left" valign="top"> <td colspan="2" class="annotations" style="word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; color: #222222; font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; margin: 0; padding: 24px 0 12px;" align="left" valign="top">
{{ range .Annotations.SortedPairs }} {{ range .Annotations.SortedPairs }}
<p style="color: #222222; font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; margin: 0 0 10px; padding: 0;" align="left"><span class="annotations-heading" style="font-weight: bold; text-transform: capitalize;">{{ .Name }}:</span> <span class="annotations-value" style="padding-left: 8px;">{{ .Value }}</span></p> <p style="color: #222222; font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; margin: 0 0 10px; padding: 0;" align="left"><span class="annotations-heading" style="font-weight: bold; text-transform: capitalize;">{{ .Name }}:</span> <span class="annotations-value" style="padding-left: 8px;">{{ .Value }}</span></p>