说说《如何通过prometheus-webhook-dingtalk解决 Alertmanager 原生不支持钉钉 Webhook问题》

前段时间遇到一个小问题,后来发现这是个挺常见的坑,顺手整理一篇笔记。

前言

监控再精准,告警推不到人就是白搭。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自定义网络)。
1. 安装必要工具(用于部署与调试)
  • 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)

暂无评论