惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园_首页
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
Last Week in AI
Last Week in AI

王欣的博客

第6章:工具篇——使用 RunningHub(ComfyUI)生成短剧 - 王欣说AI|信息安全|AIGC|AI 第5章:工具篇——使用小云雀Agent生成短剧 - 王欣说AI|信息安全|AIGC|AI 第4篇:导演思维 + AI素材生成全流程 - 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 马斯克出手!SpaceX 豪掷 600 亿美元锁定 Cursor,AI 编程江湖巨变 - 王欣说AI|信息安全|AIGC|AI 第3篇:编剧篇——一切从一个好故事开始 - 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 第2篇:四项基本功——提示词、镜头语言、剪映、投流 - 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 第1篇:为什么2026年是一个人拍短剧的最佳时机?- 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 2026 AI 开发新范式:Harness Engineering(驾驭工程)为何是智能体的决胜点? - 王欣说AI|信息安全|AIGC|AI 通过Claude Code的源码分析其技术架构 - 王欣说AI|信息安全|AIGC|AI 没团队、没演员、没经验——我一个写代码的,用AI独自做完了短剧《顶级温差》 - 王欣说AI|信息安全|AIGC|AI 谁能替你操作电脑?OpenClaw vs Claude Code vs Codex 终极拆解 - 王欣说AI|信息安全|AIGC|AI OpenClaw macOS安装:飞书机器人一键生成小说+分镜 - 王欣说AI|信息安全|AIGC|AI AI公司亲自下场研究 Macos上跑Docker Desktop遇到registry-1.docker.io网络不通问题填坑笔记 - 王欣说AI|信息安全|AIGC|AI Macos上跑Docker Desktop遇到registry-1.docker.io网络不通问题填坑笔记 - 王欣的博客|微服务|RPC|信息安全|AIGC RocketMQ的死信队列你了解多少?怎么实现的? - 王欣说AI|信息安全|AIGC|AI RocketMQ的死信队列你了解多少?怎么实现的? - 王欣的博客|微服务|RPC|信息安全|AIGC Dubbo服务间的连接是怎么控制处理的? - 王欣说AI|信息安全|AIGC|AI Dubbo服务间的连接是怎么控制处理的? - 王欣的博客|微服务|RPC|信息安全|AIGC Seata 基本原理和源码分析 - 王欣说AI|微服务|RPC|信息安全|AIGC 分布式事务一致性算法Paxos、raft、zab等的比较 - 王欣说AI|微服务|RPC|信息安全|AIGC 谈谈各种流程引擎、规则引擎 - 王欣说AI|微服务|RPC|信息安全|AIGC 从netty组件的传输讲讲io - 王欣说AI|微服务|RPC|信息安全|AIGC JVM内存结构的历史 (从Jdk1.6、1.7、8) - 王欣说AI|信息安全|AIGC|AI 怎么定位线上的内存溢出? - 王欣说AI|微服务|RPC|信息安全|AIGC MQ组件盘点,哪些你用在了生产中? - 王欣说AI|信息安全|AIGC|AI JVM内存结构的历史 (从Jdk1.6、1.7、8) - 王欣的博客|微服务|RPC|信息安全|AIGC 怎么定位线上的内存溢出? - 王欣的博客|微服务|RPC|信息安全|AIGC Seata 基本原理和源码分析 - 王欣的博客|微服务|RPC|信息安全|AIGC 分布式事务一致性算法Paxos、raft、zab等的比较 - 王欣的博客|微服务|RPC|信息安全|AIGC
rpc跟踪日志常用shell统计脚本 - 王欣说AI|微服务|RPC|信息安...
2018-12-31 · via 王欣的博客

rpc跟踪日志常用shell统计脚本

一、应用日志分析
rpc跟踪日志作为时间序列数据,一般字段有:时间、traceId、接口名、执行时间ms、执行结果等。笔者将自己常用的shell统计脚本记录下来,也希望读大家有帮助。

下面的日志信息trace.log,字段分别是:时间| traceId|接口名|执行时间ms|执行结果

1
2
3
4
5
6
7
8
9
10
11
2018-10-01 14:00:00|1|getById|1|success|
2018-10-01 03:01:00|2|getById|100|fail|
2018-10-02 02:00:00|3|getById|1000|success|
2018-10-01 02:00:00|4|updateById|1000|success|
2018-10-01 02:00:00|5|getById|1000|success|
2018-10-01 02:00:00|6|updateById|200|success|
2018-10-02 14:56:00|7|updateById|20|success|
2018-10-01 02:00:00|8|updateById|60|fail|
2018-10-01 03:00:00|9|updateById|200|success|
2018-10-01 02:02:00|10|updateById|20|success|
2018-10-01 03:02:00|11|insert|20|success|

请实现如下需求:

1、执行结果大于200ms的记录

1
awk -F "|" '{if($4>=200){print $1" "$2" "$3" "$4 }}' trace.log

执行结果

1
2
3
4
5
2018-10-02 02:00:00 3 getById 1000
2018-10-01 02:00:00 4 updateById 1000
2018-10-01 02:00:00 4 getById 1000
2018-10-01 02:00:00 5 updateById 200
2018-10-01 03:00:00 8 updateById 200

2、2018-10-01 日接口数量排行前3

1
awk '/2018-10-01/' trace.log |awk -F "|"	 '{print $3}'  |sort|uniq -c|sort -rn| head -3

执行结果

1
2
3
5 updateById
3 getById
1 insert

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
2
3
getById 1 1 0 2
updateById 2 1 2 1
insert 1 0 0 0

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
2
3
getById 25%
updateById 16.6667%
insert 0%

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
2
3
getById 525.25
updateById 250
insert 20

二 、简单数据处理

1、删除id.txt重复id

1
2
3
4
5
6
7
8
aaaaa
2
111
2
111
aaaaa
aaaaa
aaaaa

脚本

1
cat id.txt | sort | uniq

执行结果

1
2
3
111
2
aaaaa

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