问题标签 [opentracing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 从 zipkintracer 获取 traceId
我正在使用zipkin-go-opentracing,它是 go 中 zipkin 的opentracing API 的实现。
由于(原因)我需要从跨度中获取traceId。所以问题是:给定一个 opentracing.Span,我如何获得 TraceId?我尝试过的一切都给了我某种类型断言错误。
谢谢,
trace - 如何从 OpenTracing API 获取跟踪 ID?
在#105中,davidB 问道:
我想拥有对 Span id (SpanContext id) 的读取权限,以便能够在日志中使用它并报告错误(给最终用户,...)。[skip] 我需要在错误消息中公开“trace id”,然后开发人员可以使用该跟踪来调试支持、QA、最终用户报告的错误。
go - 使用 StreamClientInterceptor 确定 RPC 会话何时结束的最佳方法是什么?
在编写StreamClientInterceptor函数时,确定调用者何时完成 RPC 的最佳方法是什么?对于一元拦截器或在服务器端传递执行 RPC 的处理程序,这很简单,但目前尚不清楚如何最好地在客户端执行此操作,在客户端返回调用程序然后与之交互的ClientStream .
一个用例是检测 OpenTracing,其目标是开始和结束一个跨度以标记 RPC 的开始和结束。
我正在研究的一个策略是让流拦截器返回一个经过修饰的 ClientStream。Header
如果任何接口方法、、、、返回错误或被取消CloseSend
,SendMsg
则此新 ClientStream 认为 RPC 已完成。此外,它将此逻辑添加到:RecvMsg
Context
RecvMsg
它在大多数情况下都可以工作,但我的理解是,如果调用者Recv
知道结果会是,则不需要调用io.EOF
(请参阅在与 grpc.ClientStreams 交互时是否需要调用 Recv 直到获得 io.EOF?),所以它不会在所有情况下都有效。有没有更好的方法来实现这一点?
opentracing - OpenTracing 是否指定任何在线协议/格式?
在问题评论 中,msample问:
我们正在考虑使用 OpenTracing,而我对 SpanContext 的在线/协议的搜索将我带到了这里。我很惊讶没有明确定义这部分,因为它似乎对 OpenTracing 的广泛采用至关重要。
trace - 从移动应用程序到后端的分布式跟踪并包含自定义信息
我们有 Android 和 iOS (Objective-C) 移动应用程序。我们的商业智能团队有兴趣接收每个数据事件的以下参数:
- 应用程序版本
- 用户会话 ID
我们使用 gRPC 进行移动后端通信以及后端不同微服务之间的通信。
我正在考虑使用在移动应用程序上启动的开放跟踪跨度发送此信息,并通过Baggage传递应用程序版本和会话 ID 。
任何人都可以建议开放跟踪是否适合这种情况,或者是否有更好的选择?
我们也在考虑在后端使用 LinkerD
trace - 将 Hawkular 用于使用 CXF 构建的 Rest 服务
我是分布式跟踪/ Hawkular 的新手。并且想尝试使用 hawkular 对我的分布式 cxf 休息服务进行跟踪。是否可以使用 hawkular 跟踪 cxf 服务,如果有人有文档或参考示例应用程序,那就太好了。
此外,是否有任何其他跟踪工具可以解决此要求(跟踪 java cxf 休息服务)。Zipkin-brave 有一个我正在研究的功能。
node.js - uber/jaeger-client-node:后端不会接收数据
我目前正在研究不同的 openTracing Tracer-Implementations。我想使用uber/jaeger-client-node但后端不会收到我的跟踪。
这是我所做的:我启动了多合一的 docker 映像:
docker run -d -p5775:5775/udp -p16686:16686 jaegertracing/all-in-one:latest
接下来,我编写了一个简单的示例应用程序: Gist
但是当我转到 Jaeger UI 时,没有显示有关示例服务的任何内容。我做错了什么?
谢谢
go - Lightstep:子跨度的 UI 不准确
背景
我有一个 java 服务器正在对 go 服务器进行 RPC 调用。java rpc 客户端和 go rpc 服务器使用 lightstep 进行检测。除了在 lightstep UI 中放置 go rpc 服务器 span 的位置之外,跟踪的所有内容看起来都很正常。
java span 有 ts 1493929521325,正好在请求发送到 go 服务器之前。go rpc 服务器有 2 个时间戳:1493929521326 是它收到请求并启动 span 的时间,1493929521336 是它响应并完成 span 之后的时间戳。
问题
我希望 UI 的 go span 水平位于 java span 的右侧。相反,它在右边很远。
我能想到的唯一可能的原因是 java 代码使用的 v0.10.1 和 go 使用的 v0.9.1 之间的不兼容。这是一种可能吗?您对可能的原因有什么想法吗?
go代码本质上是:
zipkin - 如何设置侦探跨度以在 Zipkin 关闭时向其报告
我正在尝试创建一个示踪剂,然后是示踪剂的一个跨度。执行工作。然后关闭跨度。我希望关闭操作将调用 spanReporter.report,它应该将数据发布到可用的 Zipkin 服务器(默认本地主机)
然而,这并没有发生。代码如下。我注意到我正在使用 NeverSampler。将其更改为 AlwaysSampler(目前)。我还使用 NoOpSpanReporter 作为默认的 SpanReporter(什么都不做)。我想将其更改为 ZipkinSpanReporter。(或者是其他东西)。这就是我卡住的地方。
问题:
- 根据粘贴的代码,我应该使用什么类型的默认跨度报告?
- 哪个 jar 将具有正确的 Span Reporter。我在 spring-cloud-sleuth-zipkin 中看到了 ZipkingSpanReporter 类。那么,我应该删除 spring-cloud-sleuth-* 依赖项并将其替换为 zipkin 依赖项吗?
现在使用上面的代码片段:
注意:
这个特定项目在其任何服务中都没有任何 http 调用。它是一个数据处理项目。
@SpringBootApplication 尚未使用。(尽管所有 zipkin 示例都使用它)。有必要吗?
spring-cloud-sleuth - 带有 OpenTracing 的 Spring Cloud Sleuth
有没有办法将 Spring Cloud Sleuth 与 OpenTracing 一起使用?我想将 Spring 客户端与 Jaeger 连接起来