我有一个用Go编写的gRPC服务,该服务具有非常长的运行流。我想要一种方法来测量每个流的网络/带宽使用率,并将该信息提供给prometheus

我找到了 grpc.StreamServerInterceptor ,但是从我的收集中,它无法使您访问已编码的消息(需要确定大小)。

我找到了this第三方中间件,但它似乎未导出任何与网络相关的信息。

最佳答案

您可以在gRPC stats.Handler servers上都设置clients。您可以在需要的上下文中放置所需的任何标签。

然后,gRPC将使用 HandleRPC stats.OutPayload 调用处理程序的stats.InPayload方法,其中包含消息(原始和编码的消息),其未压缩长度和线路长度以及时间戳。

这是all in the source code

关于go - 测量每个流的gRPC带宽,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50415796/

10-15 20:20