在 grpc-java 服务器客户端上运行 grpcdebug 工具的问题

问题描述 投票:0回答:1

我遇到了Go语言的grpcdebug工具。我正在运行不安全的 grpc java 服务器和客户端(服务器在 localhost:50051 上提供服务)。我按照 “从源代码编译” 步骤进行安装并运行 health 命令

grpcdebug localhost:50051 health
,收到此错误消息
<Overall>:   SERVICE_UNKNOWN
,对于
grpcdebug localhost:50051 channelz channels
命令,收到
2024/04/19 17:07:22 failed to fetch top channels: rpc error: code = Unimplemented desc = Method not found: grpc.channelz.v1.Channelz/GetTopChannels
错误消息。

问题:

  1. 我是否必须在服务器和客户端上进行任何代码更改(例如添加任何服务)。我是否必须实现这些 Channelz 方法(我的想法是 grpcdebug 工具会处理这些方法)。
  2. 由于该工具是go语言,所以不兼容在java服务器和客户端上运行。这就是我收到上述错误消息的原因吗?
  3. 是否有任何文档可以为 java grpc 应用程序运行 grpcdebug 工具或任何适用于 grpc-java 的内部工具。
debugging grpc grpc-java
1个回答
0
投票

code = 未实现 desc = 未找到方法:grpc.channelz.v1.Channelz/GetTopChannels

此错误表示您的服务器上没有可用的 Channelz 服务(或者该服务太旧且不支持 GetTopChannels;但这里不太可能出现这种情况)。

grpc-java 调试示例使用

AdminInterface
API 添加它,如果您使用 xDS,它会添加 Channelz 以及 CSDS:

import io.grpc.services.AdminInterface;

final Server server = Grpc.newServerBuilderForPort(port, InsecureServerCredentials.create())
    .addService(new HostnameGreeter(hostname))
    .addServices(AdminInterface.getStandardServices()) // the key add for enabling grpcdebug

您也可以直接添加channelz:

import io.grpc.protobuf.services.ChannelzService;

final Server server = Grpc.newServerBuilderForPort(port, InsecureServerCredentials.create())
    .addService(new HostnameGreeter(hostname))
    .addServices(ChannelzService.newInstance(100)) // the key add for enabling grpcdebug
© www.soinside.com 2019 - 2024. All rights reserved.