尝试设置分布式事件跟踪
Trying to set up distributed event tracing
我正在尝试在整个微服务架构中设置分布式事件跟踪。
以下是关于我们架构的一些序言:
Traefik 负载均衡器,根据路由路径名将请求转发到适当的后端服务。
"catchall" 路由上的前端应用程序,只要路由未被其他微服务捕获,该路由就会提供服务。
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 转发到浏览器。
我正在尝试在整个微服务架构中设置分布式事件跟踪。
以下是关于我们架构的一些序言:
Traefik 负载均衡器,根据路由路径名将请求转发到适当的后端服务。
"catchall" 路由上的前端应用程序,只要路由未被其他微服务捕获,该路由就会提供服务。
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 转发到浏览器。