巡检配置里地址还是 http:// 开头,站点早就全站跳 HTTPS,每一轮巡检都收到 301,脚本把 301 记成异常,报告里常年飘红,真正的故障反而被盖住。

一开始怀疑是「跳转后没有跟随到最终地址校验正文」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。巡检目标地址没有跟随协议升级。还有一种是脚本把 3xx 当成失败。

少数情况下是报告模板把「非 200」统一标红。

动手时先确认巡检目标当前的实际协议

grep -o 'http://[^" ]*' check_config.yml | head

接着把目标全部改成 https 并跟随跳转

curl -sIL http://www.example.com/ | grep -E 'HTTP/|location'

脚本里对 301 跟随后再判定结果

python check_site.py --follow --expect 200

校验落地页正文关键字而不是只看状态码

curl -sL https://www.example.com/ | grep -c '站点标题'

恢复的判定其实很直接。巡检不再把 301 算成故障,报告里的红色条目对应真实错误,跳转链也能一并被记录。

协议升级后监控配置最容易漏改,巡检目标地址应该和站点配置同源,别手写。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189