使用遙測 API 設定追蹤

Istio 提供了配置進階追蹤選項的功能,例如取樣率和將自訂標籤新增至回報的 span。此任務將展示如何使用 Telemetry 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

自訂追蹤標籤

可以根據文字、環境變數和用戶端請求標頭將自訂標籤新增至 span,以便在 span 中提供特定於您環境的其他資訊。

您可以使用以下三個支援的選項中的任何一個來自訂標籤。

  1. 文字表示會新增至每個 span 的靜態值。

    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 span 標籤一部分包含的請求路徑最大長度為 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 來驗證結果。

此資訊是否有用?
您是否有任何改進建議?

感謝您的回饋!