nginx日志分析-必备
1、查找某个时间段的日志,故障后查询原因使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [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状态码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [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查询某一列等于什么值如何实现
1 2 3 | [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/" <br> "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 <br>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/" <br> "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<br> 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状态码详解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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测试断电续传
1 2 3 4 | [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/" <br> "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<br>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/" <br> "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 <br>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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构