使用遙測 API 設定追蹤
Istio 提供了配置進階追蹤選項的功能,例如取樣率和將自訂標籤新增至回報的 span。此任務將展示如何使用 Telemetry API 自訂追蹤選項。
開始之前
安裝
在此範例中,我們將追蹤傳送到 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 中提供特定於您環境的其他資訊。
您可以使用以下三個支援的選項中的任何一個來自訂標籤。
文字表示會新增至每個 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"
可以使用環境變數,其中自訂標籤的值是從工作負載代理環境變數中填入的。
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
用戶端請求標頭選項可用於從傳入的用戶端請求標頭填入標籤值。
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 來驗證結果。