企业微信消息推送服务器故障实时告警通知配置

服务器出现故障时,如果没人立刻知道,一个小问题可能拖成大事故。
通过企业微信的消息推送功能,配合一个简单的Shell脚本,就能让故障告警实时发到你手机上。
下面按零基础可操作的方式,一步步讲清楚怎么配。

准备工作:创建企业微信群机器人

告警通知依赖企业微信的“群机器人”能力。
你需要先有一个企业微信账号,然后创建一个群聊(可以只拉自己一个人),接着在群聊中添加机器人。

操作路径:打开企业微信 → 进入群聊 → 点击右上角“… → 群机器人 → 添加机器人 → 给机器人起名(比如“服务器告警”)→ 确定 → 复制Webhook地址。

这个Webhook地址是一个URL,格式类似 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?
key=xxxx

保存好,后面脚本里要用。

核心配置:编写服务器监控脚本

监控脚本的作用是定期检查服务器关键指标,当指标异常时,通过curl命令把告警消息发送到企业微信。

创建一个脚本文件,比如 /opt/server_monitor.sh,内容如下:

#!/bin/bash

# 企业微信机器人Webhook地址
WEBHOOK_URL="你的Webhook地址"

# 检测CPU使用率(超过90%告警)
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
if (( $(echo "$CPU_USAGE > 90" | bc -l) )); then
    curl -s -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"⚠️ CPU告警:使用率已超过90%,当前:'$CPU_USAGE'%"}}' $WEBHOOK_URL
fi

# 检测内存使用率(超过90%告警)
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}' | cut -d'.' -f1)
if [ $MEM_USAGE -gt 90 ]; then
    curl -s -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"⚠️ 内存告警:使用率已超过90%,当前:'$MEM_USAGE'%"}}' $WEBHOOK_URL
fi

# 检测根分区磁盘使用率(超过85%告警)
DISK_USAGE=$(df -h / | awk 'NR==2{print $5}' | cut -d'%' -f1)
if [ $DISK_USAGE -gt 85 ]; then
    curl -s -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"⚠️ 磁盘告警:根分区使用率已超过85%,当前:'$DISK_USAGE'%"}}' $WEBHOOK_URL
fi

# 检测关键进程是否运行(以nginx为例)
if ! pgrep -x nginx > /dev/null; then
    curl -s -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"❌ 进程告警:nginx服务未运行"}}' $WEBHOOK_URL
fi

保存后,赋予执行权限:chmod +x /opt/server_monitor.sh

这个脚本默认只做检查,你要根据自己的服务器环境调整阈值和检测项(比如MySQL、Java进程等)。

避坑与优化:让告警稳定可靠

Webhook地址不要泄露

Webhook地址就像群聊的一个“钥匙”,任何人知道后都能往群里发消息。
不要把地址写在Git仓库或公开论坛中。
建议放在/opt之类的非Web可访问目录。

消息频率限制

企业微信机器人单条消息限制2KB,每分钟最多发20条。
如果脚本检测项多且都在同一时间触发,可能丢消息。
可以加个“告警去重”逻辑:比如用临时文件记录上次告警状态,避免重复发送。

脚本定时执行

手动运行一次 bash /opt/server_monitor.sh 测试没问题后,需要让它定期自动跑。
编辑crontab:crontab -e,添加一行:

*/5 * * * * /opt/server_monitor.sh

这样每5分钟检查一次。
如果服务器故障持续,每次检查都会发告警,请酌情调整间隔。

脚本执行日志

建议在脚本开头添加日志记录,方便排查:exec >> /var/log/server_monitor.log 2>&1
这样每次运行的结果都会写入日志,查错更容易。

效果验证:手动触发告警

执行脚本,人工制造一个故障来验证。
例如故意停止一个监控的进程:

systemctl stop nginx

然后马上运行脚本:bash /opt/server_monitor.sh
正常会在几秒内收到企业微信群的告警消息。

你也可以临时把CPU阈值调低(比如改成10%),然后运行大型任务(dd if=/dev/zero of=/dev/null &),观察是否触发CPU告警。

告警消息格式为文本,内容清晰明了。
收到消息后,意味着整套通知链路已通。

如果你在配置过程中遇到什么问题,可以先检查脚本是否可执行、Webhook地址是否正确、crontab服务是否运行(systemctl status cron)。
按照本文步骤操作,大多数情况下都能正常工作。

分享到:
上一篇
登录日志审计脚本筛查异常爆破账号及时拦截告警
下一篇
权重传递完整Nginx配置修复收录流失问题实操
1
系统公告

机房迁移升级通知

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