【Prometheus专题】4. Prometheus通过webhook集成Slack或Mattermost发送告警

prometheus目前支持众多告警集成,最为常见的就是邮件和企业微信,有些公司也会一些特殊的需求,会发送告警到自己的Chat私服的聊天频道(其实就是个群组),这样就可以及时通知到相关人员。

Slack可能用的人不是很多,关于Slack的详细情况,使用过的人可能不需要再多了解了,没用过的人可能还得看看,确实是还挺好用的。Mattermost可以认为是个Slack的内网私服版本,界面和功能上做了很大的改动,我所在的公司就在用这个,很直说,朝难用。

告警路由的配置部分我就不详细写了,可以关注上篇文章或者别人写的博客,我们只需要关注的是alertmanager的配置,我们在添加配置时一定要配全配置,不然默认发出的告警格式我们都不知道发了个啥。

首先是添加我们自定义的模板,

# pwd
/srv/app/alertmanager/template
# cat slack.tmpl
{{ define "custom_title" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}{{ end }}{{ end }}
{{ define "custom_slack_message" }}
{{ if or (and (eq (len .Alerts.Firing) 1) (eq (len .Alerts.Resolved) 0)) (and (eq (len .Alerts.Firing) 0) (eq (len .Alerts.Resolved) 1)) }}
{{ range .Alerts.Firing }}- {{ .Annotations.description }}{{ end }}{{ range .Alerts.Resolved }}- {{ .Annotations.description }}{{ end }}
{{ else }}
{{ if gt (len .Alerts.Firing) 0 }}
{{ range .Alerts.Firing }}- {{ .Annotations.identifier }} {{ .Annotations.description }}
{{ end }}{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
{{ range .Alerts.Resolved }}- {{ .Annotations.identifier }} {{ .Annotations.description }}
{{ end }}{{ end }}
{{ end }}
{{ end }}

然后我们修改alertmanager的配置,添加我们所需要的告警方式,配置正确的url与告警标题和内容模板,选好自己要发送的频道就可以了

receivers:
 - name: 'webhook-devops-team-alert'
   slack_configs:
   - api_url: 'https://hooks.slack.com/services/XXXXXXXXXXXX/YYYYYYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZ'  #修改为自己创建的webhook
     channel: '#devops'
     send_resolved: true
     title: '{{ template "custom_title" . }}'
     text: '{{ template "custom_slack_message" . }}'

总的讲,Slack和Mattermost差别不是很大,两边的配置几乎一样,只是Mattermost不需要指定channel名,我们只需要在创建webhook时指定对的名称就可以了。

告警的截图我就从Mattermost截取了,差别不是很大

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章