1. 启动 webhook 服务

需要启动一个 http 服务:接收 alertmanager 发出来的告警消息,消息二次处理(自定义分组、markdown格式消息拼接等),然后再发送到钉钉自定义机器人。
github 上有现成的可用,但注意钉钉自定义机器人一般会有安全配置:

  • 关键词:包含关键词的消息才会被处理;
  • 加签:webhook 服务中需做加签处理,加签方式查看钉钉自定义机器人官网即可;
  • IP 地址限制。
    image.png

钉钉机器人告警消息的一个结果:
image.png

2. 添加 AlertmanagerConfig 配置

在 kube-prometheus-stack 中,Alertmanager 的告警发送相关配置同样被抽象为 CRD
alertmanagerconfigs.monitoring.coreos.com 实例对象。
一个示例:

  1. apiVersion: monitoring.coreos.com/v1alpha1
  2. kind: AlertmanagerConfig
  3. metadata:
  4. name: x-test-dingtalk
  5. namespace: monitoring
  6. spec:
  7. receivers:
  8. - name: x-dingtalk
  9. webhookConfigs:
  10. - url: http://${IP}:${PORT}/send # 接收告警消息的 webhook 服务 url
  11. sendResolved: true
  12. route:
  13. groupBy: ["job"]
  14. groupWait: 30s
  15. groupInterval: 5m
  16. repeatInterval: 10m # 测试时可配置间隔小一些
  17. receiver: x-dingtalk
  18. # match 详细配置参考 prometheus 官网及 CRD alertmanagerconfigs.monitoring.coreos.com 的定义
  19. matchers:
  20. - regex: true
  21. name: severity
  22. value: critical|warning|info
  23. receiver: x-dingtalk