概述

    Istio 利用 Envoy 的分布式追踪功能提供了开箱即用的追踪集成。确切地说,Istio 提供了安装各种各种追踪后端服务的选项,并且通过配置代理来自动发送追踪 span 到追踪后端服务。

    请参阅 , Jaeger 和 的任务文档来了解 Istio 如何与这些分布式追踪系统一起工作。

    尽管 Istio 代理能够自动发送 span,但是他们需要一些附加线索才能将整个追踪链路关联到一起。

    所以当代理发送 span 信息的时候,应用需要附加适当的 HTTP 请求头信息,这样才能够把多个 span 正确的关联到同一个追踪上。

    要做到这一点,应用程序从传入请求到任何传出的请求中需要包含以下请求头参数:

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

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

    在 reviews 这个应用中(Java)也做了类似的事情:

    默认情况下,使用 demo 配置文件安装时,Istio 会捕获所有请求的追踪信息。例如,当使用上面的 Bookinfo 示例应用时,每次访问 接口时,你都可以在 dashboard 中看到一条相应的追踪信息。此采样频率适用于测试或低流量网格。对于高流量网格你可以通过下面的两种方法之一来降低追踪采样频率:

    • 在网格安装时,使用可选项 values.pilot.traceSampling 来设置采样百分比。参考文档查看详细的配置可选项。

    • 在运行中的网格,可以通过编辑 istio-pilot deployment 并通过以下步骤来改变环境变量:

      • 运行下面的命令来打开编辑器并加载 deployment 配置文件:
    • 找到 PILOT_TRACE_SAMPLING 环境变量,将 设置成你想要的百分比。

    在这两种情况下,有效值的范围从 0.0 到 100.0,精度为 0.01。

    Jaeger

    了解如何配置代理以向 Jaeger 发送追踪请求。

    Zipkin

    了解如何通过配置代理以将追踪请求发送到 Zipkin。

    此任务向您展示如何配置从外部访问 Istio 遥测插件。

    Mixer 和 SPOF 神话

    提高可用,降低延迟。