小技巧!Wireshark 让调试 grpc 不再困难

Go语言精选

共 1441字,需浏览 3分钟

 ·

2021-07-31 20:42

以前用 wireshark[1] 分析过 GRPC 流量,非常方便,年初用同样方法分析了HOL blocking 问题,感兴趣的可以看看。今天记录下全过程,分享给大家,贼好用^^

tcpdump

tcpdump -i eth0 -w tcpdump.log

上面是直接 dump 整个网卡的流量,如果太大的话,可以只 dump 固定 ip 或端口的

我们线上有脚本,可以全天 dump 数据,然后按文件大小进行切割。大家可以自己写,还蛮方便的,注意切割不要把磁盘打满哦

ssh root@some.host 'tcpdump -i eth0 port 80 -s 0 -l -w -' | wireshark -k -i -


还有一种骚操作是 ssh 实时 wireshark 解析,好处是不占用磁盘空间,但不是所有人都有权限

配置 wireshark

因为 GRPC 是在 http2 之上运行的,协议是 protobuf, 所以需要加载 pb 文件,否则 wireshark 无法识别自定义内容

另外,如果走了 tls 加密,还需要在 wireshark 上加载配置解密流量

打开 Wireshark->Preference->Protocols->Protobuf

然后打开 Edit, 输入本次测试用的 proto 文件路径

proto 文件可能引用其它 pb 文件,所以也需要填写搜索路径,然后确定 这就配置完成

解析 GRPC

打开 tcpdump.log 数据文件以后,打开 Wireshark->Analyze->Decode As

如上所示,因为我要解析 10177 http2, 添加后确定

这时会发现,己经能看到 http2 包数据了。如果你的数据是加密的,记得配置 tls

过滤

Wireshark 非常强大,可以根据 http2 header 来过滤,也可以根据 body 来过滤,很方便

如上图,可以看到解析出了业务 endpoints, header 以及 request 内容。比如我过滤了 http2.header.value 找到某个固定 client 的所有请求

方不方便?好不好用?撒花 ~~

小结

Wireshark 还有很多高级功能,用的时候再搜索就行。 写文章不容易,如果对大家有所帮助和启发,请大家帮忙点击在看点赞分享 三连

关于 调试 GRPC 大家有什么看法,欢迎留言一起讨论,大牛多留言 ^_^

参考资料

[1]

wireshark: https://www.wireshark.org/,



推荐阅读


福利

我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。

浏览 67
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报