首页/网络/协议速查/状态码监控与告警阈值
HTTP 方法与状态码91 条

状态码监控与告警阈值

把状态码变成可观测指标:按 4xx/5xx 分层统计、按接口维度下钻,才能区分「用户手滑」与「服务故障」。

协议速查网络更新于 2026-10-13

把状态码变成可观测指标

状态码是服务端最廉价的可观测信号:按 1xx 到 5xx 分层统计,再按接口维度下钻,就能把「用户手滑」和「服务故障」区分开。判断口径要先约定:4xx 率上升可能是业务变化也可能是扫描,5xx 才是硬故障;没有统一口径的监控,只会产出无人认领的告警。

基本信息

分层原则1xx 忽略、2xx 正常、3xx 关注跳转链、4xx 看业务与攻击、5xx 立即告警
常用指标5xx 率、4xx 率、P95 与 P99 延迟、429 计数
下钻维度接口路径、客户端 UA、上游实例、地域
取样注意按总请求量计算比率,避免低峰期单点被放大

阈值参考

指标参考阈值说明
5xx 率大于 1% 持续 5 分钟告警先确认是自身还是上游依赖
单接口 4xx 突增较基线放大 10 倍关注常见于客户端版本发布或爬虫扫描
429 计数持续增长需扩容或限流调优说明限流正在生效,用户可能受影响
P99 延迟超过基线 2 倍告警状态码正常但用户已感知变慢

Nginx 侧快速统计

Nginx 侧快速统计
awk '{print $9}' /var/log/nginx/access.log | grep -E '^[45]' | sort | uniq -c | sort -rn | head
# 按接口看 5xx
awk '$9 ~ /^5/ {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
# 按分钟看 5xx 密度(需先按时间排序或使用日志处理工具)
awk '$9 ~ /^5/ {print $4}' /var/log/nginx/access.log | cut -d: -f2,3 | sort | uniq -c | tail

典型使用场景

  • 发布后对比发布前后的 5xx 曲线,作为回滚判据
  • 大促前压测确认限流触发时的 429 比例是否在预期范围
  • 排查「部分用户报错」:按 UA 与接口下钻定位受影响的客户端版本
  • 把健康检查的探测失败与业务 5xx 分开统计,避免探针干扰告警
4xx 不一定是故障:爬虫 404 扫描、旧客户端 400 都会抬高 4xx 率。要按接口与 UA 维度下钻,才能分清是攻击、客户端陈旧还是业务逻辑变化。
别只看总量看比率:低峰期一个用户触发几次 500 就能让 5xx 率飙到很夸张,告警规则应同时要求最小请求量门槛。

易错点

  • 用总量而非比率做告警:流量波动时误报,真正的高 5xx 率反而被淹没在绝对数量里
  • 把 4xx 与 5xx 合并成一个「错误率」:客户端问题与服务端故障混在一起,值班时无法判断优先级
  • 忽略 3xx 突增:跳转链变化往往先表现为 3xx 上升,接着才是超时与 5xx
  • 探针与真实流量共用指标:健康检查失败会污染业务口径,应分开统计或加标签区分

数据来源与参考

  • Google SRE Book(服务质量指标方法)
  • RFC 9110 §15(状态码分类)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌