如何通过Zabbix监控VM硬编码IP与DNS解析IP的一致性?
解决Zabbix监控硬编码IP与DNS解析IP不一致的告警问题
步骤1:在目标VM上编写自定义检查脚本
在VM上创建Shell脚本,用于对比硬编码IP和DNS解析结果。示例脚本如下:
#!/bin/bash # 接收传入的域名和硬编码IP参数 TARGET_DOMAIN="$1" HARDCODED_IP="$2" # 获取域名的DNS解析IP(过滤出有效IPv4地址,取第一个结果) RESOLVED_IP=$(dig +short "$TARGET_DOMAIN" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -n1) # 处理DNS解析失败的情况(解析为空直接返回异常) if [ -z "$RESOLVED_IP" ]; then echo 1 exit 1 fi # 对比IP,返回状态码:0=一致,1=不一致 if [ "$RESOLVED_IP" = "$HARDCODED_IP" ]; then echo 0 else echo 1 fi
将脚本保存为/usr/local/bin/check_dns_hardcode.sh,并赋予执行权限:
chmod +x /usr/local/bin/check_dns_hardcode.sh
步骤2:配置Zabbix Agent自定义Key
编辑Zabbix Agent配置文件(通常路径为/etc/zabbix/zabbix_agentd.conf),添加自定义监控参数:
UserParameter=check.dns.hardcode[*],/usr/local/bin/check_dns_hardcode.sh "$1" "$2"
保存配置后重启Zabbix Agent服务:
systemctl restart zabbix-agent
步骤3:在Zabbix Web端创建监控项
- 进入Zabbix Web界面,找到目标主机,点击「监控项」→「创建监控项」
- 填写核心参数:
- 名称:硬编码IP与DNS解析IP一致性检测
- 键值:
check.dns.hardcode[amazon.com,205.251.242.103](替换为你的目标域名和硬编码IP) - 类型:Zabbix客户端
- 信息类型:数字(无符号)
- 更新间隔:根据业务需求设置(如5分钟)
- 点击「添加」完成创建
步骤4:创建告警触发器
- 在目标主机页面点击「触发器」→「创建触发器」
- 填写参数:
- 名称:硬编码IP与DNS解析IP不一致告警
- 表达式:
{你的主机名:check.dns.hardcode[amazon.com,205.251.242.103].last()}<>0 - 严重性:根据业务影响选择(如「警告」或「严重」)
- 描述:当前主机{HOST.NAME}中硬编码的
amazon.comIP为205.251.242.103,DNS解析IP为{ITEM.LASTVALUE},两者不一致,请及时核查。
- 点击「添加」完成创建
步骤5:验证监控效果
可以通过修改VM本地/etc/hosts文件,将目标域名指向错误IP,模拟DNS解析变化,等待监控项更新后,查看Zabbix是否触发对应告警。
内容的提问来源于stack exchange,提问作者Clarke
相关产品推荐
相关产品推荐

