CentOS 域名监控实操指南
一、监控目标与总体思路
二、DNS 解析监控脚本与配置
#!/usr/bin/env bash set -Eeuo pipefail DOMAIN=“${1:?missing domain}” DNS=“${2:?missing dns}” EXPECTED_IPS=“${3:-}” TIMEOUT=“${4:-5}”
mapfile -t ANS < <(dig +short +time=“${TIMEOUT}” +tries=2 @“${DNS}” “${DOMAIN}” A 2>/dev/null) if (( ${#ANS[@]} == 0 )); then echo 0; exit 0 fi
if [[ -z “${EXPECTED_IPS}” ]]; then echo 1; exit 0 fi
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
三、HTTPS 证书到期监控脚本与配置
#!/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”
四、HTTP 可用性监控建议
五、排障与最佳实践