go - 测量每个流的 gRPC 带宽

标签 go grpc prometheus

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

我找到了 grpc.StreamServerInterceptor但据我所知,它不会让您访问已编码的消息(我需要计算出大小)。

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

最佳答案

你可以设置一个stats.Handler在两个 gRPC 上 serversclients .您可以在提供的上下文中放置所需的任何标签。

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

all in the source code .

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

相关文章:

grpcui : command not found

node.js - 如何在Google Speech-to-Text API中处理多个streamingRecognize请求?

java - 使用 Prometheus 监控 Java 网络应用程序

kubernetes - Grafana HTTP 错误网关错误和模板初始化失败错误

pointers - 空结构 slice 的地址

go - 运行golang代码出错,regex包丢失?

validation - Go - 用于验证的数据类型

go - 如何在不复制谷歌文件的情况下制作工作协议(protocol)?

Prometheus 区别 jvm_gc_collection_seconds_sum 和 jvm_gc_pause_seconds

struct - 如何在struct的方法中设置和获取字段