侧边栏壁纸
  • 累计撰写 208 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

prometheus 实现slack的监控告警

Wake
2022-08-31 / 0 评论 / 1 点赞 / 1,098 阅读 / 708 字

目前官方内置的第三方通知集成包括:邮件、 即时通讯软件(如Slack、Hipchat)、移动应用消息推送(如Pushover)和自动化运维工具(例如:Pagerduty、Opsgenie、Victorops)。Alertmanager的通知方式中还可以支持Webhook,通过这种方式开发者可以实现更多个性化的扩展支持。

1.Alertmanager 集成 Slack 告警

Slack 作为 IM 办公软件,简单好用,在国外用的特别多,那如何用它来接收 Prometheus 的告警信息。

1.注册slack账号,并创建一个#test频道
地址:https://slack.com/intl/en-cn/

image-1661948561220
Slack作为一款即时通讯工具,协作沟通主要通过Channel(平台)来完成,用户可以在企业中根据用途添加多个Channel,并且通过Channel来集成各种第三方工具。Slack的强大之处在于在Channel中添加各种第三方服务的集成,用户也可以基于Slack开发自己的聊天机器人来实现一些更高级的能力,例如自动化运维,提高开发效率等。

2.为 #test 频道创建一个 incomming webhooks 应用。

image-1661948609435
添加成功后Slack会显示Incoming WebHooks配置和使用方式,拷贝 app webhook 地址,后面会用到。

https://hooks.slack.com/services/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

用户只需要使用Post方式向Channel发送需要通知的消息即可,例如,我们可以在命令行中通过curl模拟一次消息通知:

curl -d "payload={'text': 'Channel test.'}" https://hooks.slack.com/services/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

image-1661948674845
3.在Alertmanager中使用Slack
相关文档:https://api.slack.com/messaging/webhooks 全局申明:在Alertmanager的全局配置中

global:
        slack_api_url: https://hooks.slack.com/services/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

这里我们使用在每个receiver中单独钉子自己的slack_configs,方便后面业务的扩展

route:
      group_by: ["alertname"]
      group_wait: 1m
      group_interval: 5m
      repeat_interval: 1h
      receiver: "test-alert"
      routes:
         - match:
            channel: "slack-test"  #这个channel号在prometheus告警规则进行设置用作匹配
            severity: "warning"     #这个也是在prometheus告警规则中设置的用作匹配
          receiver: "slack-alert-test"
          repeat_interval: 2h

receivers:
   - name: 'slack-alert-test'
        slack_configs:
          - channel: '#alert-test'   #这个是slack的channel名称
            api_url: https://hooks.slack.com/services/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
            send_resolved: true
            title: '[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }}'
            text: |-
              {{ range .Alerts }}
              *Graph:* <http://xxxx.xxx.xxx.xxx/d/Bkl9bBYik/testr?orgId=1&var-job=testApplicationInstance-6&var-node=192.168.1.2:9100&var-maxmount=%2Fx02&var-nic=eth0|:chart_with_upwards_trend:>
              *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}`
              *Description:* {{ .Annotations.description }}

              *Details:*
                {{ range .Labels.SortedPairs }}{{ if eq .Value "192.168.1.2:10255" }}• *abc:* `test_name`{{ else }} • *{{ .Name }}:* `{{ .Value }}`{{ end }}
                {{ end }}
              {{ end }}
            short_fields: true

image-1661948754899

1

评论区