企业微信/钉钉机器人告警配置(替换邮件告警)
以下提供 企业微信/钉钉机器人告警 的完整配置流程,含机器人创建、Shell脚本改造、定时任务设置,适配园区运维实时接收存储告警,操作简单可直接复用。
一、企业微信群机器人配置(推荐,无安全关键词限制)
1. 创建机器人并获取Webhook
- 打开企业微信群,点击右上角 群设置 → 群机器人 → 添加机器人。
- 选择 新建一个机器人 ,输入名称(如"园区存储告警机器人"),点击 添加。
- 复制生成的Webhook地址(格式:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx),保存备用。 - (可选)设置IP白名单(群机器人→配置→IP白名单),填入服务器公网IP,提升安全性。
2. Shell脚本改造(替换邮件告警为企微机器人)
修改 disk_monitor_alert.sh 中告警配置,新增企微发送函数:
bash
#!/bin/bash
# 磁盘监控告警脚本(企业微信机器人版)
# 核心配置(重点修改)
MONITOR_DIR="/data/park/record"
ALERT_THRESHOLD=85
LOG_FILE="/data/park/logs/disk_monitor.log"
WECHAT_WEBHOOK="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的企微机器人key" # 替换为实际Webhook
ENABLE_WECHAT_ALERT=1 # 启用企微告警:1=启用,0=禁用
# 新增:发送企微告警函数
send_wechat_alert() {
local alert_msg=$1
# 构造企微Markdown消息体
local payload=$(cat <<EOF
{
"msgtype": "markdown",
"markdown": {
"content": "### ⚠️ 智慧园区存储告警\n\n**时间**:$(date +'%Y-%m-%d %H:%M:%S')\n**磁盘分区**:${DISK_PART}\n**总空间**:${DISK_TOTAL}\n**剩余空间**:${DISK_FREE}\n**使用率**:${DISK_USAGE}%\n**阈值**:${ALERT_THRESHOLD}%\n**影响**:可能导致录制失败、AI预处理中断,请及时清理!"
}
}
EOF
)
# 发送POST请求
curl -s -X POST -H "Content-Type: application/json" -d "${payload}" ${WECHAT_WEBHOOK} >> ${LOG_FILE} 2>&1
echo "$(date +'%Y-%m-%d %H:%M:%S') - 企微告警已发送至群聊" >> ${LOG_FILE}
}
# 以下为原有逻辑,仅修改告警触发部分
# ...(磁盘使用率获取等原有代码不变)
# 触发告警时调用企微函数
if [ ${DISK_USAGE} -ge ${ALERT_THRESHOLD} ]; then
alert_msg="【告警】磁盘使用率超过阈值..."
# 写入告警日志(不变)
# ...
# 调用企微告警(替换邮件)
if [ ${ENABLE_WECHAT_ALERT} -eq 1 ]; then
send_wechat_alert "${alert_msg}"
fi
fi
3. 测试与验证
- 赋予权限:
chmod +x disk_monitor_alert.sh。 - 手动执行测试:
./disk_monitor_alert.sh,查看企微群是否收到告警。 - 查看日志:
tail -f /data/park/logs/disk_monitor.log,确认发送状态。
二、钉钉群机器人配置(备选,需设置关键词)
1. 创建机器人并获取Webhook
- 打开钉钉群,点击右上角 群设置 → 智能群助手 → 添加机器人 → 自定义机器人。
- 输入名称,安全设置选择 自定义关键词 ,添加关键词(如"告警""园区"),点击 完成。
- 复制Webhook地址(格式:
https://oapi.dingtalk.com/robot/send?access_token=xxx),保存备用。
2. Shell脚本改造(钉钉版)
修改 disk_monitor_alert.sh,替换为钉钉发送函数:
bash
#!/bin/bash
# 磁盘监控告警脚本(钉钉机器人版)
# 核心配置
MONITOR_DIR="/data/park/record"
ALERT_THRESHOLD=85
LOG_FILE="/data/park/logs/disk_monitor.log"
DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=你的钉钉机器人token" # 替换为实际Webhook
ENABLE_DINGTALK_ALERT=1 # 启用钉钉告警:1=启用,0=禁用
# 新增:发送钉钉告警函数
send_dingtalk_alert() {
local alert_msg=$1
# 构造钉钉Markdown消息体(必须包含安全关键词)
local payload=$(cat <<EOF
{
"msgtype": "markdown",
"markdown": {
"title": "园区存储告警",
"text": "### ⚠️ 智慧园区存储告警(关键词:告警)\n\n**时间**:$(date +'%Y-%m-%d %H:%M:%S')\n**磁盘分区**:${DISK_PART}\n**总空间**:${DISK_TOTAL}\n**剩余空间**:${DISK_FREE}\n**使用率**:${DISK_USAGE}%\n**阈值**:${ALERT_THRESHOLD}%"
}
}
EOF
)
curl -s -X POST -H "Content-Type: application/json" -d "${payload}" ${DINGTALK_WEBHOOK} >> ${LOG_FILE} 2>&1
echo "$(date +'%Y-%m-%d %H:%M:%S') - 钉钉告警已发送至群聊" >> ${LOG_FILE}
}
# 触发告警时调用钉钉函数
if [ ${DISK_USAGE} -ge ${ALERT_THRESHOLD} ]; then
# ...(日志记录不变)
if [ ${ENABLE_DINGTALK_ALERT} -eq 1 ]; then
send_dingtalk_alert "${alert_msg}"
fi
fi
三、关键配置与测试要点
1. 依赖与权限
- 确保服务器安装
curl(sudo apt install curl/sudo yum install curl)。 - 脚本执行用户需有网络访问权限(可访问企微/钉钉API)。
- 测试网络连通性:
curl -I ${WECHAT_WEBHOOK},返回200状态码即正常。
2. 告警效果验证
-
手动触发测试(临时修改阈值为1%):
bashALERT_THRESHOLD=1 ./disk_monitor_alert.sh -
检查群聊是否收到Markdown格式告警,日志是否记录发送成功。
3. 定时任务保持不变
bash
# 每30分钟执行一次磁盘监控
*/30 * * * * /data/park/scripts/disk_monitor_alert.sh
四、扩展与优化
- 告警降噪:新增"静默周期"(如1小时内只告警1次),避免重复通知。
- 多渠道联动:同时启用企微+钉钉告警,提升通知可靠性。
- 恢复通知:新增磁盘使用率降至阈值以下时的"恢复通知",便于运维确认问题解决。