尝试设置分布式事件跟踪

Trying to set up distributed event tracing

我正在尝试在整个微服务架构中设置分布式事件跟踪。

以下是关于我们架构的一些序言:

  1. Traefik 负载均衡器,根据路由路径名将请求转发到适当的后端服务。

  2. "catchall" 路由上的前端应用程序,只要路由未被其他微服务捕获,该路由就会提供服务。

  3. node/dotnetcore中的各种后端服务监听/api/<serviceName>

traefik 设置 traceContextHeaderName 设置为 "trace-id"

我想象这会如何工作是前端应用程序从负载均衡器接收到一个 header "trace-id" 的值,该值可用于 "link" 跨度一起用于请求是相关的。

示例场景:

当客户加载尝试登录时,他们会向 Web 应用程序发出请求,接收并呈现 HTML/CSS/JS,然后对 /api/auth/login 的后续请求可以与登录数据一起发布以及 traefik 提供的 "trace-id" header 的值。 处理 /api/auth/login 端点的后端服务可以捕获此 "trace-id" header 值并向 jaeger 发布一些与其验证用户的工作相关的跨度。

发生了什么:

当为前端 HTML 发出请求时,没有收到 "trace-id" header 因此发布的任何后续跨度都被视为单独的跟踪并且没有链接在一起。

traefik.toml:

...
[tracing]
 backend = "jaeger"
 serviceName = "traefik"
 spanNameLimit = 0
 [tracing.jaeger]
   samplingServerURL = "http://jaeger:5778/sampling"
   samplingType = "const"
   samplingParam = 1.0
   localAgentHostPort = "jaeger:6831"
   traceContextHeaderName = "trace-id"
...

我了解 Whosebug 不是 "code it for me" 服务。由于我是分布式事件跟踪的新手,因此我正在寻找有关可能出现问题的指导。 我尝试使用谷歌搜索并寻找答案,但我已经走到了死胡同。

如有任何 help/suggestions 可以查看的信息,我们将不胜感激。

如果我找错了树、处理方法不正确,或者我对 traceContextHeaderName 应该如何工作的理解不正确,请告诉我。

呃。我是个白痴。

对于其他可能遇到类似问题的人来说,这是出了什么问题:

前端应用程序 收到 header,我只是找错了地方。

请求从负载均衡器发送到节点前端微服务,后者将其响应发送到浏览器。

我正在检查浏览器中的 header,但节点前端微服务并未将此 header 转发到浏览器。