使用 MeshConfig 和 Pod 註解配置追蹤

Istio 提供了設定進階追蹤選項的功能,例如取樣率以及在回報的 spans 中加入自訂標籤。取樣功能目前為 beta 版本,但加入自訂標籤和追蹤標籤長度則被視為此版本開發中的功能。

開始之前

  1. 請確保您的應用程式如此處所述傳播追蹤標頭。

  2. 請依照您偏好的追蹤後端,參閱位於整合下的追蹤安裝指南,以安裝適當的附加元件,並設定您的 Istio 代理,將追蹤資訊傳送到追蹤部署。

可用的追蹤設定

您可以在 Istio 中設定以下追蹤選項:

  1. 隨機取樣率,表示將被選中產生追蹤資訊的請求百分比。

  2. 請求路徑的最大長度,超過此長度的路徑將被截斷以進行回報。如果您在入口閘道收集追蹤資訊,這對於限制追蹤資料儲存非常有用。

  3. 在 spans 中加入自訂標籤。這些標籤可以根據靜態文字值、環境值或請求標頭中的欄位來新增。這可用於在 spans 中注入特定於您環境的額外資訊。

您有兩種方式可以設定追蹤選項:

  1. 透過 MeshConfig 選項進行全域設定。

  2. 針對工作負載的特定自訂,使用每個 Pod 的註解。

安裝

使用這些功能開啟了在您的環境中管理追蹤的新可能性。

在本範例中,我們將取樣所有追蹤,並使用注入到您的 Pod 中的 ISTIO_META_CLUSTER_ID 環境變數新增名為 clusterID 的標籤。只會使用該值的前 256 個字元。

$ cat <<EOF > ./tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100.0
        max_path_tag_length: 256
        custom_tags:
          clusterID:
            environment:
              name: ISTIO_META_CLUSTER_ID
EOF
$ istioctl install -f ./tracing.yaml

使用 MeshConfig 進行追蹤設定

所有追蹤選項都可以透過 MeshConfig 進行全域設定。為了簡化設定,建議建立單一 YAML 檔案,您可以將其傳遞給 istioctl install -f 命令。

cat <<'EOF' > tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 10
        custom_tags:
          my_tag_header:
            header:
              name: host
EOF

使用 proxy.istio.io/config 註解進行追蹤設定

您可以將 proxy.istio.io/config 註解新增到您的 Pod metadata 規格中,以覆寫任何網格範圍的追蹤設定。例如,要修改 Istio 附帶的 curl 部署,您應該將以下內容新增到 samples/curl/curl.yaml 中:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: curl
spec:
  ...
  template:
    metadata:
      ...
      annotations:
        ...
        proxy.istio.io/config: |
          tracing:
            sampling: 10
            custom_tags:
              my_tag_header:
                header:
                  name: host
    spec:
      ...

自訂追蹤採樣

取樣率選項可用於控制多少百分比的請求會回報給您的追蹤系統。應根據網格中的流量和您想要收集的追蹤資料量來設定此選項。預設比率為 1%。

要將預設隨機取樣修改為 50,請將以下選項新增到您的 tracing.yaml 檔案中。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 50

取樣率應介於 0.0 到 100.0 之間,精度為 0.01。例如,若要追蹤每 10000 個請求中的 5 個,請在此處使用 0.05 作為值。

自訂追蹤標籤

可以根據文字、環境變數和客戶端請求標頭將自訂標籤新增到 spans 中,以便在 spans 中提供特定於您環境的額外資訊。

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

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

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
        defaultConfig:
          tracing:
            custom_tags:
              my_tag_literal:
                literal:
                  value: <VALUE>
    
  2. 可以使用環境變數,其中自訂標籤的值會從工作負載代理環境變數中填入。

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
        defaultConfig:
          tracing:
            custom_tags:
              my_tag_env:
                environment:
                  name: <ENV_VARIABLE_NAME>
                  defaultValue: <VALUE>      # optional
    
  3. 客戶端請求標頭選項可用於從傳入的客戶端請求標頭填入標籤值。

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
        defaultConfig:
          tracing:
            custom_tags:
              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:
        max_path_tag_length: <VALUE>
此資訊是否有用?
您有任何改進建議嗎?

感謝您的回饋!