域名监控要做到实时预警,核心就三件事:把解析、证书、到期、可用性四类探针全部铺开,探测频率压到分钟级,再把告警推到真正会半夜爬起来处理的人手里。只买工具不设计告警链路,等于装了个只会亮灯的报警器。
为什么很多网站的域名监控形同虚设
只盯首页能不能打开,漏掉了最致命的两层
不少团队的做法是:首页能返回200,就认为一切正常,问题在于,域名出问题往往不是"服务器挂了",而是"别人根本找不到你的服务器",DNS记录被误删、解析被劫持、NS切换没生效,这些情况下你的源站活得好好的,但用户那边已经是一片空白。
另一层是域名状态本身,注册商侧出现 clientHold、serverHold、pendingDelete 这类状态时,域名会直接停止解析,而你的服务器监控完全无感,这类事故在国内并不罕见,多发生在企业邮箱变更、备案信息更新、续费扣款失败之后。
告警发到邮箱,等于没发
行业共识认为,告警的有效性取决于"到达率"和"响应率",而不是"发送量",邮件在凌晨三点的到达率不低,响应率接近零,真正能叫醒人的通道只有两个:电话语音和短信,其次才是企业微信、钉钉群机器人,把P1级告警配到邮件上,是监控体系里最常见的设计失误。
域名解析异常实时告警怎么设置?先把四个监控维度分清
监控不是把所有检查项堆在一起,而是分层设计,下面这张表是多数生产环境可以直接照搬的维度划分:
| 监控维度 | 建议频率 | 触发阈值示例 | |
|---|---|---|---|
| 解析层 | A/AAAA/CNAME/MX记录是否与基线一致 | 1-5分钟 | 连续2次结果偏离基线 |
| 证书层 | SSL到期时间、证书链完整性、域名匹配 | 每6-12小时 | 剩余<15天提醒,<7天升级 |
| 域名状态层 | 注册到期日、EPP状态码、DNS服务器变更 | 每天1次 | 到期<45天提醒,<15天升级 |
| 可用性层 | 多节点HTTP状态码、响应耗时、TLS握手 | 1-5分钟 | 非2xx/3xx连续2次 |
解析层:多递归节点对比才是关键
单节点查询没有意义,因为缓存会骗你,实操上至少选三组公共DNS做对照,比如阿里 223.5.5.5、腾讯 119.29.29.29、114.114.114.114,命令行验证很简单:
dig +short example.com A @223.5.5.5 dig +short example.com A @119.29.29.29
把首次查询结果存成基线文件,之后每次比对,三次查询里两次不一致就报警,能有效过滤单点网络抖动。
证书层:别只看到期日
用一条命令就能拿到到期时间:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
但真正容易出事的是证书链不完整和SNI配置错误浏览器能打开,某些客户端却报错,监控时应同时校验证书链层级和域名匹配,而不是只读到 dates 就结束。
域名状态层:EPP状态码是硬指标
注册到期日只是表象,EPP状态码才是真实状态,clientHold 意味着注册商暂停了解析,redemptionPeriod 意味着域名已进入赎回期,费用通常是正常续费的数倍,这两个状态一旦出现,必须走最高级别告警。
可用性层:多地域探测避免误判
单机房探测会被本地网络问题带偏,多数商业监控服务默认提供多地域节点,自建方案至少要在两个不同网络环境部署探针,检查命令:
curl -o /dev/null -s -w "%{http_code} %{time_total}\n" https://example.com
域名到期监控怎么设置,才能不漏掉续费节点
RDAP 查询比传统 whois 更稳定
传统 whois 协议返回格式各家不同,解析容易出错,RDAP 是结构化 JSON,用 curl 直接取:
curl -s https://rdap.example-registry.com/domain/example.com
拿到 events 字段里的 expiration 时间,写入数据库,每天比对一次即可,注意 RDAP 端点因注册局而异,需要按后缀维护映射表,.com、.cn、.net 各有一套。
阈值设计和负责人绑定
业内专家指出,域名到期预警的失效,多数不是技术问题,而是"告警发给了已经离职的人",设置时要做两件事:
- 到期前60天、45天、30天、15天、7天各推一次,节奏递减但级别递增;
- 每个域名绑定主负责人和备份负责人两个手机号,季度复核一次。
多域名团队建议用表格批量导入,字段至少包含域名、注册商、到期日、负责人、业务归属,几百个域名靠人工盯,一定会漏。
域名监控工具怎么选?自建脚本和SaaS服务各有适用场景
自建:cron 加脚本的最小可用方案
域名数量在10个以内、有运维人力的团队,自建完全够用,核心是一个 shell 脚本加 crontab:
# 每5分钟执行一次 /5 /opt/monitor/check_domain.sh >> /var/log/domain_monitor.log 2>&1
脚本里依次做三件事:dig 比对基线、openssl 读证书、curl 探可用性,命中异常就调用告警 webhook,优点是零成本、逻辑透明;缺点是要自己处理告警去重、静默、值班表,运维成本随域名数量线性上升。
SaaS 方案重点看三件事
选购商业监控时,别只看节点数量,真正影响体验的是:
- 是否支持解析结果基线比对,而不只是"能不能解析";
- 告警是否支持电话、短信、IM 多通道,并且能按级别路由;
- 是否提供域名状态和证书到期的独立监控项,而非打包在可用性里。
域名监控服务一年多少钱?按规模配置更划算
价格这块没有统一标准,但可以按规模分档理解:
- 免费或轻量方案:开源工具加自建脚本,成本主要是服务器和时间,适合10个域名以内的个人站和小团队。
- 商业SaaS服务:普遍按监控条目计费,单个域名的年费大致落在几十元到两三百元的区间,带电话告警和解析比对的套餐会更高一些,多买通常有阶梯折扣。
- 企业定制方案:涉及私有化部署、SLA承诺、专属值班响应的,报价按项目走,年费可能达到数千元以上。
判断标准很朴素:一次域名解析故障导致的业务中断损失,如果超过监控年费的十倍,这笔钱就该花,北京、上海这类对业务连续性要求高的地区,不少中小团队会直接选带电话告警的商业服务,省下自建告警链路的人力。
告警落地:把通知送到会处理的人手里
分级与静默策略
把告警分三级:P1 是解析失效、域名 hold、证书过期,走电话加短信;P2 是证书临期、到期临期,走 IM 群;P3 是响应耗时波动,进日报,维护窗口内手动静默,但域名状态层的告警不建议静默,因为注册商侧的操作不会等你。
升级链路要写死
P1 告警发出后10分钟无确认,自动升级到第二联系人;30分钟无处理,升级到技术负责人,这条链路必须写进配置,而不是靠"大家自觉"。
网站域名监控常见问题解答
Q:监控频率设成1分钟,会被DNS服务商限流吗?
公共DNS对单IP的QPS通常有软限制,1分钟一次、每次三组查询的强度远低于阈值,正常不会触发,真正需要注意的是自建递归解析器时不要高频查询权威服务器。
Q:域名刚续费,为什么监控还在报到期告警?
多数情况是注册局数据同步延迟,RDAP 结果尚未刷新;也有可能是续费只延长了1年而脚本里硬编码了旧到期日,处理方法是在告警逻辑里加一条:检测到 expiration 时间比上次记录更晚,就自动更新基线并关闭告警。
Q:免费工具能满足实时预警吗?
能覆盖解析和可用性,但电话告警、多地域探测、告警去重这几项在免费方案里基本缺失,实际落地时往往要自己补,补完的成本未必低于直接采购。
域名监控的价值不在于监控本身,而在于把"事后发现"提前到"用户发现之前",四层探针加一条能叫醒人的告警链路,这套配置跑通之后,域名层面的黑天鹅基本就被挡在门外了。