centos域名如何监控
CentOS 域名监控实操指南
一、监控目标与总体思路
- 面向生产环境,建议同时覆盖以下维度:
- DNS 解析可用性:指定域名与指定 DNS 服务器是否能解析到期望的 IP。
- HTTPS/SSL 证书有效期:提前发现证书即将过期,避免服务中断。
- HTTP 可用性:域名可访问、返回码为 200,必要时校验 SNI/证书域名。
- 推荐在 Zabbix 6.x 上统一纳管,使用 UserParameter 自定义监控项,脚本放在 /etc/zabbix/scripts/,Agent 配置开启 UnsafeUserParameters=1 后重启生效。
二、DNS 解析监控脚本与配置
- 安装依赖
- 在 CentOS 上安装工具:sudo yum install -y bind-utils(提供 dig/nslookup)。
- 解析校验脚本(支持指定 DNS 与期望 IP)
- 保存为:/etc/zabbix/scripts/check_dns.sh
- 可执行:chmod +x /etc/zabbix/scripts/check_dns.sh
- 脚本内容:
-
#!/usr/bin/env bash set -Eeuo pipefail DOMAIN=“${ 1:?missing domain} ” DNS=“${ 2:?missing dns} ” EXPECTED_IPS=“${ 3:-} ” TIMEOUT=“${ 4:-5} ”
指定 +short +time +tries,超时控制更稳
mapfile -t ANS < < (dig +short +time=“${ TIMEOUT} ” +tries=2 @“${ DNS} ” “${ DOMAIN} ” A 2> /dev/null) if (( ${ #ANS[@]} == 0 )); then echo 0; exit 0 fi
若未设置期望 IP,则只要能解析即 OK
if [[ -z “${ EXPECTED_IPS} ” ]]; then echo 1; exit 0 fi
期望 IP 以逗号分隔
IFS=‘,’ read -ra WANT < < < “${ EXPECTED_IPS} ” for ip in “${ ANS[@]} ”; do for w in “${ WANT[@]} ”; do [[ “$ip” == “$w” ]] & & { echo 1; exit 0; } done done echo 0
-
- Zabbix Agent 配置
- /etc/zabbix/zabbix_agentd.conf 增加:
- UnsafeUserParameters=1
- UserParameter=check_dns[*],/etc/zabbix/scripts/check_dns.sh “$1” “$2” “$3” “$4”
- 重启:systemctl restart zabbix-agent
- /etc/zabbix/zabbix_agentd.conf 增加:
- Zabbix 前端
- 监控项:Key 填写 check_dns[example.com,8.8.8.8,93.184.216.34,5]
- 触发器:{ host:check_dns[example.com,8.8.8.8,93.184.216.34].last()} = 0
- 命令行自检
- /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k “check_dns[example.com,8.8.8.8,93.184.216.34,5]”
- 说明
- 使用 dig +short 获取简洁结果,结合 +time/+tries 控制超时与重试;通过对比期望 IP 判断解析是否正确。
三、HTTPS 证书到期监控脚本与配置
- 证书剩余天数脚本
- 保存为:/etc/zabbix/scripts/check_ssl.sh
- 可执行:chmod +x /etc/zabbix/scripts/check_ssl.sh
- 脚本内容:
-
#!/usr/bin/env bash set -Eeuo pipefail HOST=“${ 1:?missing host} ” PORT=“${ 2:-443} ”
END_DATE=$(openssl s_client -servername “$HOST” -connect “${ HOST} :${ PORT} ” -showcerts < /dev/null 2> /dev/null
| sed -n ‘/BEGIN CERTIFICATE/,/END CERT/p’
| openssl x509 -text 2> /dev/null
| sed -n ‘s/ *Not After *: *//p’)if [[ -z “$END_DATE” ]]; then echo 9999; exit 0 # 取不到证书时间视为异常大值,便于排障 fi
END_TS=$(date -d “$END_DATE” +%s) NOW_TS=$(date +%s) DAYS_LEFT=$(( (END_TS - NOW_TS) / 86400 ))
echo “$DAYS_LEFT”
-
- Zabbix Agent 配置
- UserParameter=check_ssl[*],/etc/zabbix/scripts/check_ssl.sh “$1” “$2”
- 重启:systemctl restart zabbix-agent
- Zabbix 前端
- 监控项:Key 填写 check_ssl[www.example.com,443]
- 触发器(示例:小于 30 天告警):{ host:check_ssl[www.example.com,443].last()} < 30
- 说明
- 使用 SNI 指定域名,兼容多域名证书;通过解析 Not After 计算剩余天数,便于提前更换证书。
四、HTTP 可用性监控建议
- 方式一(Zabbix Agent 主动检查)
- 使用 curl 自定义监控项,校验返回码与可选关键字:
- UserParameter=check_http_code[*],curl -o /dev/null -s -w “%{ http_code} ” --resolve “$1:443:$2” “https://$1$3”
- 触发器示例:{ host:check_http_code[www.example.com,1.2.3.4,/health]} =200
- 使用 curl 自定义监控项,校验返回码与可选关键字:
- 方式二(Zabbix Web 场景)
- 创建 Web 场景,配置 SNI、SSL 证书校验与状态码断言,统一做可用性、响应时间与证书校验。
- 方式三(外部拨测)
- 结合云厂商或第三方 拨测(多地域探测、证书到期、可用性),与 Zabbix 告警联动,降低单点盲区。
五、排障与最佳实践
- 命令行快速验证
- DNS:dig example.com A @8.8.8.8 +short;如需跟踪链路:dig +trace example.com
- SSL:echo | openssl s_client -servername www.example.com -connect www.example.com:443 2> /dev/null | openssl x509 -noout -dates
- 日志与定位
- 若自建 BIND9 作为解析器异常,可用:journalctl -u named -f 查看实时日志,关注关键词 REFUSED/SERVFAIL/NXDOMAIN 等,便于快速定位解析失败根因。
- 监控项与阈值建议
- DNS:解析成功=1,失败=0;连续 2 次失败触发告警。
- SSL:剩余天数阈值建议 30/7/1 天分级告警。
- HTTP:状态码 200 为成功;可叠加响应时间阈值与关键字匹配(如登录页特征字符串)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos域名如何监控
本文地址: https://pptw.com/jishu/767608.html
