shell分析nginx日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huapeng_guo/article/details/84986136

日志格式:

178.255.215.86 - - [04/Jul/2013:00:00:31 +0800] "GET /tag/316/PostgreSQL HTTP/1.1" 200 4779 "-" "Mozilla/5.0 (compatible; Exabot/3.0 (BiggerBetter); +http://www.exabot.com/go/robot)" "-"- 178.255.215.86 - - [04/Jul/2013:00:00:34 +0800] "GET /tag/317/edit HTTP/1.1" 303 5 "-" "Mozilla/5.0 (compatible; Exabot/3.0 (BiggerBetter); +http://www.exabot.com/go/robot)" "-"- 103.29.134.200 - - [04/Jul/2013:00:00:34 +0800] "GET /code-snippet/2022/edit HTTP/1.0" 303 0 "-" "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/17.0 Firefox/17.0" "-"- 103.29.134.200 - - [04/Jul/2013:00:00:35 +0800] "GET /user/login?url=http%3A//outofmemory.cn/code-snippet/2022/edit HTTP/1.0" 200 4748 "-" "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/17.0 Firefox/17.0" "-"-

提取日志  分别是访问URL和URL访问来源  排序

awk '{print $7}' access.log | sort | uniq -c |sort -nr | head -n10 > test.txt

以下脚本都是基于上面日志格式的,如果你的日志格式不同需要调整awk后面的参数。

分析日志中的UserAgent

cat access_20130704.log | awk -F "\"" '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -20

上面的脚本将分析出日志文件中最多的20个UserAgent

分析日志中那些IP访问最多

cat access_20130704.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20

分析日志中那些Url请求访问次数最多

cat access_20130704.log | awk -F "\"" '{print $(NF-5)}' | sort | uniq -c | sort -nr | head -20 

分析网络tcp连接

netstat -an|awk '/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}'   查看tcp链接数

netstat -pant |grep ":8443"|awk '{print $5}' | awk -F: '{print $1}'|sort|uniq -c|sort -nr    查看连接数最多的ip

cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -n10

注意TIME_WAIT

查看内核的tcp句柄限制:#ulimit -n #ulimit -a 若TIME_WAIT 且为自身程序,需要修改调整tcp操作类型,若是为内核限制过小,可以调整内核参数进行处理,一旦所用句柄已经达到限制,则程序对外任何tcp均无法建立

猜你喜欢

转载自blog.csdn.net/huapeng_guo/article/details/84986136