使用遥测 API 配置追踪

Istio 提供了配置高级跟踪选项的功能,例如采样率和向报告的跨度添加自定义标签。此任务向您展示如何使用遥测 API 自定义跟踪选项。

开始之前

  1. 确保您的应用程序按以下说明传播跟踪标头 此处

  2. 根据您首选的跟踪后端,遵循位于 集成 下的跟踪安装指南,以安装相应的插件并配置您的 Istio 代理以将跟踪发送到跟踪部署。

安装

在此示例中,我们将跟踪发送到 zipkin,因此请确保已安装它

$ cat <<EOF > ./tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing: {} # disabled MeshConfig tracing options
    extensionProviders:
    # add zipkin provider
    - name: zipkin
      zipkin:
        service: zipkin.istio-system.svc.cluster.local
        port: 9411
EOF
$ istioctl install -f ./tracing.yaml --skip-confirmation

为网格启用追踪

通过应用以下配置启用跟踪

$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  tracing:
    - providers:
        - name: "zipkin"
EOF

自定义跟踪采样

采样率选项可用于控制报告到跟踪系统的请求百分比。应根据网格中的流量和您想要收集的跟踪数据量来配置此选项。默认速率为 1%。

$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  tracing:
    - providers:
        - name: "zipkin"
      randomSamplingPercentage: 100.00
EOF

自定义跟踪标签

可以根据字面量、环境变量和客户端请求头向跨度添加自定义标签,以便在特定于您的环境的跨度中提供其他信息。

您可以使用以下三个支持的选项中的任何一个来自定义标签。

  1. 字面量表示添加到每个跨度的静态值。

    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
    name: mesh-default
    namespace: istio-system
    spec:
    tracing:
        - providers:
            - name: "zipkin"
        randomSamplingPercentage: 100.00
        customTags:
          "provider":
            literal:
              value: "zipkin"
    
  2. 环境变量可用于从工作负载代理环境变量填充自定义标签的值。

    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
      name: mesh-default
      namespace: istio-system
    spec:
      tracing:
        - providers:
            - name: "zipkin"
          randomSamplingPercentage: 100.00
          customTags:
            "cluster_id":
              environment:
                name: ISTIO_META_CLUSTER_ID
                defaultValue: Kubernetes # optional
    
  3. 客户端请求头选项可用于从传入的客户端请求头填充标签值。

    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
      name: mesh-default
      namespace: istio-system
    spec:
      tracing:
        - providers:
            - name: "zipkin"
          randomSamplingPercentage: 100.00
          customTags:
            my_tag_header:
              header:
                name: <CLIENT-HEADER>
                defaultValue: <VALUE>      # optional
    

自定义跟踪标签长度

默认情况下,作为HttpUrl跨度标签一部分包含的请求路径的最大长度为 256。要修改此最大长度,请将以下内容添加到您的tracing.yaml文件中。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing: {} # disabled tracing options via `MeshConfig`
    extensionProviders:
    # add zipkin provider
    - name: zipkin
      zipkin:
        service: zipkin.istio-system.svc.cluster.local
        port: 9411
        maxTagLength: <VALUE>

验证结果

您可以使用Zipkin UI验证结果。

这些信息是否有用?
您是否有任何改进建议?

感谢您的反馈!