钉钉企业微信接收服务器故障告警通知

核心答案:将服务器故障告警推送到钉钉和企业微信,只需两步

在服务器上配置告警通知,最实用的方式是通过群机器人接收 Webhook 消息。
无论使用 Prometheus + Alertmanager 还是直接写脚本调用 HTTP 接口,核心就三步:创建群机器人获取 Webhook URL → 在告警工具中配置该地址 → 触发告警验证消息到达
本文以零基础可操作为前提,覆盖准备、配置、避坑与验证全过程。

前置准备:确认环境与工具

  • 一台运行 Linux(如 CentOS 7 或 Ubuntu 20.04)的服务器,已部署 Prometheus 和 Alertmanager(或你熟悉的其它监控工具,如 Zabbix、Nagios 等)。
  • 一个钉钉群或企业微信群,有权限添加机器人。
  • 已在服务器上安装 curl 用于测试(大部分系统默认已安装)。

如果你还没有监控工具,可以先安装 Prometheus + Node Exporter,本文以 Alertmanager 为例。
若只想快速测试,也可以直接跳过监控工具,用 curl 手动模拟告警。

分步操作:钉钉及企业微信群机器人配置

1. 创建群机器人

  • 钉钉
  • 进入目标群 → 点击群设置 → 智能群助手 → 添加机器人 → 选择“自定义(通过Webhook接入)” → 填写机器人名称 → 安全设置选择“自定义关键词”(例如“告警”) → 保存后复制 webhook 地址。
  • 企业微信
  • 进入目标群 → 点击群设置 → 群机器人 → 添加机器人 → 自定义名字 → 获取 webhook 地址。

两个平台的 webhook 地址格式类似:

  • 钉钉:https://oapi.dingtalk.com/robot/send?access_token=xxx
  • 企业微信:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx

2. 配置 Alertmanager 发送到钉钉/企业微信

创建 Alertmanager 配置文件 alertmanager.yml,添加 webhook receiver。
以下为钉钉示例,企业微信只需修改 URL 和消息格式:

receivers:
- name: 'dingtalk'
  webhook_configs:
  - url: 'https://oapi.dingtalk.com/robot/send?access_token=你的token'
    send_resolved: true
    message: '{"msgtype": "markdown", "markdown": {"title": "服务器故障告警", "text": "### 告警详情\n- 告警名称:{{ .Alerts.Firing | len }} 个触发\n- 主机:{{ .GroupLabels.instance }}\n- 告警信息:{{ .Alerts.First.Labels.alertname }}\n- 当前值:{{ .Alerts.First.Annotations.value }}\n- 时间:{{ .Alerts.First.StartsAt \"2006-01-02 15:04:05\" }}"}}'

注意:钉钉 markdown 消息中的 \n 必须为实际换行符,此处为配置文件中的转义写法。
企业微信类似,但消息结构需改为:

{"msgtype": "markdown", "markdown": {"content": "您的告警内容"}}

重启 Alertmanager 使配置生效:

systemctl restart alertmanager

3. 不依赖监控工具的简易脚本方式

如果只想临时或简单发送告警,直接写一条 curl 命令即可:

  • 钉钉
  curl -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"服务器 CPU 超过 90%,请检查!"}}' 你的钉钉Webhook地址
  • 企业微信
  curl -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"服务器 CPU 超过 90%,请检查!"}}' 你的企业微信Webhook地址

将该命令嵌入你的监控脚本或 crontab 计划任务中,当故障条件满足时执行即可。

避坑指南:常见问题与处理

  1. Webhook URL 泄露风险:webhook 地址包含 token,任何人拿到都可以往群里发消息。务必妥善保管,不要在代码仓库中明文提交。建议通过环境变量或配置管理工具传入。
  2. 消息内容限制
  • 钉钉:单个消息 body 不能超过 20KB;markdown 消息中的图片必须为公网可访问的 HTTPS 链接。
  • 企业微信:文本消息最多 2048 字节;markdown 内容中图片也需 HTTPS,且有域名白名单限制。
  1. 安全设置不匹配:若钉钉机器人设置了“自定义关键词”,消息中必须包含该关键词(如“告警”),否则消息会被丢弃。企业微信没有关键词限制,但建议将 IP 地址加入白名单。
  2. Alertmanager 模板语法错误:在配置文件中写 JSON 时容易漏掉转义引号,建议先用 alertmanager --config.file=alertmanager.yml 验证配置。
  3. 频率限制:钉钉和企微对 Webhook 调用都有频率限制(钉钉 20 次/分钟,企业微信 3 次/秒),高并发场景需考虑限流或合并告警。

效果验证:模拟告警确认通知送达

  1. 手动触发一个告警(例如通过 Prometheus 的 amtool):
   amtool alert add alertname=TestCPU instance=你的服务器IP
  1. 或直接发送一条 curl 命令到 Alertmanager 的 API:
   curl -XPOST http://你的服务器IP:9093/api/v1/alerts -d '[{"labels":{"alertname":"test","instance":"192.168.1.1:9100"},"annotations":{"description":"手动测试告警","value":"95%"}}]'
  1. 等待几秒,查看钉钉/企业微信群是否收到告警消息。如果没有收到,检查:
  • webhook token 是否正确
  • 钉钉机器人安全设置是否满足(如关键词)
  • 服务器能否访问外网(ping oapi.dingtalk.com 或 qyapi.weixin.qq.com)
  • Alertmanager 日志:journalctl -u alertmanager -f

收到消息即表示配置成功。

常见问题解答(FAQ)

Q1:没有安装 Prometheus,能用钉钉接收告警吗?
可以。直接编写 Shell 脚本调用 curl 发送 HTTP POST 请求到 Webhook,结合 crontab 或自定义监控脚本即可实现故障告警。

Q2:钉钉和企业微信可以同时配置吗?
可以。在 Alertmanager 中定义多个 receiver,一条告警规则可同时发送到钉钉和企微(通过 routes 匹配多个接收者)。

Q3:消息中的换行和 Markdown 格式总是不对?
检查转义:在配置文件中 JSON 内的换行需用 \n,且外层双引号需用转义符 \"。建议先用在线 JSON 校验工具验证字符串合法性。

Q4:告警太多刷屏怎么办?
可以利用 Alertmanager 的 group_waitgroup_intervalrepeat_interval 参数合并告警,减少通知频率。群机器人没有聚合功能,需在发送端控制。

如果你正在配置服务器故障告警推送,建议优先按本文的 Alertmanager 思路搭建,灵活性和扩展性更强。
对于仅需简单通知的场景,直接使用脚本方式更快捷。
若服务器资源有限,可以考虑使用具备正规资质的云服务商(如泽御云,官网 https://www.zeyuyun.com)提供的基础监控与告警插件,进一步简化运维工作。

分享到:
上一篇
FFmpeg部署实现外贸产品视频在线预览
下一篇
Linux用户权限分级隔离防止误删站点数据
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意