钉钉/企业微信推送服务器故障告警:服务器故障告警推送配置

为什么需要给服务器配一个告警推送

服务器一旦出问题(如CPU过高、磁盘爆满、进程挂掉),如果能第一时间通过手机收到通知,就能快速响应。
钉钉和企业微信都支持通过机器人或应用发送消息,配置起来不算复杂,关键是要把步骤走对。
本文就把完整流程拆开,从注册机器人到写脚本、验证效果,一步步说清楚。

前置准备:你需要什么

  • 一台Linux服务器(本文以CentOS 7/8为例,命令通用)
  • 一个钉钉或企业微信账号,且拥有创建群机器人的权限(或企业微信应用管理权限)
  • 服务器能访问外网(机器人Webhook需要HTTP请求)
  • 基本的命令行操作能力(会复制粘贴、改文件)

在钉钉里创建群机器人

  1. 打开钉钉,进入任意一个群聊(建议新建一个“服务器告警”群)。
  2. 点击群设置 → 智能群助手 → 添加机器人 → 选择“自定义”(通过Webhook接入)。
  3. 给机器人起个名字,比如“告警小助手”,安全设置建议勾选“加签”(密钥),但为简化首次配置,可以先选择“自定义关键词”(例如输入“告警”),之后发送的消息必须包含该关键词才会被接收。
  4. 点击完成,会得到一个 Webhook地址,长这样:

https://oapi.dingtalk.com/robot/send?
access_token=xxxxxxxx

保存好这个地址。

在企业微信里创建机器人

  1. 登录企业微信管理后台,找到“应用管理” → “自建” → “创建应用”。
  2. 填写应用名称(如“服务器告警”)、可见范围(选自己或整个部门)。
  3. 创建成功后,进入应用详情,找到 Webhook 一栏,点击“配置” → 选择“启用”,复制生成的URL:

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?
key=xxxx-xxxx-xxxx

注意:企业微信的Webhook URL结构里是 key=...,不是 access_token

写Shell脚本发送告警消息

不管是钉钉还是企业微信,本质都是向一个HTTP地址发送JSON格式的消息。
我们可以写一个通用脚本,通过参数选择发送到哪个渠道。

新建文件 /usr/local/bin/server_alert.sh,内容如下:

#!/bin/bash

# 钉钉和企业微信的Webhook地址(请替换为你的实际地址)
DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=你的token"
WECHAT_WEBHOOK="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key"

# 消息内容(必须包含关键词“告警”才能触发钉钉机器人)
MESSAGE="【服务器告警】服务器 $(hostname) 出现异常,请立即检查。时间:$(date '+%Y-%m-%d %H:%M:%S')"

# 钉钉消息格式(Markdown类型)
DINGTALK_PAYLOAD="{
  \"msgtype\": \"markdown\",
  \"markdown\": {
    \"title\": \"服务器告警\",
    \"text\": \"$MESSAGE\"
  }
}"

# 企业微信消息格式(文本类型)
WECHAT_PAYLOAD="{
  \"msgtype\": \"text\",
  \"text\": {
    \"content\": \"$MESSAGE\"
  }
}"

# 发送到钉钉
curl -s -H "Content-Type: application/json" -d "$DINGTALK_PAYLOAD" "$DINGTALK_WEBHOOK"

# 发送到企业微信
curl -s -H "Content-Type: application/json" -d "$WECHAT_PAYLOAD" "$WECHAT_WEBHOOK"

echo "告警消息已发送"

给脚本执行权限:

chmod +x /usr/local/bin/server_alert.sh

测试运行:

bash /usr/local/bin/server_alert.sh

如果配置正确,钉钉和企业微信都会收到一条消息。

集成到监控工具中

实际运用时,你可以在以下场景自动调用这个脚本:

  • 磁盘使用率告警:在crontab里每隔5分钟执行检测脚本,超过阈值就调用 server_alert.sh
  • 进程守护:在systemd服务中,如果服务重启失败,触发告警。
  • 配合Zabbix/Prometheus:在告警动作中配置运行此脚本。

以最简单的磁盘监控为例,在crontab中添加:

# 每5分钟检查磁盘使用率,超过80%就告警
*/5 * * * * df -h | grep -E '^/dev/' | awk '{if (NR>1 && $5+0 > 80) system("/usr/local/bin/server_alert.sh")}'

避坑与高频问题解答

Q1:钉钉机器人说“消息内容未包含关键词”
检查消息文本是否包含你在安全设置里指定的关键词(本文示例是“告警”),注意全半角标点。最好通过 echo $MESSAGE 查看实际内容。

Q2:企业微信返回错误“不合法的消息类型”
检查payload中的 msgtype 是否支持。企业微信文本类型必须为“text”,不能是“markdown”(除非你特意用了markdown类型)。本文用的是文本类型。

Q3:curl请求无响应或超时
确认服务器能访问外网:ping oapi.dingtalk.com。如果无法访问,检查防火墙或DNS。也可以尝试在curl命令后面加上 --connect-timeout 10 设置超时。

Q4:消息发得太频繁被限流
钉钉和企业微信对单个机器人都有频率限制(如钉钉每分钟20条)。如果你的告警脚本触发太频繁,可以在脚本里加一个速率控制,比如每次发送后 sleep 2 秒,或者使用简单的计数锁。

Q5:不想暴露Token在脚本里?
可以把Webhook地址存成环境变量,或者使用配置文件(权限设为600)。例如:

# 在脚本开头
source /etc/server_alert.conf

然后将实际地址写进 /etc/server_alert.conf,并设置 chmod 600

如何验证告警能真正通知到你

  1. 手动运行脚本一次,检查手机是否收到消息。
  2. 模拟一个故障:比如故意创建一个大文件占满磁盘(不要在生产环境做)、或者停掉一个关键进程。
  3. 触发告警后,确认消息中的内容(主机名、时间)正确。
  4. 如果有多人需要接收,可以在钉钉群里添加机器人(所有群成员都能收到),或者企业微信将应用推送给指定成员。

总结

钉钉和企业微信的服务器故障告警配置核心就是:获取Webhook地址 → 构造JSON消息 → 用curl发送。
本文提供的脚本可以直接拿来用,配合crontab或监控工具就能实现自动化通知。
如果你在实际操作中遇到其他问题,建议先检查网络连通性、消息格式和机器人安全设置,大部分问题都出在这三点上。

分享到:
上一篇
FFmpeg视频处理外贸产品展示页面
下一篇
用户权限分级隔离防止误删站点数据的实战步骤
1
系统公告

机房迁移升级通知

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