Telemetry API を使用したトレースの設定
Istio には、サンプリングレートや、レポートされるスパンへのカスタムタグの追加など、高度なトレースオプションを構成する機能があります。このタスクでは、Telemetry API を使用してトレースオプションをカスタマイズする方法を示します。
始める前に
こちらで説明されているように、アプリケーションがトレースヘッダーを伝播するようにしてください。
お好みのトレーシングバックエンドに基づいて、インテグレーションにあるトレーシングインストールガイドに従い、適切なアドオンをインストールし、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
トレースタグのカスタマイズ
リテラル、環境変数、クライアントリクエストヘッダーに基づいて、カスタムタグをスパンに追加して、環境固有のスパンに追加情報を提供できます。
以下の3つのサポートされているオプションのいずれかを使用してタグをカスタマイズできます。
リテラルは、各スパンに追加される静的な値を表します。
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
スパンタグの一部として含まれるリクエストパスの最大長は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で結果を確認できます。