分析nginx日志常用的命令总结
2024-09-30 04:11:23
1. 利用grep ,wc命令统计某个请求或字符串出现的次数
比如统计GET
/app/kevinContent
接口在某天的调用次数,则可以使用如下命令:
cat /usr/local/nginx/logs/access.log | grep 'GET /app/kevinContent' | wc -l
其中
cat
用来读取日志内容,
grep
进行匹配的文本搜索,
wc
则进行最终的统计。
当然只用
grep
也能实现上述功能:
grep 'GET /app/kevinContent' /usr/local/nginx/logs/access.log -c
2 统计所有接口的调用次数并显示出现次数最多的前二十的URL
cat /usr/local/nginx/logs/access.log|awk '{split($7,b,"?");COUNT[b[1]]++;}END{for(a in COUNT) print COUNT[a], a}'|
sort
-k1 -nr|
head
-n20
2722 /
10
/group1/M00/00/00/wKgKylqT3OCAUrqYAAAwK2jUNaY262
.png
9
/group1/M00/00/00/wKgKylqUxBOAFo8hAAKHUIZ3K9s443
.jpg
6
/group1/M00/00/00/wKgKylqUrceAGkPOAAAwK2jUNaY843
.png
4
/group1/M00/00/00/wKgKylqTsFCAdeEuAAKHUIZ3K9s287
.png
3
/group2/M00/00/00/wKgKy1qUtu2Acai1AAKHUIZ3K9s555
.jpg
2
/favicon
.ico
1
/group2/M00/00/00/wKgKy1qT3P-Ae-vQAAKHUIZ3K9s459
.png
1
/group2/M00/00/00/wKgKy1qT3P-Ae-vQAAKHUIZ3K9s459
.jpg
1
/group1/M00/00/00/wKgKylqUyMuAdkLwAAAwK2jUNaY176
.png
解释说明:
这里
awk
是按照空格把每一行日志拆分成若干项,其中$7对应的就是URL,当然具体对应的内容和使用nginx时设置的日志格式有关。
这样就可以通过拆分提取出IP,URL,状态码等信息。
split
是
awk
的内置函数,在此的意思是按照“?”将URL进行分割得到一个数组,并赋值给b。
COUNT[b[1]]++表示相同的接口数目加1。
sort
用来排序,-k1nr表示要把进行排序的第一列作为数字看待,并且结果倒序排列。
head
-n20意为取排名前二十的结果。
3. 统计报错的接口
统计nginx日志中报错较多的接口,对于分析服务器的运行情况很有帮助,也可以有针对性的修复bug和性能优化。
[root@Fastdfs_storage_s1 ~]
# cat /usr/local/nginx/logs/access.log|awk '{if($9==500) print $0}'|
awk
'{split($7,b,"?");COUNT[b[1]]++;}END{for(a in COUNT) print COUNT[a], a}'
|
sort
-k 1 -nr|
head
-n10
先用
awk
’{
if
(9==500)print0}’过滤出500错误的日志,然后在此基础上做统计,其思路同2类似!
4. 统计HTTP响应状态码
通过统计响应状态码可以看出服务器的响应情况,比如499较多时可以判断出服务器响应缓慢,再结合3可以找出响应慢的接口,
这样就能有针对性进行性能分析和优化。
[root@Fastdfs_storage_s1 ~]
# cat /usr/local/nginx/logs/access.log |awk '{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
|
sort
-k 2 -nr
200 2733
304 20
404 11
5. 统计服务器并发量
cat /usr/local/nginx/logs/access.log |grep '10.15.19.138'| awk '{COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}'
|
sort
-k 2 -nr|
head
-n20
nginx转发请求时可以记录响应请求的服务器IP,先通过
grep
过滤出某个服务器所有的请求,然后统计各个时间点的并发请求响应的数量即可得到某个服务器的并发量。
$4对应的是响应时间。当然,如果把
grep
的内容更换成某个接口也就可以统计出该接口对应的并发量了。
6. grep多条件与或操作
有时候我们需要在nginx日志通过多个条件来查找某些特定请求,比如我需要找个某个用户浏览文章的请求,则可以需要同时匹配两个条件:
浏览文章接口GET
/app/kevinContent
和userId=59h7hrrn。
grep
对应的与操作命令如下:
[root@Fastdfs_storage_s1 ~]
# grep -E "GET /app/kevinContent.*userId=59h7hrrn" /usr/local/nginx/logs/access.log
grep
与命令格式:
grep
-E “a.*b”
file
,ab条件同时成立
而
grep
或命令的格式为:
grep
-E “a|b”
file
,ab两个条件有一个成立即可。
7. grep打印匹配的前后几行
有时候我们需要查找某个特定请求的前后几行的请求,以观察用户的关联操作情况。
grep
提供了一下几条命令:
# grep -C 5 'parttern' inputfile //打印匹配行的前后5行。
# grep -A 5 'parttern' inputfile //打印匹配行的后5行
# grep -B 5 'parttern' inputfile //打印匹配行的前5行
grep
-An 或
grep
-A n
grep
-Bn 或
grep
-B n
grep
-Cn 或
grep
-C n
如下,打印出access.log日志文件中匹配
/app/kevinContent
关键字符所在行的前后各10行
[root@Fastdfs_storage_s1 ~]
# grep -C 10 'GET /app/kevinContent' /usr/local/nginx/logs/access.log
最新文章
- Eclipse开发环境JDK版本问题和校验问题
- 一个简单的CSS3+js 实现3D BOX
- jquery lazyload延迟加载技术的实现原理分析
- SlimDX.dll安装之后所在位置
- NDK JNI 的关键点
- 解决Twitter Bootstrap Tab URL链接问题
- mac 开发环境安装
- css3的动画特效--元素旋转(transition,animation)
- newcode网学习笔记(1)
- Day4:html和css
- AI - 参考消息(References)
- Linux平台上轻松安装与配置Domino
- OOD之问题空间到解空间—附FP的建模
- [ERROR] Terminal initialization failed; falling back to unsupported
- 【Eclipse】添加builder实现NDK的自动编译
- python之字符串中有关%d,%2d,%02d的问题
- dom编程艺术章12
- 洛谷P2261 [CQOI2007] 余数求和 [数论分块]
- DATGRIDVIEW如何不选择第一行,第一列
- [Linux] find文件查找和grep文件内容查找
热门文章
- centos 7下Hadoop 2.7.2 伪分布式安装
- uvm_factory——我们的工厂(二)
- uvm_factory——我们的工厂(一)
- Hadoop集群_VSFTP安装配置
- UVA 11400 Lighting System Design 照明系统设计
- 2890: C--去掉+86
- C基础:关于预处理宏定义命令
- TortoiseSVN文件夹及文件图标不显示解决方法---20150515
- phpstorm设置方法头信息备注
- Linux内核——进程管理之CFS调度器(基于版本4.x)