前段时间遇到一个小问题,后来发现这是个挺常见的坑,顺手整理一篇笔记。
前言
监控再精准,告警推不到人就是白搭。Prometheus 配 Alertmanager 是云原生监控的经典组合,但 Alertmanager 原生不支持钉钉 Webhook,集成过程中踩坑是常事——消息格式乱、告警发不出去、恢复通知丢失,或者安全配置不当机器人被滥用。生产环境用不起来,等于没装。
解法是 prometheus-webhook-dingtalk,社区验证过的成熟中间件,打通 Prometheus 和钉钉之间的最后一公里。这篇就讲完整的链路:钉钉机器人创建、webhook 中间件部署、Alertmanager 路由策略、消息模板优化,全部生产级别可直接跑通。
1.为什么将Prometheus告警推送到钉钉?
将Prometheus告警推送到钉钉,不仅是技术集成的一步,更是提升团队运维效率与系统可靠性的关键实践。以下是几个核心原因:
1. 告警触达更及时,响应更迅速
钉钉作为国内企业广泛使用的即时通讯工具,几乎全员在线、消息必达。将告警直接推送至运维群或值班群,能确保坑在第一时间被看到,大幅缩短MTTR,避免小故障演变为大事故。
1. 统一告警入口,避免信息碎片化
传统方法可能依赖邮件、短信、Slack等多种渠道,容易造成告警分散、遗漏或重复处理。通过钉钉集中接收所有Prometheus告警,团队可在一个平台搞定告警确认、讨论与协同处置,提升协作效率。
1. 支持富文本与结构化展示,信息更清晰
借助prometheus-webhook-dingtalk等中间件,告警消息可渲染为卡片式富文本,清晰展示:
- 告警名称(如HighCPUUsage)
- 严重等级(critical / warning)
- 故障实例(instance=192.168.1.10:9100)
- 触发时间与持续时长
- 快速跳转链接(直达 Grafana或Prometheus UI)
1. 低成本、高可用的告警通道
相比短信或电话告警,钉钉推送零成本、无额度限制,且依托阿里云基础设施,服务稳定可靠。对于大多数非P0级别告警,钉钉是性价比极高的通知渠道。
2.前提条件
1. 本机已经部署prometheus和alertmanager
2. 具备一个可用的钉钉群,并拥有管理员权限
3. 可创建钉钉自定义机器人
4. 部署节点具备外网访问能力
5. Alertmanager与webhook服务网络互通
- Alertmanager所在主机一定要能通过HTTP/HTTPS访问prometheus-webhook-dingtalk服务的地址
- 若两者部署在同一主机,注意Docker网络隔离坑(避免使用127.0.0.1,建议用宿主机IP或Docker自定义网络)。
- Docker(推荐方法部署webhook服务)或systemd(二进制部署)
- curl / jq(用于测试API和解析JSON)
- 文本编辑器(如vim、nano)用于编写配置文件
示例:检查Docker是否安装
docker --version
3.prometheus配置alertmanager
进入到prometheus配置文件,编辑配置文件,按照如图设置:
编辑后,重启prometheus:
systemctl restart prometheus
4.获取钉钉Webhook URL
打开钉钉群 → 点击右上角设置:
找到智能群助手 → 添加机器人:
添加自定义机器人:
点击添加:
给机器人起个名字,我这里是“prometheus告警”:
设置发消息关键词,因为现在钉钉对安全严格,所以需要设置限制,,也可以设置加签或者IP地址:
点击搞定后,复制生成的Webhook,留着备用:
5.部署prometheus-webhook-dingtalk服务
创建配置文件dingtalk.yaml:
```
cat > dingtalk.yaml
就写这么多吧,内容比较基础,适合入门回顾。有补充的地方欢迎留言一起完善。
评论 (0)
暂无评论