问题标签 [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 投票
2 回答
223 浏览

.net - 从 IIS 上的 Datadog 自动跟踪检测中排除站点

我想知道是否有办法从 IIS 上的 Datadog 自动跟踪中排除站点。我已经阅读了文档,但没有找到任何相关信息。

0 投票
1 回答
175 浏览

asp.net-core - ASP.NET Core 3.1 中的 ParentId 错误?

我正在测试跟踪在 ASP.NET Core 3.1 中的工作方式,但有些东西不起作用。我有 3 个启用了 ActivityIdFormat.W3C 的 ASP.NET Core 应用程序(Node1、Node2、Node3),并且调用层次结构是使用 httpclient 的 Node1->Node2->Node3。当调用 Node2 时,它具有正确的 ParentId,它等于来自 Node1 的 SpanId。但是当从 Node2 ParentId 调用 Node3 时是错误的。在每个节点的日志下方 - 您可以看到我还转储了标头,看起来从 Node2 发送的标头是错误的。我在 .NET 5 中看到了相同的行为,但是当我签入没有 ActivityIdFormat.W3C 的 .NET 3.1 时,父级会在所有节点上传播。

源代码可以在这里找到https://github.com/dominikjeske/Sa​​mples/tree/main/TraceTest

0 投票
1 回答
58 浏览

cadence-workflow - 在断开连接的系统中跟踪

我知道有一些库可以基于 OpenTracing 和 OpenTelemetry 在分布式系统中跟踪请求;这些都有效,因为请求是连接/链接的(微服务相互交谈)。如何在系统/服务断开连接时进行跟踪?

服务 X 调用服务 Y。Y 执行一些处理,然后写入共享位置。组件 Z 轮询共享位置(几小时后)并进行处理。

我想知道对于 X 生成的每个请求,这 3 个系统中的每个系统的状态。

跟踪这一点的一种简单方法是创建一个表并更新数据库条目。但是考虑到我可能需要重试某些事情这一事实,我曾想过引入一个工作流引擎(Cadence),它在服务 X 上打开一个工作流。然后在每个服务处更新工作流。如果请求达到 Y,则完成 w/f 中的一个步骤。如果它没有达到 Z,则工作流程保持打开状态,一段时间后我可以生成一封电子邮件等,说明工作流程失败。

我需要帮助来了解这是否是正确的方法和/或不同的方法来做到这一点。

0 投票
1 回答
160 浏览

python - 如何将 opentelmetry 与多个微服务一起使用(python)

在单个应用程序中,我可以轻松创建(嵌套)跨度,但我试图在多个服务中跟踪 http 请求,而我尝试使用上下文传播的任何方法都不起作用。所以也许我的设置是错误的。

有人可以在python中解释这个的确切要求吗?

据我了解,在每个微服务中,我必须设置我的跨度导出器、收集器和跟踪提供程序。

在我想要检测的类中完成之后,我只需导航到我想要跟踪的服务中的代码块:

当我启动我的服务时,跟踪工作完美,我可以在我的 Jaeger UI 上看到它们,但是跨度并没有聚合在单个 http 请求的单个跟踪下。

我知道那里应该有一些上下文传播来实现这一点,但我找不到任何方法可以在 python 中完成这项工作。我正在使用 W3C ContextTrace,但我无法让它工作,而且我不确定是否应该在每个服务中设置跟踪提供程序,或者到底出了什么问题。

我已经阅读了很多文档,但我仍然不知道如何让它工作。

0 投票
0 回答
65 浏览

spring-boot - 如何从 logstash 或 fluentd 中的不同微服务收集日志文件?

我运行了 10 个微服务,并为每个微服务存储了单独的日志文件。但是当我配置用于跟踪的 logstash 或 fluentd 配置文件时,我必须提供一个特定的日志文件名,但我希望 logstash 或 fluentd 必须从我的所有微服务中获取所有日志文件。

这怎么可能?

我可以提供我的日志文件夹的路径,我的所有日​​志都存储在哪里?

它会考虑所有日志文件吗?还是我只需要提供一个日志文件路径?

当我检查一些文档时,他们正在使用一个日志文件并给出该日志文件所在的整个路径。但我希望它获取日志文件夹中存在的所有日志文件。

还请指导我如何在 Kubernetes 中实现这一点?

1 个节点包含 10 个 pod,每个 pod 在 Kubernetes 中运行 1 个微服务。

0 投票
1 回答
85 浏览

spring-boot - 使 Zipkin(或任何开放式跟踪框架)与现有的“跟踪 id”一起工作

一点背景:

我们有大约10 个 Spring Boot 微服务,它们通过 kafka 相互通信。每个微服务的日志都会发送到 Kibana,如果出现任何错误,我们必须对 Kibana 日志进行筛选。

好消息是:在任何流程开始时,我们的一个微服务都会生成一个 message-id,并作为消息传输的一部分(通过 kafka 发生)传播给所有其他微服务,因此我们可以搜索日志中的 message-id,我们可以看到该流在我们所有微服务中的足迹。

不好的部分:必须筛选大量日志才能基本了解事情发生的位置和原因。

现在的问题:

所以我想知道我们是否可以实现一些分布式跟踪,也许通过 Zipkin(或其他一些开放式跟踪框架)可以使用我们的生态系统已经产生的消息 ID,而不是生成一个新的?

感谢您的时间 :)

0 投票
0 回答
140 浏览

spring-boot - 微服务分布式跟踪不起作用

我想在微服务中实现分布式跟踪(使用 sleuth-otel),它应该将跟踪详细信息导出到 Google 云跟踪 Api(不是 zipkin)。应用程序结构是这样的,service1 -> pubsub -> service2 -> pubsub -> service3 我尝试了以下

A)在服务1中,

  1. 我在 pom.xml 中添加了 spring-cloud-starter-sleuth依赖 项spring-cloud-sleuth-otel
  2. 我在 application.properties 添加了以下内容
  1. 在运行第一个服务时,我看到了这样的日志 INFO [,2f571809528f9daa,2983cfebab529366]

我对此的看法是,

=> 为什么我没有看到我在 application.properties 中提到的应用程序名称。还有什么我错过的吗?

=> 我也想用我自己的值改变这个默认的traceId。可能吗?如果是的话,我该怎么做?(示例代码)

B) 服务中2

  1. 我在我的 pom.xml 中添加了相同的spring-cloud-starter-sleuthspring-cloud-sleuth-otel依赖项
  2. 还在 application.properties 中添加了这些
  1. 在运行 service2 时,我得到了这样的日志 INFO [service2,,]

怀疑

=> 为什么我在这里没有在 service1 中获得相同的 traceId?(它也没有记录 spanId)

=> 如何在 service2 中获取相同的 traceId?

=>要将跟踪导出到谷歌云跟踪API,这个依赖就足够了,还是我需要添加任何配置或任何东西?

0 投票
0 回答
19 浏览

envoyproxy - Envoy 如何支持随机采样但稳定的跟踪?

如此处所述,Envoy 可以将跟踪原因打包到x-request-id标头中以允许稳定的跟踪。

Envoy 在随机抽样时如何实现这种稳定性?据推测,每个 Envoy 跃点不会独立随机抽样(否则通过系统的每个请求都有 (sample_percentage)*(number_of_hops) 被选中的机会)。那么 Envoy 是否会考虑其他已经采样的请求并相应地调整随机性?

此外,如果在中间跃点选择请求会发生什么?您大概会从跟踪开始时丢失信息吗?我猜 Envoy 只能在入口网关实例上随机抽样?但我还没有看到任何关于此的文档。

0 投票
1 回答
329 浏览

vert.x - 如何使用opentracing或opentelemetry在vertx中的eventbus中实现跟踪?

该网页没有给出太多相同的描述,如果可能的话分享一些例子。

这是我尝试过但没有按预期工作的示例实现

0 投票
0 回答
137 浏览

logging - 哨兵事件在 UI 上不可用

我们在 docker 集群上运行哨兵版本 9.0.0。我们面临一个问题,客户正在向 Sentry 存储写入事件,并且他们也通过响应 ID 获得成功。但同样在 Sentry UI 上可见。为了测试,我们使用哨兵 cli:

当去哨兵用户界面时,我们什么也看不到。但在 postgress 日志中,我们得到以下错误:

我们如何解决这样的问题?非常需要任何帮助。