概述

    Istio 利用 Envoy 的分布式追踪功能提供了开箱即用的追踪集成。确切地说,Istio 提供了安装各种追踪后端服务的选项,并且通过配置代理来自动发送追踪 Span 到追踪后端服务。请参阅 ,Jaeger 和 的任务文档来了解 Istio 如何与这些分布式追踪系统一起工作。

    尽管 Istio 代理能够自动发送 Span,但是他们需要一些附加线索才能将整个追踪链路关联到一起。所以当代理发送 span 信息的时候,应用需要附加适当的 HTTP 请求头信息,这样才能够把多个 Span 正确的关联到同一个追踪上。

    • x-b3-traceid
    • x-b3-spanid
    • x-b3-parentspanid
    • x-b3-flags

    此外,基于 OpenCensus的追踪集成,例如 Stackdriver,会传输以下头文件:

    • x-cloud-trace-context
    • traceparent
    • grpc-trace-bin

    例如,如果您看 Python 的 productpage 服务这个例子,可以看到这个应用程序使用了 库从 HTTP 请求中提取所需的头信息:

    Zip int productId,)

    1. @Path("/reviews/{productId}")
    2. public Response bookReviewsById(@PathParam("productId") int productId, @Context HttpHeaders requestHeaders) {
    3. // ...
    4. JsonObject ratingsResponse = getRatings(Integer.toString(productId), requestHeaders);

    当您在应用程序中进行下游调用时,请确保包含这些请求头。