内容提要
本文介绍了用于分析RPC跟踪日志的Shell统计脚本,包括记录执行时间超过200ms的请求、接口数量排行、执行时间统计、失败率查询和平均耗时计算等,提供了具体命令示例和执行结果,以帮助用户高效处理日志数据。
关键要点
-
rpc跟踪日志包含时间、traceId、接口名、执行时间ms、执行结果等字段。
-
脚本可以记录执行时间超过200ms的请求,使用命令:awk -F '|' '{if($4>=200){print $1" "$2" "$3" "$4 }}' trace.log。
-
可以统计2018-10-01日接口数量排行前3,使用命令:awk '/2018-10-01/' trace.log | awk -F '|' '{print $3}' | sort | uniq -c | sort -rn | head -3。
-
可以对各个接口的执行时间进行范围统计,使用命令: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。
-
可以查询各个接口的失败率,使用命令:awk -F '|' '{totalCnt[$3]++;if($5=="fail"){failCnt[$3]++}} END{for(i in totalCnt)print i,(failCnt[i]/totalCnt[i])*100 "%"}' trace.log。
-
可以查询各个接口的平均耗时,使用命令:awk -F '|' '{totalCnt[$3]++;{rtSum[$3]+=$4}} END{for(i in totalCnt)print i,(rtSum[i]/totalCnt[i])}' trace.log。
延伸问答
如何记录执行时间超过200ms的RPC请求?
可以使用命令:awk -F '|' '{if($4>=200){print $1" "$2" "$3" "$4 }}' trace.log。
如何统计某一天接口的数量排行?
使用命令:awk '/2018-10-01/' trace.log | awk -F '|' '{print $3}' | sort | uniq -c | sort -rn | head -3。
如何计算各个接口的失败率?
可以使用命令:awk -F '|' '{totalCnt[$3]++;if($5=="fail"){failCnt[$3]++}} END{for(i in totalCnt)print i,(failCnt[i]/totalCnt[i])*100 "%"}' trace.log。
如何统计接口执行时间的范围?
使用命令: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。
如何计算各个接口的平均耗时?
可以使用命令:awk -F '|' '{totalCnt[$3]++;{rtSum[$3]+=$4}} END{for(i in totalCnt)print i,(rtSum[i]/totalCnt[i])}' trace.log。
rpc跟踪日志的主要字段有哪些?
主要字段包括时间、traceId、接口名、执行时间ms和执行结果等。