Проблема с инструментом grpcdebug, запущенным на сервере-клиенте grpc-java

Я наткнулся на инструмент 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 сообщение об ошибке.

Вопросы:

  1. Нужно ли мне вносить какие-либо изменения в код на моем сервере (например, добавлять какую-либо службу) и client. Должен ли я реализовать эти методы Channelz (я думаю, что об этом позаботится инструмент grpcdebug).
  2. Поскольку инструмент находится в стадии разработки, он несовместим для запуска на Java-сервере и клиенте. Это причина, по которой я получаю сообщения об ошибках выше.
  3. Есть ли какая-либо документация по запуску инструмента grpcdebug для Java-приложений grpc или любого собственного инструмента, который работает для grpc-java.
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме