我有一个用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/