问题标签 [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.

0 投票
2 回答
1056 浏览

go - 从 zipkintracer 获取 traceId

我正在使用zipkin-go-opentracing,它是 go 中 zipkin 的opentracing API 的实现。

由于(原因)我需要从跨度中获取traceId。所以问题是:给定一个 opentracing.Span,我如何获得 TraceId?我尝试过的一切都给了我某种类型断言错误。

谢谢,

0 投票
4 回答
7455 浏览

trace - 如何从 OpenTracing API 获取跟踪 ID?

#105中,davidB 问道:

我想拥有对 Span id (SpanContext id) 的读取权限,以便能够在日志中使用它并报告错误(给最终用户,...)。[skip] 我需要在错误消息中公开“trace id”,然后开发人员可以使用该跟踪来调试支持、QA、最终用户报告的错误。

0 投票
1 回答
920 浏览

go - 使用 StreamClientInterceptor 确定 RPC 会话何时结束的最佳方法是什么?

在编写StreamClientInterceptor函数时,确定调用者何时完成 RPC 的最佳方法是什么?对于一元拦截器或在服务器端传递执行 RPC 的处理程序,这很简单,但目前尚不清楚如何最好地在客户端执行此操作,在客户端返回调用程序然后与之交互的ClientStream .

一个用例是检测 OpenTracing,其目标是开始和结束一个跨度以标记 RPC 的开始和结束。

我正在研究的一个策略是让流拦截器返回一个经过修饰的 ClientStream。Header如果任何接口方法、、、、返回错误或被取消CloseSendSendMsg则此新 ClientStream 认为 RPC 已完成。此外,它将此逻辑添加到:RecvMsgContextRecvMsg

它在大多数情况下都可以工作,但我的理解是,如果调用者Recv知道结果会是,则不需要调用io.EOF(请参阅在与 grpc.ClientStreams 交互时是否需要调用 Recv 直到获得 io.EOF?),所以它不会在所有情况下都有效。有没有更好的方法来实现这一点?

0 投票
1 回答
417 浏览

opentracing - OpenTracing 是否指定任何在线协议/格式?

问题评论 中,msample问:

我们正在考虑使用 OpenTracing,而我对 SpanContext 的在线/协议的搜索将我带到了这里。我很惊讶没有明确定义这部分,因为它似乎对 OpenTracing 的广泛采用至关重要。

0 投票
1 回答
407 浏览

trace - 从移动应用程序到后端的分布式跟踪并包含自定义信息

我们有 Android 和 iOS (Objective-C) 移动应用程序。我们的商业智能团队有兴趣接收每个数据事件的以下参数:

  • 应用程序版本
  • 用户会话 ID

我们使用 gRPC 进行移动后端通信以及后端不同微服务之间的通信。

我正在考虑使用在移动应用程序上启动的开放跟踪跨度发送此信息,并通过Baggage传递应用程序版本和会话 ID 。

任何人都可以建议开放跟踪是否适合这种情况,或者是否有更好的选择?

我们也在考虑在后端使用 LinkerD

0 投票
1 回答
60 浏览

trace - 将 Hawkular 用于使用 CXF 构建的 Rest 服务

我是分布式跟踪/ Hawkular 的新手。并且想尝试使用 hawkular 对我的分布式 cxf 休息服务进行跟踪。是否可以使用 hawkular 跟踪 cxf 服务,如果有人有文档或参考示例应用程序,那就太好了。

此外,是否有任何其他跟踪工具可以解决此要求(跟踪 java cxf 休息服务)。Zipkin-brave 有一个我正在研究的功能。

0 投票
1 回答
831 浏览

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 时,没有显示有关示例服务的任何内容。我做错了什么?

谢谢

0 投票
1 回答
242 浏览

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代码本质上是:

在此处输入图像描述

0 投票
1 回答
674 浏览

zipkin - 如何设置侦探跨度以在 Zipkin 关闭时向其报告

我正在尝试创建一个示踪剂,然后是示踪剂的一个跨度。执行工作。然后关闭跨度。我希望关闭操作将调用 spanReporter.report,它应该将数据发布到可用的 Zipkin 服务器(默认本地主机)

然而,这并没有发生。代码如下。我注意到我正在使用 NeverSampler。将其更改为 AlwaysSampler(目前)。我还使用 NoOpSpanReporter 作为默认的 SpanReporter(什么都不做)。我想将其更改为 ZipkinSpanReporter。(或者是其他东西)。这就是我卡住的地方。

问题:

  1. 根据粘贴的代码,我应该使用什么类型的默认跨度报告?
  2. 哪个 jar 将具有正确的 Span Reporter。我在 spring-cloud-sleuth-zipkin 中看到了 ZipkingSpanReporter 类。那么,我应该删除 spring-cloud-sleuth-* 依赖项并将其替换为 zipkin 依赖项吗?

现在使用上面的代码片段:

注意:
这个特定项目在其任何服务中都没有任何 http 调用。它是一个数据处理项目。
@SpringBootApplication 尚未使用。(尽管所有 zipkin 示例都使用它)。有必要吗?

0 投票
2 回答
11435 浏览

spring-cloud-sleuth - 带有 OpenTracing 的 Spring Cloud Sleuth

有没有办法将 Spring Cloud Sleuth 与 OpenTracing 一起使用?我想将 Spring 客户端与 Jaeger 连接起来