问题描述
我在Jaegar Tracer中使用https://github.com/opentracing-contrib/java-grpc来启用grpc客户端程序中的跟踪。现在,我想使用istio服务网格来处理服务器端的跟踪。 https://istio.io/latest/docs/tasks/observability/distributed-tracing/overview/。 因此,grpc客户端现在需要与每个grpc客户端请求一起发送适当的跟踪HTTP标头,以便istio可以将这些度量标准发送到Jaegar。有没有人有在grpc客户端中获取跟踪范围信息并在grpc客户端请求中包括相应的b3传播标头的有效示例?
以下http标头需要在java / C#grpc客户端请求中传递:
- x-request-id
- x-b3-traceid
- x-b3-spanid
- x-b3-parentspanid
- x-b3采样
- x-b3-flags
- x-ot-span-context
谢谢。
解决方法
看看OpenTelemetry-Java-Instrumentation项目。它可以提供对应用程序的自动跟踪,而无需编写自定义代码。它使用在应用程序旁边的JVM中运行的检测代理。
java -javaagent:path/to/opentelemetry-javaagent-all.jar \
-jar myapp.jar
它支持exporting metrics to Jaeger
它还支持propagating headers to downstream requests。
他们刚刚添加了对b3-multi headers的支持,因此未来几天内将有新版本发布。