性能测试之nginx访问日志分析

时间:2022-07-23
本文章向大家介绍性能测试之nginx访问日志分析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

首先需要介绍一下基于linux的文本分析的一些命令工具;

awk:

  awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,

  awk在其对数据分析并生成报告时,显得尤为强大。

  简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

  它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

awk工作流程:

  读入有"n"换行符分割的一条记录,然后把记录按照指定的域分隔符划分域,填充域

0表示所有的域,1表示第一个域,以此类推

  默认域分隔符是空白键或者tab键

sort:

将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

uniq:

用于去除有序文件中的重复行并将结果输出到标准输出。uniq经常和sort合用,为了使uniq起作用,所有的重复行必须是相邻的

wc:

利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

Nginx 日志分析,我直接用的我机器上的nginx日志,默认的都是可以的,列举几个简单常用的, 如果不清楚你的nginx日志地址,查看nginx.conf文件即可,看下我这边的日志截图:

awk '{print $1}' access.log       # IP 地址  ($remote_addr)  如下图所示,其他不再截图示意,大家自行操作
awk '{print $4,$5}' access.log    # 日期和时间  ([$time_local])
awk '{print $7}' access _log      # URI ($request)
awk '{print $9}' access _log      # 状态码 ($status)
awk '{print $10}' access _log     # 响应大小 ($body_bytes_sent)
awk '{print $12}' access _log     # 代理
存在日志格式有出入,命令需求调整,但思路是一致的
1.列举一些组和命令,根据访问IP统计UV
 
awk '{print $1}'  access.log|sort | uniq -c |wc -l
 
2.统计访问URL统计PV
 
awk '{print $7}' access.log|wc -l
 
3.查询访问最频繁的URL
 
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more
 
4.查询访问最频繁的IP
 
awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more
 
5.访问最多的10个ip及访问次数
 
awk '{print $1}' 日志地址 | sort | uniq -c | sort -n -k 1 -r | head -n 10