使用 MeshConfig 和 Pod 註解配置追蹤
Istio 提供了設定進階追蹤選項的功能,例如取樣率以及在回報的 spans 中加入自訂標籤。取樣功能目前為 beta 版本,但加入自訂標籤和追蹤標籤長度則被視為此版本開發中的功能。
開始之前
可用的追蹤設定
您可以在 Istio 中設定以下追蹤選項:
隨機取樣率,表示將被選中產生追蹤資訊的請求百分比。
請求路徑的最大長度,超過此長度的路徑將被截斷以進行回報。如果您在入口閘道收集追蹤資訊,這對於限制追蹤資料儲存非常有用。
在 spans 中加入自訂標籤。這些標籤可以根據靜態文字值、環境值或請求標頭中的欄位來新增。這可用於在 spans 中注入特定於您環境的額外資訊。
您有兩種方式可以設定追蹤選項:
透過
MeshConfig
選項進行全域設定。針對工作負載的特定自訂,使用每個 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 中提供特定於您環境的額外資訊。
您可以使用以下三種支援的選項中的任何一種來自訂標籤。
文字表示新增到每個 span 的靜態值。
apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: enableTracing: true defaultConfig: tracing: custom_tags: my_tag_literal: literal: value: <VALUE>
可以使用環境變數,其中自訂標籤的值會從工作負載代理環境變數中填入。
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
客戶端請求標頭選項可用於從傳入的客戶端請求標頭填入標籤值。
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>