【问题标题】:How to configure istio-proxy to log traceId?如何配置 istio-proxy 来记录 traceId?
【发布时间】:2020-04-21 19:12:01
【问题描述】:

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

【问题讨论】:

    标签: istio jaeger


    【解决方案1】:

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

    跟踪上下文传播

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

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

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

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


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

    补充资料:https://github.com/openzipkin/b3-propagation

    【讨论】:

    • 谢谢@piotr-malec Whichever tracing provider is being used, the service should propagate the x-request-id to enable logging across the invoked services to be correlated. 这基本上回答了我的问题,因为我意识到默认情况下,envoy/istio-proxy 具有包含 x-request-id 值的 accessLog。
    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2023-03-19
    • 2020-06-30
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多