直接监控Apache access.log中的状态码波动比查进程或CPU更早发现应用层异常,重点观察5xx和4xx突变,结合balancer-manager、健康端点及error_log交叉验证,并用脚本实时统计百分比触发动态基线告警。

直接看状态码波动和后端响应一致性,比单纯查进程或CPU更早发现应用层异常。
重点盯 5xx 和 4xx 的突变节奏
Apache 本身不执行业务逻辑,但它转发请求、接收响应、记录结果。动态应用(如 Java Spring Boot、PHP-FPM)出问题时,最敏感的信号就藏在 access.log 的状态码分布里:
- 5xx(尤其是 500、502、504)集中出现,大概率是后端服务崩溃、超时或返回非预期错误
- 4xx 中 401/403 突增,可能鉴权服务异常;404 大量出现在特定 API 路径,说明路由或微服务注册失效
- 同一 URL 在几秒内反复返回 500,基本可判定该接口对应的应用实例已不可用
用轻量脚本做实时频次统计
不用上 ELK 或 Prometheus 也能快速起效。假设日志格式为默认 combined,状态码在第 9 列:
- 每 30 秒滚动统计一次:
tail -f /var/log/apache2/access.log | \ awk '$9 ~ /^5[0-9]{2}$|^4[0-9]{2}$/ {c[$9]++; t++} NR % 500 == 0 { if (t > 0) { for (k in c) print k, c[k]/t*100 "%"; delete c; t=0 } }'输出类似:
500 12.3%502 8.1%404 35.6%—— 关注百分比而非绝对值,排除流量自然波动干扰
Apache Superset Dashboard and SQL Exploration Skill下载Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
把状态码和后端真实状态对齐
光看 Apache 日志不够,要交叉验证:
- 若用了 mod_proxy_balancer,访问
/balancer-manager查看各 worker 的Busy和Requests是否停滞 - 对每个后端地址,主动调用其健康端点(如
/actuator/health),对比返回状态与 Apache 记录的 5xx 分布是否重合 - 在 error_log 中搜
proxy:,Connection refused,read timeout,确认是网络层失败还是后端进程已退出
Java 应用侧配合做闭环告警
Spring Boot 可读取上述脚本输出的指标文件(如每 30 秒写入 /tmp/apache_metrics.json):
- 解析 JSON 获取
5xx_rate字段 - 设定动态基线:过去 1 小时同分钟均值 + 2 倍标准差
- 连续 2 次超标才发企业微信通知,并附带最近 5 条异常请求路径(从 access.log 提取)
不复杂但容易忽略

















