通过对awk, wc, uniq, grep, sort等命令的组合,分析nginx的access和error日志。
统计各种总量、单位时间量。
access.log日志格式(见下图)
说明:
a). 按照Tab键拆分每项数据
b). 字段含义(如下说明)
column1:ip_address
column2:log_time
column3:request
column4:status_code
column5:send_bytes
column6:referer
需求一:统计总记录数,总成功数,各种失败数:404,403,500
1. 提取总数
思路:拆分原始文件,找到状态列,按照不同条件值,分别获取总数。
a). 使用awk拆分并提取状态码列,并保证该列值大于0,并使用wc命令计算总行
wc -l 对结果进行汇总
awk使用-F来指定数据项分隔符。一个字符可是直接使用,比如-F:(英文逗号分隔),否则应该使用英文‘’将分隔符括起来,比如
-F'\t'。
b). 添加说明信息
wc -l 的结果作为awk的第一列,所以取$1
2. 提取成功、各种失败总数
a). 200成功总数
在使用awk时,针对变量使用条件执行过滤
b). 404失败总数
c). 403失败总数
d).500失败总数
需求二:各种错误中,哪类URL出现的次数最多,要求剔除重复项,并倒叙给出结果
思路:
1). 拆分获取request和StatusCode
2). 对request再拆分获取真实URL
3). 对URL排序,排重,再计算总数,最后再倒叙给出结果
a). 使用awk得到某类错误(status=500)包含request的中间结果。注意request和status之间使用空格连接
b). 针对中间结果再次使用空格进行拆分,获取request中的URL
当内容默认使用空格或tab来分隔数据项时,使用awk拆分时,不需要使用-F来执行分隔符。
如下面命令中的 awk '{print $2}' 没有使用-F指定分隔符。
c). 排序、去除重复项
使用sort对结果进行默认排序
使用uniq -c去除重复项并给出计数结果
d). 根据图上结果,发现重复的URL会被自动计数,但是计数的结果顺序是随机的。我们需要再次针对结果进行排序,使用sort 中的 -k指定列,并指明要求是按照数字的倒叙
去除重复项后,希望对结果进行倒叙
-k指明使用哪一列进行排序,-k1:表示使用第一列进行排序
n指明排序列为数字
r代表使用倒叙
所以-k1nr 代表:要进行排序的第一列请作为数字看待,并且结果要进行倒叙
注意:在去重前,最好先使用sort对结果进行排序,然后才能顺利合并。
需求三:要统计URL中文件名出现的次数,结果中要包含Code 和 Referer。但是 URL和 Referer中都包含 / 字符,对于过滤有干扰,尝试去解决。
思路:
1). 先拆分获取必要数据
2). 想办法将URL中文件名之前的部分去除
3). 然后再排序等
a). 查看原始文件内容
使用cat命令查看原始文件内容。
b). 获取必要信息
由于是\t分隔各个数据项,所以符合默认拆分,不需要-F指明分隔符
c).将URL中文件名之前的部分剔除,但保留referer中的"/"。
这部分重点:使用了sed命令对URL进行过滤,只保留URL中的文件名部分,其余部分不再要。
本sed命令只对第一列数据进行应用过滤操作。
#.*/.∗#\1#解释:
整个内容被#分成两部分
第一部分(两个#号中间的内容).*/.∗,用来匹配URL中的两部分内容
比如URL为:/koubei/2012/11/19/60/abc.jpg (注意最后有一个空格)
.*/用来匹配:"/koubei/2012/11/19/60/"
.∗用来匹配:"abc.jpg "
第二部分
\1,用来匹配第一部分中()中的内容,即 "文件名.扩展名 "
整个命令的含义是:
将URL替换成文件名
即将 "/koubei/2012/11/19/60/abc.jpg "替换成"abc.jpg "
d). 执行排序
注意这里要对第一列先进行排序,否则会影响去重。
e).去重
f).倒叙出结果
相关推荐
awk测试从nginx查询qps的测试日志
本文主要给大家总结了关于Nginx日志统计分析的一些常用命令,分享出来供大家参考学习,下面来一起看看详细的介绍: 一、IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一...
linux grep sed awk命令的综合运用以及详解
主要减少linux系统中的查询三剑客grep,awk,sed的使用方法和详解,适合linux初学进行学习,适合在日常对于文本内容或者命令执行结果的搜索,可以完善和简便自己的工作内容和完善对于shell脚本的使用。
Linux 三剑客 Awk、Sed、Grep 命令详解
Linux三剑客awk sed grep全攻略
sed awk grep sed awk grepsed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep
包含命令:awk、cat、cut、diff、echo、gawk、grep、head、sed、sort、tac、tail、tr、uniq、wc 可以在windows上cmd窗口显示彩色文字,用法:echo.exe -e "\033[32;1mGREEN\033[0m
awk本身就是UNIX/Linux的一种编程语言,用于处理数据和生成报告。 awk逐行方式扫描文件(或输入),以查找匹配某个特定模式的文本行,并对这些文本行执行指定动作。 awk是三个创始人的首字母,代表三个作者:Alfred ...
awk、sed、grep是linux的三剑客,在文本处理的场景中,掌握这三个命令真的是很有用
linux/unix awk使用手册 AWK 的功能是什么?与 sed 和 grep 很相似,awk 是一种样式扫描与处理工具。但其功能却大大强于 sed 和 grep。awk 提供了极其强大的功能:它几乎可以完成 grep 和 sed 所能完成的全部工作,...
linux-awk.doc
介绍在linux如何使用awk工具,以及和linux的其它工具的综合应用
总结awk、sed、grep的用法。
linux的强大的文本处理工具grep,sed,awk(文本处理三剑客)
常用linux命令在windows环境下使用 windows grep awk sed cat
sed awk grep命令使用 sed awk grep命令使用 sed awk grep命令使用
你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是...
系统总结了awk,sed,grep工具和正则表达式
windows下的grep、sed、awk