当前位置: 代码网 > it编程>数据库>Redis > nginx中常见日志分析命令合集

nginx中常见日志分析命令合集

2025年05月14日 Redis 我要评论
1. 查看实时日志(流式监控)tail -f /var/log/nginx/access.log # 实时查看访问日志tail -f /var/log/nginx/error.log

1. 查看实时日志(流式监控)

tail -f /var/log/nginx/access.log       # 实时查看访问日志
tail -f /var/log/nginx/error.log        # 实时查看错误日志

2. 统计状态码分布

# 统计各类状态码数量
awk '{print $9}' access.log | sort | uniq -c | sort -nr
 
# 统计 404 错误的 url
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq -c | sort -nr
 
# 统计 500 错误的 ip 和时间
grep ' 500 ' access.log | awk '{print $1, $4}'

3. 分析热门 url / 资源

# 统计访问最多的前 10 个 url
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -10
 
# 统计大流量消耗的资源
awk '{print $7, $10}' access.log | sort -k2 -nr | head -10

4. 分析客户端 ip

# 统计访问 ip 数量
awk '{print $1}' access.log | sort | uniq | wc -l
# 统计访问最频繁的前 10 个 ip
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
 
# 查看特定 ip 的详细访问记录
grep '192.168.1.100' access.log

5. 分析请求时间

# 提取响应时间字段(需日志包含 $request_time)
awk '{print $nf}' access.log | sort -n | tail -10  # 最慢的 10 个请求
 
# 计算平均响应时间
awk '{sum+=$nf} end {print "average:", sum/nr}' access.log
 
# 查找响应时间超过 1 秒的请求
awk '$nf > 1 {print $4, $7, $nf}' access.log

6. 分析访问时间段

# 按小时统计访问量
awk '{print substr($4, 14, 2)}' access.log | sort | uniq -c
 
# 统计特定时间段的访问(如 10:00-11:00)
grep ' \[01/jan/2025:10:' access.log | wc -l

7. 分析用户代理(user-agent)

# 统计不同浏览器/爬虫的访问量
awk '{print $12}' access.log | sort | uniq -c | sort -nr
 
# 查找爬虫访问记录
grep -i 'bot|spider' access.log

8. 分析请求方法

# 统计不同 http 方法的使用频率
grep -op '^\s+ \k\s+' access.log | sort | uniq -c

9. 分析 referer 来源

# 统计外部链接来源
grep -v '"-"' access.log | awk '{print $11}' | sort | uniq -c | sort -nr

10. 组合分析(示例)

# 找出访问量最大且响应最慢的 10 个 url
awk '{print $7, $nf}' access.log | sort -k2 -nr | head -10 | sort -k1
 
# 分析特定 ip 的行为(如查看是否是扫描器)
grep '192.168.1.100' access.log | awk '{print $7}' | sort | uniq -c

11. 使用 awk 自定义复杂分析

# 按分钟统计请求数和流量
awk '{split($4, a, ":"); minute=a[2]":"a[3]; count[minute]++; bytes[minute]+=$10} end {for(m in count) print m, count[m], bytes[m]}' access.log | sort

12.日志格式说明

以上命令假设 nginx 日志采用默认的 combined 格式:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

如果使用自定义格式,需相应调整命令中的字段索引。

13.性能优化建议

对于超大日志文件,可先使用 grep/sed 过滤再分析:

grep '2025:05:14' access.log | awk '{print $7}' | sort | uniq -c

定期归档旧日志并压缩,减少分析范围。

考虑使用 elk stack 或 graylog 进行实时日志分析和可视化。

通过这些命令,你可以快速定位性能瓶颈、安全威胁和用户行为模式,提高系统运维效率。

到此这篇关于nginx中常见日志分析命令合集的文章就介绍到这了,更多相关nginx日志分析命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com