小技巧!Wireshark 讓調試 grpc 不再困難

以前用 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 大家有什麼看法,歡迎留言一起討論,大牛多留言 ^_^

參考資料

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

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/nQ-0n8g7d4nXscjyw_n57w