grpc - 如何使用 opentracing api 在 grpc 客户端请求中收集和传递 b3 传播标头?
问题描述
我正在使用带有 jaegar 跟踪器的https://github.com/opentracing-contrib/java-grpc在我的 grpc 客户端程序中启用跟踪。现在我想使用 istio 服务网格来处理服务器端的跟踪。https://istio.io/latest/docs/tasks/observability/distributed-tracing/overview/。因此,grpc 客户端现在需要将适当的跟踪 HTTP 标头与每个 grpc 客户端请求一起发送,以便 istio 可以将这些指标发送给 Jaegar。有没有人有一个在 grpc 客户端中获取跟踪跨度信息并在 grpc 客户端请求中包含相应的 b3 传播标头的工作示例?
需要在 java/C# grpc 客户端请求中传递以下 http 标头:
- x-请求-id
- x-b3-traceid
- x-b3-spanid
- x-b3-parentspanid
- x-b3-采样
- x-b3-标志
- x-ot-span-上下文
谢谢。
解决方案
查看OpenTelemetry-Java-Instrumentation项目。它可以自动跟踪您的应用程序,而无需编写自定义代码。它使用在应用程序旁边的 JVM 中运行的检测代理。
java -javaagent:path/to/opentelemetry-javaagent-all.jar \
-jar myapp.jar
它还支持将标头传播到下游请求。
他们刚刚添加了对b3-multi 标头的支持,因此未来几天应该会提供新版本
推荐阅读
- java - 从字符串创建自定义 RSA 密钥
- r - 在R中设置数组时如何将数字定义为缺失值
- python - 在卡祖中获得选举配方的现任领导人
- c# - DataTrigger 中的引用按钮名称
- javascript - 更新/保存动态下拉菜单的值完全由 JS 中的其他下拉菜单填充
- python - 传递 3 个参数,但引用说我正在传递 4
- image - 是否可以使用 Dart/Flutter 绘制图像?
- r - 使用 ranger 计算一致性指数(R 包)
- javascript - 不断收到错误:缺少调用构造函数的“()”
- javascript - Cassandra:使用 node.js 将二进制 blob 写入表