我有一个用Go编写的gRPC服务,它有很长的运行流。我想要一种方法来衡量每个流的网络/带宽使用情况,并将这些信息提供给prometheus。
我找到grpc.StreamServerInterceptor
但是从我收集的内容来看,它并不能让你访问编组的消息(我需要弄清楚它的大小)。
我找到了this第三方中间件,但它似乎没有导出任何与网络相关的信息。
答案 0 :(得分:2)
您可以在gRPC stats.Handler
和servers上设置clients。您可以在提供的上下文中放置所需的任何标签。
gRPC将使用stats.OutPayload
或stats.InPayload
调用处理程序的HandleRPC
方法,其中包含消息(原始和已编码),未压缩和线长以及时间戳。< / p>