一、通过 ICMP Ping 监控主机可用性
1. 启用 ICMP Ping 检查
# 编辑 Zabbix Server 配置
vim /etc/zabbix/zabbix_server.conf
# 确保以下配置存在
StartPingers=5 # ICMP pinger 进程数(建议为被监控主机数的1/10)
2. 使用默认模板(推荐)
登录 Zabbix Web → 配置 → 主机
选择要监控的主机
在
模板 标签页,添加:
Template Module ICMP Ping
点击
添加 →
更新
3. 自定义 ICMP Ping 监控
创建监控项
配置 →
主机 → 选择主机 →
监控项 →
创建监控项
填写参数:
名称:ICMP Ping
类型:简单检查
键值:icmpping
主机接口:填写目标IP或DNS
更新时间:30s
创建触发器
配置 →
主机 → 选择主机 →
触发器 →
创建触发器
示例配置:
名称:主机不可达
表达式:{host:icmpping.max(#3)}=0
严重性:灾难
(连续3次检测失败触发)
二、通过 Agent Ping 监控(无需 ICMP 权限)
1. 使用 fping 工具
# 在被监控主机安装 fping
# Ubuntu/Debian
sudo apt-get install fping
# CentOS/RHEL
sudo yum install fping
2. 创建 UserParameter
# 编辑 Zabbix Agent 配置文件
vim /etc/zabbix/zabbix_agentd.conf
# 添加自定义参数
UserParameter=ping.to.target[*],fping -c 3 -q $1 2>&1 | awk -F'/' 'NR==1{print $8}'
3. 创建监控项
Zabbix Web → 配置 → 主机 → 监控项 → 创建监控项
配置:
名称:Ping to Google
类型:Zabbix客户端
键值:ping.to.target[8.8.8.8]
信息类型:浮点数
单位:ms
三、使用 Zabbix Agent 的 net.tcp.service 监控
监控特定端口
# 创建监控项
名称:Ping via TCP Port
类型:Zabbix客户端
键值:net.tcp.service[tcp,,80]
# 返回1表示可达,0表示不可达
四、批量配置方法
1. 使用自动发现规则
配置 →
自动发现 →
创建发现规则
使用 ICMP ping 扫描网络:
名称:Network Discovery
类型:ICMP ping
IP范围:192.168.1.1-254
延迟:1h
2. 使用动作关联模板
配置 →
动作
创建动作:
- 事件源:自动发现
- 条件:服务类型 = ICMP ping
- 操作:关联模板 "Template Module ICMP Ping"
五、监控项详解
ICMP Ping 相关键值:
icmpping - 是否可达(1/0)
icmppingloss - 丢包率(%)
icmppingsec - 响应时间(秒)
高级参数:
icmpping[<target>,<packets>,<interval>,<size>,<timeout>]
# 示例:
icmpping[192.168.1.1,5,1000,64,3000]
六、故障排除
常见问题:
权限问题:
# 设置 fping 权限
chmod 4710 /usr/bin/fping
chown root:zabbix /usr/bin/fping
SELinux 问题(CentOS/RHEL):
setsebool -P zabbix_can_network=1
测试 ICMP 功能:
sudo -u zabbix fping 8.8.8.8
调试步骤:
# 查看 Zabbix Server 日志
tail -f /var/log/zabbix/zabbix_server.log
# 测试监控项
zabbix_get -s 127.0.0.1 -k icmpping[8.8.8.8]
七、最佳实践建议
监控频率:
阈值设置:
- 丢包率 > 5%:警告
- 延迟 > 100ms(内部)/ 200ms(外部):警告
依赖关系:
- 设置触发器依赖,避免级联报警
- 如:路由器宕机,下游主机不应单独报警
分布式监控:
- 跨地域使用 Zabbix Proxy
- 本地执行 ping 检测
这样配置后,Zabbix 就可以有效监控主机的网络连通性了。