访问日志是排障的一手数据
七层负载均衡可以把访问日志投递到日志服务或对象存储,记录时间、客户端 IP、请求行、状态码、后端成员与各项耗时。相比只有监控曲线,日志能回答「哪条规则、哪个后端、哪类请求出错」,是排查 4xx 与 5xx、定位慢请求、做访问审计的基础。开启后要按需设置保留周期,控制存储成本。
基本信息
| 日志内容 | 时间、客户端 IP、请求行、状态码、后端成员、上游与总耗时 |
|---|---|
| 投递方式 | 写入日志服务或对象存储,部分产品支持控制台下载 |
| 主要用途 | 错误率分析、慢请求定位、访问审计 |
| 成本 | 存储与索引会产生费用,需要设置保留期 |
| 前提 | 日志项目与日志库需要预先配置并授权 |
典型使用场景
- 5xx 突增,按后端成员维度区分是全量故障还是单成员问题
- 排查慢请求:对比上游耗时与总耗时,判断耗时发生在哪一段
- 统计错误码分布,决定优先修哪类问题
- 配合安全审计,追溯某个来源 IP 的访问行为
- 验证发布效果:对比发布前后的状态码与耗时分布
聚合错误码与耗时
聚合错误码与耗时
# 状态码分布
awk '{print $9}' access.log | sort | uniq -c | sort -rn | head
tail -n 1000 access.log | awk '{print $9}' | sort | uniq -c | sort -rn | head -10
# 找出 5xx 请求涉及的后端成员
awk '$9 ~ /^5/ {print $9, $NF}' access.log | sort | uniq -c | sort -rn | head关键字段读法
| 字段 | 含义 | 排查用途 |
|---|---|---|
| 状态码 | 负载均衡返回给客户端的状态码 | 区分 4xx 客户端问题与 5xx 服务端问题 |
| 后端成员 | 本次请求转发的后端地址与端口 | 定位是否个别成员异常 |
| 上游耗时 | 后端处理该请求的时间 | 偏大说明后端慢 |
| 总耗时 | 含排队与传输的总时间 | 与上游耗时差值大说明链路或排队问题 |
排查 5xx 时先看状态码分布与后端成员维度,能快速区分全量问题与个别成员问题,避免一上来就登录实例翻日志。
日志保留期设置过短,等到复盘或审计时数据已经不在了;关键业务建议按合规要求确定保留时长。