问题标签 [distributed-tracing]

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 投票
1 回答
2252 浏览

.net - 在 .NET Core 上使用 Elastic APM 进行分布式跟踪,非 HTTP

我有兴趣在 ASP.NET Core 中使用 Elastic APM 来检测通过混合协议(HTTP、SQS、SNS)进行通信的一组服务的跟踪。尽管查看了文档,但我不清楚如何使用Elastic APM 公共 API将在 HTTP 之外发生的事务相互连接(Elastic APM 自动检测 HttpClient 以进行跟踪)。

根据文档,我应该能够对CurrentTransaction.OutgoingDistributedTracingData调用者进行序列化,然后对其进行反序列化以恢复被调用者的事务,但是尽管在内存中实现了这种模式,但我在 Kibana 中的跟踪除了最终事务之外的所有跨度都丢失了。

kibana 跟踪仪表板

我的实现高峰可以在Github上找到。

0 投票
1 回答
226 浏览

logstash - 是否可以使用 logback appender 将日志发送到 kafka/rabbit-mq,然后再发送到 Logstash(弹性堆栈)?

语境

  • 云中的微服务
  • 组件使用 Spring Boot 开发,logback.xml
  • 我们需要日志聚合

目前我可以通过 TCP 做到这一点,但我认为这在 AWS 云中的可扩展性不够,我可以使用一些 Queue 发送日志吗?

微服务 > appender logback.xml > 队列 > Logstash > Elasticsearch

附加器

logstash.conf

0 投票
0 回答
674 浏览

istio - 未使用 Istio 和 Sleuth 采样的跟踪

我正在使用带有依赖管理和 Spring Cloud 版本 Greenwich.SR2 的 Spring Cloud Sleuth 的 Spring Boot 2 微服务。我的服务在 Istio 服务网格中运行。istio 的采样策略设置为 100(pilot.traceSampling: 100.0)。

要在网格中使用分布式跟踪,应用程序需要转发 HTTP 标头,例如 X-B3-TraceId 和 X-B3-SpanID。这可以通过简单地添加 Sleuth 来实现。我的所有 HTTP 请求都被正确跟踪。Istio (Envoy) 的 sidecar 代理将跟踪发送到 Jaeger 后端。

Sleuth 也应该与 Spring WebSocket 一起使用。但是我传入的 websocket 请求没有通过侦探获得任何跟踪或跨度 ID;日志看起来像 [-,,,]。1. 问:为什么 Sleuth 不能用于 websocket?我的 WS 配置:

我的客户能够通过 Websocket 连接到我的服务。我正在实现 WebSocketHandler 接口来处理 WS 消息。

为了实现我的 WS 连接由 Sleuth 记录,我用 @NewSpan 注释了处理我的连接的方法:

有了这个,Sleuth 创建 trace 和 spanId 并将它们传播到其他服务,这些服务通过此方法中的 restTemplate 调用。但是 HTTP 调用不会发送到 Jaeger。sidcar 始终将 x-B3-Sampled Header 设置为 0。2 问题:为什么这些跟踪没有发送到跟踪后端?

先感谢您!

0 投票
3 回答
647 浏览

c# - 通过 MassTransit 发布者/消费者传播 W3C 跟踪上下文

'正在尝试支持在 MassTransit 中从 http 调用 -> 发布者 -> 消费者 -> http 调用传播 W3C 跟踪上下文 traceId 和 spanId 属性(只是现在它们出现在日志/序列中,但我们正在使用 Dynatrace) ,但我在这里找不到任何现成的东西: https ://masstransit-project.com/advanced/monitoring/diagnostic-source.html

如果没有可用的东西,我可能会尝试根据这些文章自己创建一些东西:

我可以找到这个作为 OpenTracing 的示例: https ://github.com/yesmarket/MassTransit.OpenTracing

这是 NServiceBus 的参考: https ://jimmybogard.com/building-end-to-end-diagnostics-and-tracing-a-primer-trace-context/

除非任何人都可以提出一些已经存在的东西?

0 投票
1 回答
79 浏览

datadog - 如何使用 OpenTracing / OpenCensus 检测代码?

我必须使用其中一个 api (opentracing/opencensus) 来检测我们的 java/python/c++ 应用程序。问题是仪器要求我启动一个跨度,设置标签,设置日志,然后在每个方法调用中关闭跨度。这对我们来说变化太大了。任何人都可以帮助解决这个问题吗?我如何在不使用所有检测代码污染我的代码的情况下实现这一点?

0 投票
1 回答
2394 浏览

trace - Opentracing 和 W3C Trace Context 之间的区别(关于标头)

W3C 跟踪上下文定义用于启用分布式跟踪的 和 标头traceparenttracestate

我的问题是

  1. 它与 OpenTracing 有何不同。
  2. 如果 W3C 已经定义了标头的用法,那么 opentracing 是否使用其他标头?
0 投票
1 回答
1078 浏览

go - Go GRPC opentracing 中的子跨度

我正在使用 Jaeger 在我们的微服务中添加开放跟踪。我有两台 GRPC 服务器和一台 REST 服务器。

在此处输入图像描述

GRPC 服务器和所有 rest-grpc 请求都在一个父跨度下跟踪,默认的 opentracing 非常好。使用 Java GRPC,我可以添加自定义子跨度,并且它以完美的层次结构出现在 Jaeger UI 中。但是当我尝试在 Go Lang 中添加相同的自定义子时,它不会添加到调用 GRPC 服务的父 Rest Service 跨度中。下面是golang代码

我不想进行整个 http 标头提取,因为 GRPC 库已经处理好了。即使使用 java GRPC,我也不进行任何提取。我在 opentracing 中使用的范围管理器不适用于 go lang opentracing。

提前致谢!!!

干杯。

0 投票
1 回答
80 浏览

java - 使用 Opentracing 的 Microprofile 响应式消息传递

我在玩 MP Reactive Messaging 和 MP Opentracing,但我不知道如何跟踪通过 Reactive Messaging 发送的消息。

是否甚至可以跟踪使用@Income / @Outcome 注释的方法?

0 投票
1 回答
80 浏览

c++ - 有没有办法知道 Tracer 是否成功完全连接到 jaegerclientcpp 中的 jaeger 后端服务器?

jaeger-client-cpp我将Tracer变量连接到 jaeger 后端(我正在使用jaeger-all-in-one服务器)时,连接成功时会显示​​消息,告诉我LOG INFO连接成功,但是当连接不成功时,只会显示LOG ERROR消息告诉我与服务器的连接不成功。

那么有没有办法以编程方式检查Tracer与服务器的连接状态。

OS-ubuntu 18.04 jaeger-client-cpp-v0.5.0

0 投票
0 回答
124 浏览

micronaut - 将云跟踪与 micronaut 一起使用时未聚合的请求跟踪

我正在尝试使用 GCP 云跟踪为我的 micronaut 服务设置分布式跟踪。服务是用 kotlin 和协程编写的,micronaut 版本是 1.3.7。

当我向我的应用程序发出请求时,我可以在 gcp-console 中看到跟踪。但是,我的应用程序对后续服务进行的任何 http 调用最终都会作为不同的跟踪,而不是跨越一个跟踪。如果我查看跟踪标头,我可以看到它似乎在切换线程时切换了跟踪 ID。

如何让 micronaut 在请求期间跨线程使用相同的跟踪 ID?

示例应用程序: https ://github.com/bjor-joh/micronaut-distributed-tracing

这就是它在 GCP 中的样子 在此处输入图像描述

顶部的一个和右侧的两个是相同的请求,但最终成为三个单独的跟踪,而不是同一个跟踪中的跨度。