如何分析Nginx日志?常用命令有哪些?
Nginx日志分析常用命令
一、IP相关统计
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次的页面:
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、统计蜘蛛抓取次数:
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日志常用命令”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
-- 展开阅读全文 --
刚提交了投诉,等得花儿都谢了,到底啥时候能看见清零啊?