nginx日志分析-必备

1、查找某个时间段的日志,故障后查询原因使用

[root@adminset data]# egrep "\[01/Jun/2017:15" access.log |awk '{print $8"    "$(NF-3)}'|sort|uniq -c|sort -rn
   8852 200    192.168.0.13:80
   8836 200    192.168.0.12:80
   2089 302    192.168.0.12:80
   2001 302    192.168.0.13:80
   1651 304    192.168.0.12:80
   1648 304    192.168.0.13:80
    912 200    192.168.0.10:80
    390 502    192.168.0.10:80
    164 304    192.168.0.10:80
     44 206    192.168.0.12:80
     37 206    192.168.0.13:80
     33 499    192.168.0.13:80
     28 499    192.168.0.12:80
      5 206    192.168.0.10:80
      1 499    192.168.0.10:80
[root@adminset data]# cat access.log |awk '{print $8"    "$(NF-3)}'|sort|uniq -c|sort -rn
  96736 200    192.168.0.12:80
  96334 200    192.168.0.13:80
  23232 302    192.168.0.13:80
  23153 302    192.168.0.12:80
  22537 304    192.168.0.13:80
  22494 304    192.168.0.12:80
  10750 200    192.168.0.10:80
   4806 502    192.168.0.10:80
   2776 304    192.168.0.10:80
    601 206    192.168.0.12:80
    567 206    192.168.0.13:80
    475 499    192.168.0.13:80
    429 499    192.168.0.12:80
     67 206    192.168.0.10:80
      5 499    192.168.0.10:80

2、查询统计http状态码

[root@adminset data]# cat access.log |awk '{print $8"    "$(NF-3)}'|sort|uniq -c|sort -rn
  96736 200    192.168.0.12:80
  96334 200    192.168.0.13:80
  23232 302    192.168.0.13:80
  23153 302    192.168.0.12:80
  22537 304    192.168.0.13:80
  22494 304    192.168.0.12:80
  10750 200    192.168.0.10:80
   4806 502    192.168.0.10:80
   2776 304    192.168.0.10:80
    601 206    192.168.0.12:80
    567 206    192.168.0.13:80
    475 499    192.168.0.13:80
    429 499    192.168.0.12:80
     67 206    192.168.0.10:80
      5 499    192.168.0.10:80

3、awk查询某一列等于什么值如何实现

[root@adminset data]# awk '$8==206{print}' access.log|head -n 2
114.63.117.244 [05/Jun/2018:00:08:30 +0800] www.baidu.com "GET /web/scripts.d6175c4c3c63db.js HTTP/1.1" 206 1 "https://www.baidu.com/web/" 
"Mozilla/5.0 (Linux; Android 6.0.1; SM-G9280 Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2
TBS/044033 Mobile Safari/537.36 MicroMessenger/6.6.6.1300(0x26060632) NetType/WIFI Language/zh_CN" "-" 192.168.0.13:80 4 607 0.004 117.63.117.244 [05/Jun/2018:00:08:30 +0800] www.baidu.com "GET /web/scripts.d6175c4c3c63db.js HTTP/1.1" 206 1 "https://www.baidu.com/web/"
"Mozilla/5.0 (Linux; Android 6.0.1; SM-G9280 Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2
TBS/044033 Mobile Safari/537.36 MicroMessenger/6.6.6.1300(0x26060632) NetType/WIFI Language/zh_CN" "-" 192.168.0.10:80 4 607 0.004

4、常用http状态码详解

egrep "\[04/Jun/2018:15" www.luoahong.com.log |awk '{print $8"    "$(NF-3)}'|sort|uniq -c|sort -rn
   8852 200    192.168.0.13:80
   8836 200    192.168.0.12:80
   2089 302    192.168.0.12:80
   2001 302    192.168.0.13:80
   1651 304    192.168.0.12:80
   1648 304    192.168.0.13:80
    912 200    192.168.0.10:80
    390 502    192.168.0.10:80
    164 304    192.168.0.10:80
     44 206    192.168.0.12:80
     37 206    192.168.0.13:80
     33 499    192.168.0.13:80
     28 499    192.168.0.12:80
      5 206    192.168.0.10:80
      1 499    192.168.0.10:80

HTTP状态码206和416

https://www.cnblogs.com/chenpingzhao/archive/2016/08/22/5797506.html

HTTP/1.1 206状态码表示的是:"客户端通过发送范围请求头Range抓取到了资源的部分数据",一般用来

  • 解决大文件下载问题

  • 解决CDN和原始HTTP服务器问题

  • 使用工具例如lftp,wget,telnet测试断电续传

[root@adminset data]# awk '$8==206{print}' access.log|head -n 2
117.63.117.244 [05/Jun/2018:00:08:30 +0800] www.baidu.com "GET /web/scripts.d6175c4c3c63db.js HTTP/1.1" 206 1 "https://www.baidu.com/web/" 
"Mozilla/5.0 (Linux; Android 6.0.1; SM-G9280 Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 T
BS/044033 Mobile Safari/537.36 MicroMessenger/6.6.6.1300(0x26060632) NetType/WIFI Language/zh_CN" "-" 192.168.0.13:80 4 607 0.004 117.63.117.244 [05/Jun/2018:00:08:30 +0800] www.baidu.com "GET /web/scripts.d6175c4c3c63db.js HTTP/1.1" 206 1 "https://www.baidu.com/web/"
"Mozilla/5.0 (Linux; Android 6.0.1; SM-G9280 Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2
TBS/044033 Mobile Safari/537.36 MicroMessenger/6.6.6.1300(0x26060632) NetType/WIFI Language/zh_CN" "-" 192.168.0.10:80 4 607 0.004

 我特意从日志文件抓出部分文件作为验证

HTTP 499 状态码 nginx下 499错误

http://www.lc365.net/blog/b/23997/

常用http码

http://tool.oschina.net/commons?type=5

5、日志分析常用命令及参数

netstat

-n numeric 使用ip地址
-l listening 监听
-t tcp
-u utp
-p programs 正在使用socket
-a all

sort

-c:检查文件是否已经按照顺序排序;
-n:依照数值的大小排序;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;

uniq

-c或——count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
-u或——unique:仅显示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。

awk

常用命令选项

  1. -F fs   fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
  2. -v var=value   赋值一个用户定义变量,将外部变量传递给awk
  3. -f scripfile  从脚本文件中读取awk命令
  4. -m[fr] val   对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

模式:

  1. /正则表达式/:使用通配符的扩展集。 
  2. 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。 
  3. 模式匹配表达式:用运算符~(匹配)和~!(不匹配)。
  4. BEGIN语句块、pattern语句块、END语句块。

更多见如下博文

  1. 三剑客:awk实战
  2. Linux Web服务器网站故障分析常用的命令-awk

 

posted @ 2018-06-06 17:59  活的潇洒80  阅读(673)  评论(0编辑  收藏  举报