本章是在上一篇文档的一个续篇

Prometheus使用alertmanager设置邮箱告警(5)-CSDN博客文章浏览阅读833次,点赞25次,收藏14次。Prometheus 会一直盯着我们设定的各种指标和数据,就好像是在站岗放哨。当这些指标的数据达到了我们事先规定的某个不太好的状态,比如服务器负载过高、某个服务出错等等,它就会发出警报。这些警报会被送到一个叫 Alertmanager 的地方,它就像是个“警报管理员”,会把这些警报整理好,按照我们要求的方式,比如发邮件、在系统里弹窗等,告诉相关的人,让大家知道出问题啦,需要赶紧去处理。这样我们就能及时发现和应对可能出现的各种状况。icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_72819498/article/details/139062211

看到上边默认发送的邮件模板,虽然所有核心的信息已经包含了,但是一般人看起来很费劲,那么,AlertManager 也是支持自定义邮件模板配置的使邮件格式内容可以更优雅直观一些

注意:钉钉需要部署prometheus-webhook-dingtalk,这个也是支持模板的,但是模板要写在prometheus-webhook-dingtalk里,而不是alertmanager


项目链接:

https://github.com/timonwong/prometheus-webhook-dingtalk

通过配置templates参数,指定模板位置。

1.首先新建一个模板文件 email.tmpl

[root@prometheus ~]# mkdir -p /usr/local/prometheus/alertmanager/template/

[root@prometheus ~]# vim /usr/local/prometheus/alertmanager/template/email.tmpl

##需写发送方和接受方的邮箱号

{{ define "email.from" }}1374815945@qq.com{{ end }}

{{ define "email.to" }}13521707413@163.com{{ end }}

{{ define "email.to.html" }}

{{ range .Alerts }}

=========start==========<br>

告警程序: prometheus_alert <br>

告警级别: {{ .Labels.severity }} 级 <br>

告警类型: {{ .Labels.alertname }} <br>

故障主机: {{ .Labels.instance }} <br>

告警主题: {{ .Annotations.summary }} <br>

告警详情: {{ .Annotations.description }} <br>

触发时间: {{ .StartsAt.Format "2019-08-04 16:58:15" }} <br>

=========end==========<br>

{{ end }}

{{ end }}

解释:

define: 定义模板名称
range: 循环遍历
index: 通过key取值

2.更改alertmanager主配增加模版

[root@prometheus ~]# vim /usr/local/prometheus/alertmanager/alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_from: '1344435945@qq.com'
  smtp_auth_username: '1344435945@qq.com'
  smtp_auth_password: 'uajwyvyxlfsoidbh'
  smtp_require_tls: false
templates:
  - '/usr/local/prometheus/alertmanager/template/*.tmpl'
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
  - name: 'web.hook'
    email_configs:
    - to: '{{ template "email.to" . }}'
      html: '{{ template "email.to.html" . }}'
      send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
equal: ['alertname', 'dev', 'instance']

3.重启alertmanager使其生效

[root@prometheus ~]# systemctl restart alertmanager

[root@prometheus ~]# systemctl status alertmanager

查看状态是否正常,如果不正常则要仔细检查刚才修改处是否有误(yml格式比较严格多一个空格也不行)

4.触发告警查看新模版

相比于开头的告警消息这个模版还是比较清晰的,看起来一目了然

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐