Zabbix监控"Agent离线"原因排查与自动恢复脚本
一、常见离线原因排查
-
网络连接问题
- 使用
telnet验证端口连通性:telnet <agent_ip> 10050 - 检查防火墙规则:
iptables -L -n | grep 10050
- 使用
-
Agent服务状态
- 检查服务运行状态:
systemctl status zabbix-agent - 查看日志定位错误:
journalctl -u zabbix-agent -n 50 --no-pager
- 检查服务运行状态:
-
配置文件错误
- 关键配置项验证:
Server=<zabbix_server_ip> # 主动模式指向Server ServerActive=<zabbix_server_ip> # 被动模式指向Server Hostname=<本机注册的主机名>
- 关键配置项验证:
-
资源瓶颈
- 检查CPU/内存占用:
top -b -n 1 | grep zabbix_agent
- 检查CPU/内存占用:
二、自动恢复脚本(Linux)
#!/bin/bash
# 自动恢复Zabbix Agent脚本
LOG_FILE="/var/log/zabbix_agent_recovery.log"
AGENT_SERVICE="zabbix-agent"
# 检测Agent进程状态
if ! systemctl is-active --quiet $AGENT_SERVICE; then
echo "[$(date +'%F %T')] Agent离线,尝试重启..." >> $LOG_FILE
systemctl restart $AGENT_SERVICE >> $LOG_FILE 2>&1
# 验证重启结果
if systemctl is-active --quiet $AGENT_SERVICE; then
echo "[$(date +'%F %T')] 重启成功" >> $LOG_FILE
else
echo "[$(date +'%F %T')] 重启失败!需要人工干预" >> $LOG_FILE
# 发送邮件告警(需配置mailx)
echo "Zabbix Agent恢复失败" | mail -s "紧急告警" admin@example.com
fi
fi
三、关键避坑指南
-
权限陷阱
- 脚本需添加执行权限:
chmod +x /path/to/script.sh - 避免使用
root直接运行,建议通过zabbix用户调用sudo授权
- 脚本需添加执行权限:
-
日志轮转
添加logrotate配置防止日志膨胀:/var/log/zabbix_agent_recovery.log { weekly rotate 4 compress missingok } -
自保护机制
添加重启频率限制,避免频繁重启:# 在重启前检查最近重启时间 LAST_RESTART=$(grep "重启成功" $LOG_FILE | tail -1 | cut -d' ' -f1,2) MIN_INTERVAL=300 # 5分钟间隔 -
被动模式陷阱
当使用被动模式时,需在Server端配置:-- 修改监控项类型为Zabbix agent UPDATE items SET type=0 WHERE hostid=<your_hostid>;
四、Windows环境补充
- 使用PowerShell检测服务状态:
Get-Service -Name "Zabbix Agent" | Select Status - 恢复命令:
Restart-Service -Name "Zabbix Agent" -Force
重要提示:自动恢复脚本仅解决临时性故障,对于配置错误或网络中断等根本性问题,仍需结合监控日志进行深度排查。建议将脚本加入cron计划任务,每5分钟执行一次:
*/5 * * * * /path/to/script.sh
2172

被折叠的 条评论
为什么被折叠?



