Я наткнулся на инструмент grpcdebug на языке go. Я использую Java-сервер и клиент Insecure grpc (сервер обслуживается на локальном хосте: 50051). Я выполнил шаг «компилировать из исходного кода» для установки и выполнил команду работоспособности 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
сообщение об ошибке.
Вопросы:
code = Нереализовано desc = Метод не найден: grpc.channelz.v1.Channelz/GetTopChannels
Эта ошибка говорит о том, что на вашем сервере нет службы Channelz (или служба слишком старая и не поддерживает GetTopChannels; но в данном случае это маловероятно).
Пример отладки grpc-java добавляет его с помощью AdminInterface
API, который добавляет Channelz, а также CSDS, если вы используете xDS:
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