awk 一行统计 Nginx 访问日志:Top IP、状态码与慢请求
【摘要】 排查 Nginx 问题时,不必一上来就写脚本。awk 配合 sort、uniq、head,就能从访问日志里快速看到 Top IP、状态码分布和慢请求。下面以默认 combined 日志为例,字段位置请按自己的 log_format 核对。 1. 访问量最高的 IPawk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sor...
排查 Nginx 问题时,不必一上来就写脚本。awk 配合 sort、uniq、head,就能从访问日志里快速看到 Top IP、状态码分布和慢请求。下面以默认 combined 日志为例,字段位置请按自己的 log_format 核对。
1. 访问量最高的 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
这个结果只说明请求量,不等于攻击。看到某个 IP 特别高时,再结合 User-Agent 和请求路径一起看,避免误封正常爬虫或健康检查。
2. 状态码分布
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
如果 404 集中在某几个路径,往往是静态资源缺失或前端引用写错;5xx 突然增多,则要先看上游服务和超时配置,而不是先重启 Nginx。
3. 慢请求 Top 20
假设日志末尾记录了 request_time:
awk '$NF > 1 {print $NF, $7}' /var/log/nginx/access.log | sort -nr | head -20
这里 $NF 是耗时,$7 是请求路径。只看平均耗时容易被个别慢接口掩盖,Top 列表能更快定位到真正需要优化的接口。
4. 一个实用的排查顺序
- 先看状态码分布,判断是客户端问题、配置问题还是上游问题。
- 再看 Top IP 和 Top 路径,确认影响面。
- 最后看慢请求,定位具体接口。
- 改配置前先用 nginx -t 检查语法,reload 后再复查一遍日志。
小结:awk 的价值不在命令本身,而在于把日志变成可排序、可计数的结构。先缩小范围,再深入看单条日志,往往比直接翻几千行日志更快。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)