要在Linux/CentOS服务器中监控CPU、内存、磁盘及中间件(如数据库、应用服务器等)的状态,并通过钉钉机器人进行告警,你可以使用以下步骤和示例代码:
安装钉钉机器人:
首先,你需要在钉钉官网上创建一个机器人,并获取其Webhook地址。
编写监控脚本:
使用Shell脚本或Python脚本来检查服务器资源使用情况。
以下是一个使用Shell脚本监控系统资源并发送告警到钉钉机器人的示例:
#!/bin/bash
# 钉钉机器人Webhook地址
DINGTALK_WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
# 监控CPU使用率
cpu_usage=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2 + $4}')
if (( cpu_usage > 80 )); then
curl -s -S -H 'Content-Type: application/json' -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"CPU使用率超过80%\"}}" $DINGTALK_WEBHOOK_URL
fi
# 监控内存使用情况
free_memory=$(free -m | grep Mem: | awk '{print $4}')
if (( free_memory < 1024 )); then
curl -s -S -H 'Content-Type: application/json' -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"剩余内存小于1024MB\"}}" $DINGTALK_WEBHOOK_URL
fi
# 监控磁盘空间
disk_usage=$(df -h | grep '/$' | awk '{print $5}' | cut -d '%' -f 1)
if (( disk_usage > 80 )); then
curl -s -S -H 'Content-Type: application/json' -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"磁盘空间超过80%\"}}" $DINGTALK_WEBHOOK_URL
fi
# 监控中间件(以MySQL为例)
mysql_status=$(mysqladmin -u username -p'password' ping | grep -c alive)
if [ "$mysql_status" -eq 0 ]; then
curl -s -S -H 'Content-Type: application/json' -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"MySQL服务宕机\"}}" $DINGTALK_WEBHOOK_URL
fi
将上述脚本保存为monitor.sh
,并给予执行权限:
chmod +x monitor.sh
定时执行监控脚本:
使用
cron
定时执行监控脚本。
# 编辑cron任务列表
crontab -e
# 添加以下行以每5分钟执行一次监控脚本
*/5 * * * * /path/to/monitor.sh
确保你已经替换了所有的YOUR_ACCESS_TOKEN
为钉钉机器人的实际access_token
。
这个脚本会检查CPU、内存、磁盘和中间件状态,并在超过阈值时通过钉钉机器人发送告警。你可以根据需要监控其他资源或中间件,并调整阈值和监控频率。