我们应该使用什么 gRPC 监控和 grpc-java 指标?

What gRPC monitoring and metrics for grpc-java should we be using?

我们在生产环境中使用了很多 grpc 通道。一些通道打开然后关闭,许多通道一直保持打开状态。

最近在一个开发项目之后,我们意识到我们让一些通道保持打开状态而不是关闭它们,直到它变得非常难以修复时我们才意识到这一点。

我们希望对连接进行一些监控。

我找到了 https://github.com/grpc/grpc-java/blob/master/documentation/monitoring-service-tutorial.md 但它说

Note: The monitoring service requires the instrumentation-java library implementations, which are still being developed. The steps in this tutorial will not work until the instrumentation-java implementation is released.

我正在为我们的 grpc 寻找一些简单的监控。例如通道打开、吞吐量、错误计数等基本内容。

只是想知道您的团队在生产中使用什么来监控 grpc java?

您可以使用拦截器获取指标。

java-grpc-prometheus 提供服务器端和客户端指标(通道、按方法发送的消息等)

除此之外,您可以使用 Opentracing spans 检测您的代码,以便更轻松地跟踪和衡量整个交易。

我有一个 GitHub 项目监控每个 RPC 调用的以下内容:

  1. 服务名称(在原型文件中)
  2. 方法名称(在原型文件中)
  3. 计时(延迟)
  4. 状态
  5. 网站(CLIENT/SERVER)

它还监控服务器和客户端线程池信息。

https://github.com/asarkar/kotlin/tree/master/grpc-learning