Nginx日志分析精讲

时间 : 16-07-22 栏目 : nginx专题 作者 : 老薛 评论 : 0 点击 : 1,896 次

Nginx 版本信息:
nginx version: nginx/0.8.53Nginx日志配置项:
access_log /data0/logs/access.log combined;Nginx日志格式:
$remote_addr – $remote_user [$time_local] $request $status $apache_bytes_sent $http_referer $http_user_agent127.0.0.1 - - [24/Mar/2011:12:45:07 +0800] "GET /fcgi_bin/xxx.fcgi?id=xxx HTTP/1.0" 200 160 "-" "Mozilla/4.0"通过日志查看当天访问页面排前10的url:
#>cat access.log | grep "24/Mar/2011" | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 10
通过日志查看当天ip连接数,统计ip地址的总连接数
#>cat access.log | grep "24/Mar/2011" | awk '{print $1}' | sort | uniq -c | sort –nr
38 112.97.192.16
20 117.136.31.145
19 112.97.192.31
3 61.156.31.20
2 209.213.40.6
1 222.76.85.28
通过日志查看当天访问次数最多的10个IP ,只需要在上一个命令后加上head命令
#>cat access.log | grep "24/Mar/2011" |awk '{print $3}'|sort |uniq -c|sort -nr|head –n 10
38 112.97.192.16
20 117.136.31.145
19 112.97.192.31
3 61.156.31.20
2 209.213.40.6
1 222.76.85.28
通过日志查看当天访问次数最多的10个IP
#>awk '{print $1}' access.log |sort |uniq -c|sort -nr|head
10680 10.0.21.17
1702 10.0.20.167
823 10.0.20.51
504 10.0.20.255
215 58.60.188.61
192 183.17.161.216
38 112.97.192.16
20 117.136.31.145
19 112.97.192.31
6 113.106.88.10
通过日志查看当天指定ip访问次数过的url和访问次数:
#>cat access.log | grep "10.0.21.17" | awk '{print $7}' | sort | uniq -c | sort –nr 
224 /test/themes/default/img/logo_index.gif
224 /test/themes/default/img/bg_index_head.jpg
224 /test/themes/default/img/bg_index.gif
219 /test/vc.php
219 /
213 /misc/js/global.js
211 /misc/j***t/popup.ext.js
211 /misc/js/common.js
210 /sladmin/home
197 /misc/js/flib.js
通过日志查看当天访问次数最多的时间段
#>awk '{print $4}' access.log | grep "24/Mar/2011" |cut -c 14-18|sort|uniq -c|sort -nr|head
24 16:49
19 16:17
16 16:51
11 16:48
4 16:50
3 16:52
1 20:09
1 20:05
1 20:03
1 19:55

207.46.199.35 - [21/May/2012:00:00:01 +0800] www.zfwlxt.com "GET /html/2009-3/20093101633111.htm HTTP/1.1" 304 0 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "-"
实用的日志分析脚本, s/ v; a$ q1 C+ F
1.查看nginx的进程数
# ps -aux|grep nginx|wc -l& c- u! P0 q! {+ c% J2 O
2、分析日志查看当天的ip连接数
#  grep "23/Apr/2011"  logs/www.meimei.access.log|wc -l
3.查看指定的ip在当天究竟访问了什么url2 J5 h: p/ i$ E2 n% b; _1 {$ k& \% t
#  grep "23/Apr/2011"  logs/www.dhgate.meimei.log|grep "69.248.213.128"|awk '{print $9}'  x  y' Q7 `, ]9 j( z
4.查看当天访问排行前10的url. p$ K, V. U, y3 ^5 u% V
#  grep "23/Apr/2011"  logs/www.dhgatemeimei.log|awk '{print $9}'|sort |uniq -c |sort -nr |head -n 101 R+ M/ ~; f1 `: @% _
5、查看访问次数最多时间以小时为单位(热点)# U9 l; p* O5 V% H! [; ^0 L' U
#  grep "24/Apr/2011"  logs/www.dhgate.meimei.log|awk '{print $6}'|cut -c14-15|sort |uniq -c |sort -nr|head
awk '{print $1}' /usr/local/webserver/nginx/logs/host.access.log |sort |uniq -c|sort -nr|head -n 100 查看访问前100的ip
cat /usr/local/webserver/nginx/logs/host.access.log |grep "220.175.137.33" 查看ip
一、从nigx上截取的一条nginx日志
- 192.168.172.3 192.168.172.3 - - [24/Apr/2011:10:37:06 +0800] "GET /product/sellerscore.do?returnpage=0&supplierid=ff8080811fdc4c29011feaa9ed165c11 HTTP/1.1" 499 0 "http://www.meimei.com/wholesale/store.do?act=sellerStore&sellerid=ff8080811fdc4c29011feaa9ed165c11&datatype=&winid=all&sortinfo=operatedate&sorttype=down&sort=operatedate,down&keyword=i phone&freeshipping=0&wholesale=0&price=0&minprice=&maxprice=&pagesize=40&catalogid=" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; FunWebProducts; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CPNTDF; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)" rBABeU2RGgBXQj3OA46vAg== 
  
二、在nginx配置文件中有关nginx日志的配置
$remote_addr - $remote_user [$time_local] "$request" '
                         '$status $body_bytes_sent "$http_referer" '- _) H! F2 O4 T6 X' _
                         '"$http_user_agent" $secure_dhgate_auth '- h! @/ r. m9 j; b3 l  X
三、以下是对nginx日志记录每段记录的解释                  * A$ O( Q' m6 P
1、192.168.172.3 
  这是一个请求到nginx服务器的客户端ip($remote_addr)。
2、192.168.172.3 - [8 P" p2 V( k9 G
  这是一个请求到nginx服务器的客户端用户($remote_user)。
3、[24/Apr/2011:10:37:06 +0800]([$time_local])5 G( w2 ?/ q- b* s4 T3 r3 F  t
记录请求时间(格式为[day/month/year:hour:minute:second zone],最后的+0800表示服务器所处的时区为东八区)
4、"GET /product/sellerscore.do?returnpage=0&supplierid=ff8080811fdc4c29011feaa9ed165c11 HTTP/1.1" ) _. S! x8 D* x& p. |$ K* l5 \
($request)
这一项整个记录中最有用的信息,首先,它告诉我们的服务器收到的是一个GET请求,其次,是客户端请求的资源路径,第三,客户端使用的协议时HTTP/1.1,整个格式为"%m %U%q %H",即"请求方法/访问路径/协议"6 @; q) x1 a2 ^* O0 X
5、 499 (对于499状态码得解释我会写一篇文章专门解释)--($status)9 q  s" T& s# P3 Q0 I" C
这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是遇到了什么样的错误,这项值为200,表示服务器已经成功的响应了客户端的请求,一般来说,这项值以2开头的表示请求成功,以3开头的表示重定向,以4开头的标示客户端存在某些的错误,以5开头的标示服务器端存在某些错误,详细的可以参见 HTTP specification (RFC2616 section 10).[http://www.w3.org/Protocols/rfc2616/rfc2616.txt]
6、0 ($body_bytes_sent )4 w- B! i7 O7 G5 L. T4 B( m3 I# {
这项表示服务器向客户端发送了多少的字节,在日志分析统计的时侯,把这些字节加起来就可以得知服务器在某点时间内总的发送数据量是多少1 _* E  Y( o# @$ J. i, i
7、"http://www.meimei.com/wholesale/store.do?act=sellerStore&sellerid=ff8080811fdc4c29011feaa9ed165c11&datatype=&winid=all&sortinfo=operatedate&sorttype=down&sort=operatedate,down&keyword=i phone&freeshipping=0&wholesale=0&price=0&minprice=&maxprice=&pagesize=40&catalogid="2 a2 U5 N' h) O' _
($http_referer). b) F" c6 J0 p, d0 [
这一项是($http_referer)客户端输入的http请求。0 c6 a! L2 z  A) @- k  H
8、Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; FunWebProducts; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CPNTDF; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)"
($http_user_agent)
这项主要记录客户端的信息
9、rBABeU2RGgBXQj3OA46vAg==
$secure_dhgate_auth6 

本文标签 ,

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/nginx-2/1813.html

Nginx日志分析精讲:等您坐沙发呢!

发表评论

0 + 9 = ?


博主微信号,很高兴为您提供帮助

随便看看

0