AWK是一种处理文本文件的语言,可以对数据分析并生成报告,是一个强大的文本分析工具。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
这里主要介绍的是利用awk进行日志分析,比如QPS高峰和低峰等
基本用法:
假设app.log日志内容如下:
127.0.0.1 - - 2020/04/07+16:21:01 "GET /index/abc" 200
127.0.0.1 - - 2020/04/07+16:21:01 "GET /index/abc" 200
127.0.0.1 - - 2020/04/07+16:21:02 "GET /index/aaa" 200
127.0.0.1 - - 2020/04/07+16:21:03 "GET /index/bbb" 404
实例:
# 每行按空格或TAB分割,输出文本中的1、4项
$ awk '{print $1,$4}' app.log
---------------------------------------------
127.0.0.1 2020/04/07+16:21:01
127.0.0.1 2020/04/07+16:21:01
127.0.0.1 2020/04/07+16:21:02
127.0.0.1 2020/04/07+16:21:03
# 根据时间去重和统计(uniq -c)求QPS值,并排序(sort -n从小到大,sort -r从大到小)
$ cat app.log | awk '{print $4}' | uniq -c | sort -n
---------------------------------------------
1 2020/04/07+16:21:02
1 2020/04/07+16:21:03
2 2020/04/07+16:21:01(代表当前时间点请求的QPS最高是2)
# 如果要具体到某个API接口,比如abc接口
$ cat app.log | grep 'abc' | awk '{print $4}' | uniq -c | sort -n
---------------------------------------------
2 2020/04/07+16:21:01
加我微信公众号:,定期更新文章,一起学习哦~
网友评论