awk 一行统计 Nginx 访问日志:Top IP、状态码与慢请求

举报
yd_291533083 发表于 2026/11/05 09:31:01 2026/11/05
【摘要】 排查 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. 一个实用的排查顺序

  1. 先看状态码分布,判断是客户端问题、配置问题还是上游问题。
  2. 再看 Top IP 和 Top 路径,确认影响面。
  3. 最后看慢请求,定位具体接口。
  4. 改配置前先用 nginx -t 检查语法,reload 后再复查一遍日志。

小结:awk 的价值不在命令本身,而在于把日志变成可排序、可计数的结构。先缩小范围,再深入看单条日志,往往比直接翻几千行日志更快。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。