zoukankan      html  css  js  c++  java
  • 【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截取了,差别不是很大

  • 相关阅读:
    OAuth
    PHP获取客户端的真实IP
    负载均衡----实现配置篇(Nginx)
    在线时间戳转换
    使用curl进行模拟登录
    定时任务
    Matplotlib使用教程
    CentOS7.X安装PHP
    Python虚拟环境的搭建与使用
    CentOS7.X安装openssl
  • 原文地址:https://www.cnblogs.com/DevOpsTechLab/p/14041962.html
Copyright © 2011-2022 走看看