在进行gRPC本地开发时,想通过wireshark抓取gRPC流量,选中对应的gRPC服务端port后,
wireshark抓到的包如下图,仅能识别TCP协议而无法解析GRPC协议:
想要wireshark支持解析gRPC协议,需通过如下2步。
步骤一:Decode As HTTP2
gRPC是构建在Http2上的,可选中图中gRPC 通信过程中的任一行数据(可通过gRPC Server端IP或Port识别),然后右键Decode As,如下图:
然后在弹出窗口可为指定的port设置设置为HTTP2协议,最后点击OK或Save,如下图:
此时再次查看gRPC通信效果如下图:
可以发现设置了Decode As HTTP2协议后,wireshark可以识别出Http2及gRPC协议,
但还是无法解析gRPC通信过程中的Protobuf数据。
注:
此步骤在之后抓取新的gRPC通信时,需要对新的gRPC请求重新设置Decode As HTTP2。
步骤二:设置wireshark ProBuf协议加载proto文件目录
想要wireshark支持解析Protobuf,需进入wireshark -> 编辑 -> 首选项 -> Protols -> ProBuf
设置界面,
勾选红框中的设置,然后点击Edit选择gRPC对应的proto定义文件存放目录,
点击Edit后在如下界面选择proto存储目录,并点击勾选Load all files列,最后点击OK即可。
此时再次查看gRPC通信效果如下图:
可以发现设置了proto目录后,wireshark已经可以识别gRPC通信过程中的Protobuf消息及其field的具体定义和值。
注:
后续想要再解析新的gRPC协议,可统一将proto定义放到此proto目录中。