尝试设置分布式事件跟踪

时间:2019-07-19 21:40:31

标签: traefik jaeger

我正在尝试在整个微服务体系结构中建立分布式事件跟踪。

以下是有关我们的体系结构的一些序言:

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

  2. “ catchall”路由上的前端应用程序,只要路由没有被另一个微服务捕获,该服务就会被提供。

  3. 节点/ dotnetcore中的各种后端服务正在/api/<serviceName>

  4. 上侦听

traefik的设置是将traceContextHeaderName设置为"trace-id"

我如何想象这是可行的,因为前端应用程序从负载均衡器接收到一个标头“ trace-id”,该标头的值可用于将相关请求的跨度“链接”在一起。

示例场景:

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

正在发生的事情:

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

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"
...

我知道StackOverflow不是“为我编码”服务。我正在寻找有关分布式事件跟踪的新手的可能的指导。 我曾尝试使用谷歌搜索和寻找答案,但是却走到了尽头。

在任何地方寻找帮助/建议都将不胜感激。

请让我知道我是不是在错误树上吠叫,错误处理,或者对traceContextHeaderName应该如何工作的理解不正确。

1 个答案:

答案 0 :(得分:0)

U。我是白痴。

对于其他可能会被卡住的人来说,这是哪里出了问题:

前端应用程序 正在接收标头,我只是在错误的位置查看。

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

我正在检查浏览器中的标头,但是节点前端微服务没有将此标头转发到浏览器。

相关问题