定位 Apache 日志中请求最频繁的对象
一、常用维度与典型命令
| 维度 | 目标 | 典型命令(可直接运行) | 说明 |
|---|---|---|---|
| 按 URL 统计 | 最热门页面/接口 | `awk ‘{print $7}’ access.log | sort |
| 按 IP 统计 | 访问来源 TopN | `awk ‘{print $1}’ access.log | sort |
| 按时间段统计 | 高峰分钟/小时 | `awk ‘{print $4}’ access.log | cut -d: -f2-3 |
| 按状态码统计 | 异常请求占比 | `awk ‘{print $9}’ access.log | sort |
| 按响应大小统计 | 大流量资源 TopN | `awk ‘$10 ~ /^[0-9]+$/ {print $10, $7}’ access.log | sort -nr |
| 按请求方法统计 | GET/POST 等占比 | `awk ‘{print $6}’ access.log | tr -d ‘"’ |
| 组合条件 | 某时段最热 URL | `awk ‘$4 ~ /:10:/ {print $7}’ access.log | sort |
| 组合条件 | 某 URL 的 Top IP | `awk ‘$7==“/api/login”{print $1}’ access.log | sort |
| 以上命令适用于 CLF 及 Combined 等常见格式;若字段位置不同,请以实际日志列号为准调整 $n。 |
二、按耗时或带宽识别“最重”的请求
awk '$NF ~ /^[0-9]+$/ {print $NF, $7}' access.log | sort -nr | headawk '$10 ~ /^[0-9]+$/ {print $10, $7}' access.log | sort -nr | headawk '$NF ~ /^[0-9]+$/ {print int($10*1000000/$NF), $7}' access.log | sort -nr | head(结果单位为字节/秒的近似值)。三、日志格式与字段位置核对
四、可视化与实时监控工具