vlambda博客
学习文章列表

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

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


awk:

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

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

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

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

awk工作流程:

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

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

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


sort:

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


uniq:

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


wc:

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




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.访问最多的10ip及访问次数

awk '{print $1}' 日志地址 | sort | uniq -c | sort -n -k 1 -r | head -n 10


往期精彩推荐: