rpc跟踪日志常用shell统计脚本
一、应用日志分析
rpc跟踪日志作为时间序列数据,一般字段有:时间、traceId、接口名、执行时间ms、执行结果等。笔者将自己常用的shell统计脚本记录下来,也希望读大家有帮助。
下面的日志信息trace.log
,字段分别是:时间| traceId|接口名|执行时间ms|执行结果
1 | 2018-10-01 14:00:00|1|getById|1|success| |
请实现如下需求:
1、执行结果大于200ms的记录
1 | awk -F "|" '{if($4>=200){print $1" "$2" "$3" "$4 }}' trace.log |
执行结果
1 | 2018-10-02 02:00:00 3 getById 1000 |
2、2018-10-01 日接口数量排行前3
1 | awk '/2018-10-01/' trace.log |awk -F "|" '{print $3}' |sort|uniq -c|sort -rn| head -3 |
执行结果
1 | 5 updateById |
3、对于各个接口的执行时间ms按照(0-50,50-100,100-300,300以上)范围进行数量统计
1 | awk -F "|" '{totalCnt[$3]++;if($4<=50){ms50[$3]++};if($4>50 && $4<=100){ms100[$3]++};if($4>100 && $4<=300){ms300[$3]++};if($4>300){ms300b[$3]++}}END{for(i in totalCnt)print i,int(ms50[i]),int(ms100[i]),int(ms300[i]),int(ms300b[i])}' trace.log |
执行结果
1 | getById 1 1 0 2 |
4、查询trace.log文件各个接口的失败率
1 | awk -F "|" '{totalCnt[$3]++;if($5=="fail"){failCnt[$3]++}}END{for(i in totalCnt)print i,(failCnt[i]/totalCnt[i])*100"%"}' trace.log |
执行结果
1 | getById 25% |
5、查询trace.log各个接口的平均耗时
1 | awk -F "|" '{totalCnt[$3]++;{rtSum[$3]+=$4}}END{for(i in totalCnt)print i,(rtSum[i]/totalCnt[i])}' trace.log |
执行结果
1 | getById 525.25 |
二 、简单数据处理
1、删除id.txt重复id
1 | aaaaa |
脚本
1 | cat id.txt | sort | uniq |
执行结果
1 | 111 |
2、递归查看某个目录磁盘占用大小
1 | du -h --max-depth=2 /data |
一些参考:
http://techslides.com/grep-awk-and-sed-in-bash-on-osx
http://www.grapenthin.org/teaching/geop501/lectures/lecture_10_unix2.pdf
http://coewww.rutgers.edu/www1/linuxclass2005/lessons/lesson9/shell_script_tutorial.html
http://blog.chinaunix.net/uid-26736384-id-5756343.html
感谢您的阅读,本文由 王欣的博客 版权所有。如若转载,请注明出处:王欣的博客(https://wangxin.io/2018/12/31/linux/some_shell_script/)