Nginx日志分析

释放双眼,带上耳机,听听看~!

最近在做一些性能排查,根据Nginx日志进行分析,这里记录一些命令,当一个总结。

如果需要抓取请求处理的时间,在log_format里加上$request_time参数即可。

以下是我常用的一些命令,日志名称为access_2019-10-28.log。

日志格式log_format如下:Nginx日志分析

补:Nginx日志记录POST请求参数,只要项目使用的是proxy_pass,使用“request_body”日志参数就可以,不然还得需要lua脚本支持才可以。

1、获取pv数。

cat access_2019-10-28.log | wc -l

2、获取ip数。

cat access_2019-10-28.log | awk ‘{print $1}’| sort -k1 -r |uniq | wc -l

3、获取最耗时的请求时间、URL、所耗时长前10。

cat access_2019-10-28.log | awk ‘{print $4,$7,$NF}’ | awk -F ‘"’ ‘{print $1,$2,$3}’ | sort -k3 -rn | head -10

4、获取某一时刻的请求数量。

cat access_2019-10-28.log | grep “28/Oct/2019:12:12:12” | wc -l

可以把秒去掉得到分钟的数据,把分钟去掉得到小时的数据,以此类推。

5、获取每分钟的请求数量,输出为csv文件。

cat access_2019-10-28.log | awk ‘{print substr($4,14,5)}’ | uniq -c | awk ‘{print $2","$1}’ > access.csv

可以用excel打开生成柱状图,非常有利于分析;下图示例:

Nginx日志分析

总结一下:

其实过来过去也就下边这么几个命令:
grep:文本过滤
sort:排序
uniq:去重
awk:文本处理

①命令可以组合使用,单个命令也可以使用多次,达到多重过滤的效果;

②前面一个命令的输出,即为后一个命令的输入,流式处理。只要学会组合使用命令,都会变得异常的简单。

③命令都比较简单,这里单独说一下上边儿用到的“print substr”。

substr($4,14,5)>>>表示从第4个字段里的第14个字符开始,截取5个字符结束。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

WordPress网站专用docker容器环境带Waf

2020-7-18 20:04:44

安全运维

运维安全-Gitlab管理员权限安全思考

2021-9-19 9:16:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索