巡检脚本只判断 HTTP 200 数据库连不上时应用输出了友好错误页 状态码仍是 200 页面标题是系统繁忙 连续三天巡检全绿 实际文章页打开全是错误提示

一开始怀疑是「错误页与正常页模板相似 肉眼也难分辨」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。应用捕获异常后返回 200 加错误文案。少数情况下是巡检只校验状态码 不校验内容。

另外,没有对关键文案做反向断言。

第一件事是确认错误页的状态码

curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/p/123

巡检加关键词反向断言

python check.py --reject '系统繁忙|数据库连接失败'

接着让应用在异常时返回 503

header('HTTP/1.1 503 Service Unavailable');

复验异常场景下的绕行处理

curl -s https://www.example.com/p/123 | grep -c '系统繁忙'

别只看报错消失,验证要多做一步。错误页返回 503 巡检能识别并告警 状态码与真实可用性一致。

这里还有个坑。200 只说明服务器回了话 不代表回的是对的 巡检要看到内容才算真的看过。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189