首页 > 解决方案 > 如何配置 istio-proxy 来记录 traceId?

问题描述

我正在使用版本 1.3.5 的 istio。是否需要设置任何配置以允许 istio-proxy 记录 traceId?我正在使用已启用的 jaeger 跟踪(机智 zipkin 协议)。通过使用 traceId 日志记录,我想完成一件事: - 在上游的多个服务中记录相关性。基本上我可以通过某些traceId过滤所有日志。

标签: istiojaeger

解决方案


v1.12.0根据istio 使用的envoy 代理文档1.3

跟踪上下文传播

Envoy 提供了报告有关网格中服务之间通信的跟踪信息的能力。但是,为了能够关联调用流中各种代理生成的跟踪信息,服务必须在入站和出站请求之间传播特定的跟踪上下文。

无论使用哪个跟踪提供程序,服务都应该传播 x-request-id 以启用跨被调用服务的日志记录以进行关联。

跟踪提供者还需要额外的上下文,以使跨度(逻辑工作单元)之间的父/子关系能够被理解。这可以通过直接在服务本身内使用 LightStep(通过 OpenTracing API)或 Zipkin 跟踪器来实现,从入站请求中提取跟踪上下文并将其注入任何后续出站请求。这种方法还将使服务能够创建额外的跨度,描述在服务内部完成的工作,这在检查端到端跟踪时可能很有用。

或者,跟踪上下文可以由服务手动传播:


TLDR:traceId 标头需要手动添加到 B3 HTTP 标头。

附加信息:https ://github.com/openzipkin/b3-propagation


推荐阅读