如何分析Nginx日志?常用命令有哪些?

小贝
预计阅读时长 11 分钟
位置: 首页 小红书 正文

Nginx日志分析常用命令

一、IP相关统计

分析nginx日志常用命令

1、统计IP访问量:通过提取日志中的IP地址列,使用awk命令进行统计。

   awk '{print $1}' access.log | sort -n | uniq | wc -l

2、查看某一时间段的IP访问量:查看5-6点的IP访问量。

   grep "07/Jan/2019:0[5-6]" access.log | awk '{print $1}' | sort | uniq -c | sort -nr | wc -l

3、查看访问最频繁的10个IP

   awk '{print $1}' access.log | sort -n | uniq -c | sort -rn | head -n 10

4、查询某个IP的详细访问情况:按访问频率排序,例如查询IP 172.168.1.10的访问详情。

   grep '172.168.1.10' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -n 10

二、页面访问统计

1、查看访问最频繁的页面(TOP10)

   awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -n 10

2、查看访问最频繁的页面(排除php页面)(TOP10)

   grep -v ".php" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -n 10

3、查看页面访问次数超过100次的页面

分析nginx日志常用命令
   cat access.log | cut -d ' ' -f 7 | sort | uniq -c | awk '{if ($1 > 100) print $0}' | less

4、查看最近1000条记录,访问量最高的页面

   tail -1000 access.log | awk '{print $7}' | sort | uniq -c | sort -nr | less

三、请求量统计

1、每秒请求数TOP10的时间点(精确到秒)

   awk '{print $4}' access.log | cut -c 14-21 | sort | uniq -c | sort -nr | head -n 100

2、每分钟请求数TOP100的时间点(精确到分钟)

   awk '{print $4}' access.log | cut -c 14-18 | sort | uniq -c | sort -nr | head -n 100

3、每小时请求数TOP100的时间点(精确到小时)

   awk '{print $4}' access.log | cut -c 14-15 | sort | uniq -c | sort -nr | head -n 100

四、性能分析

1、列出传输时间超过3秒的页面,显示前20条

   cat access.log | awk '($NF > 3){print $7}' | sort -n | uniq -c | sort -nr | head -20

2、列出PHP页面请求时间超过3秒的页面,并统计出现的次数,显示前100条

   cat access.log | awk '($NF > 1 && $7 ~ /\.php/){print $7}' | sort -n | uniq -c | sort -nr | head -100

五、蜘蛛抓取统计

1、统计蜘蛛抓取次数

分析nginx日志常用命令
   grep 'Baiduspider' access.log | wc -l

2、统计蜘蛛抓取404的次数

   grep 'Baiduspider' access.log | grep '404' | wc -l

六、TCP连接统计

1、查看当前TCP连接数

   netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l

2、用tcpdump嗅探80端口的访问,看看谁最高

   tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr

七、实例脚本

1、获取前一分钟Nginx访问日志条数

   #!/bin/bash
   export LANG=C
   export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
   TIME=$(date -d "1 minute ago" +"%d/%h/%Y:%H:%M")
   grep "$TIME" /var/log/nginx/access.log | wc -l

2、获取前一分钟Nginx错误日志条数

   #!/bin/bash
   export LANG=C
   export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
   TIME=$(date -d "1 minute ago" +"%Y-%m-%d %H:%M")
   grep "$TIME" /var/log/nginx/error.log | wc -l

相关问题与解答

问题一:如何统计独立IP数?

答案:可以使用以下命令来统计独立IP数:

   awk '{print $1}' access.log | sort | uniq | wc -l

问题二:如何统计每秒客户端请求数TOP5的时间点(精确到秒)?

答案:可以使用以下命令来统计每秒客户端请求数TOP5的时间点(精确到秒):

   awk '{print $4}' access.log | cut -c 14-21 | sort | uniq -c | sort -nr | head -n 5

到此,以上就是小编对于“分析nginx日志常用命令”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

-- 展开阅读全文 --
头像
如何构建高效的服务器设备管理体系?
« 上一篇 2024-11-25
如何选择适合App的云服务器?
下一篇 » 2024-11-25
取消
微信二维码
支付宝二维码

发表评论

暂无评论,1人围观

头像 王艳 说道:
2024-08-11 · WeChat 8.0.32.2300 vivo X21i

刚提交了投诉,等得花儿都谢了,到底啥时候能看见清零啊?

目录[+]