prometheus在警报注释中使用html内容并在电子邮件模板中使用它

时间:2016-04-20 06:28:13

标签: prometheus

所以我们的提醒看起来像

ALERT alert_name
   condition
   FOR 30s
   LABELS {some labels}
   ANNOTATIONS {
       header = "<b> data is {{ $labels.label_name }} </b>"
   }

电子邮件模板看起来像。

{{ define "our_default_template" }}
{{range .Alerts}}
{{ .Annotations.header }}
{{ end }}
{{ end }}

alertmanager.yml看起来像

receivers:
- name: 'email-sender'
  email_configs:
  - to: "email address"
    send_resolved: true
    html: '{{ template "our_default_template" . }}'

templates:
- '<path to templates>/*tmpl'

我们收到了电子邮件,但内容不对。

我们收到的邮件:

<b> data is label_value </b>

我们想要什么:

数据是label_value

所以我们想要的是html输出。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

首先,我建议不要在Prometheus端执行HTML,因为这可能会在系统发展过程中导致维护问题。

看起来Go的自动转义HTML就是这里发生的事情,所以你需要一种方法来告诉Go的模板语言这是安全的。警报管理器没有该功能(普罗米修斯),所以我已经为此提交了https://github.com/prometheus/alertmanager/issues/314

一旦修复,您就可以{{ .Annotations.header | safeHtml }}