报错是这么冒出来的。巡检任务每天上午十点跑一次,站点在早八点发布高峰经常出现 502,十分钟后自愈。报告连续三个月全绿,用户投诉和日志里的 502 却每周都有。
中间走过弯路,把「巡检只探首页 内页 502 没有覆盖」当成主因,改完现象没变。
把日志和配置对完,能解释这个现象的基本就这几处。巡检频率低于故障持续时间 采样点直接错过。少数情况下是故障集中在发布时段 巡检时间正好错开。
还有一种情况,报告按天聚合 短时故障被平均掉。
上来先统计 502 出现的小时分布
awk '$9==502 {print substr($4,14,2)}' access.log | sort | uniq -c
然后把巡检改成每十分钟一次
*/10 * * * * /usr/local/bin/check_site.sh >> /var/log/check.log
巡检样本加入栏目页和详情页
while read u; do curl -s -o /dev/null -w '%{http_code}\n' "$u"; done < url_sample.txt
给 5xx 加实时告警
curl -s -X POST $WEBHOOK -d '{"text":"巡检发现 502"}'
怎么算真的好了,看的是同一批现象。下一次发布高峰的 502 在十分钟内出现在报告和告警里。
提醒一点。巡检频率要匹配故障的持续时间,故障十分钟自愈,一天一次的巡检等于没做。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
