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
常用命令选项
- -F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
- -v var=value 赋值一个用户定义变量,将外部变量传递给awk
- -f scripfile 从脚本文件中读取awk命令
- -m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
模式:
- /正则表达式/:使用通配符的扩展集。
- 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。
- 模式匹配表达式:用运算符~(匹配)和~!(不匹配)。
- BEGIN语句块、pattern语句块、END语句块。
更多见如下博文
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。