MeshConfigとPodアノテーションを使用したトレースの設定
Istioは、サンプリングレートや報告されたスパンへのカスタムタグの追加など、高度なトレースオプションを設定できます。サンプリングはベータ機能ですが、カスタムタグとトレースタグの長さは、このリリースでは開発中と見なされています。
始める前に
アプリケーションが、こちらで説明されているように、トレースヘッダーを伝播するようにしてください。
お好みのトレースバックエンドに基づいて、統合の下にあるトレースインストールガイドに従い、適切なアドオンをインストールし、Istioプロキシを構成してトレースをトレースデプロイメントに送信してください。
利用可能なトレース設定
Istioでは、次のトレースオプションを構成できます。
トレース生成のために選択されるリクエストの割合を表すランダムサンプリングレート。
リクエストパスの最大長。この長さを超えると、レポートのためにパスが切り捨てられます。これは、特にイングレスゲートウェイでトレースを収集する場合、トレースデータストレージの制限に役立ちます。
スパンへのカスタムタグの追加。これらのタグは、静的なリテラル値、環境変数、またはリクエストヘッダーのフィールドに基づいて追加できます。これは、環境固有の追加情報をスパンに挿入するために使用できます。
トレースオプションを構成するには、2つの方法があります。
MeshConfig
オプションによるグローバル設定。ワークロード固有のカスタマイズのためのポッドアノテーション。
インストール
これらの機能を使用することで、環境内のトレースを管理するための新しい可能性が開かれます。
この例では、すべてのトレースをサンプリングし、ポッドに注入された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
を介してグローバルに構成できます。構成を簡素化するために、istioctl install -f
コマンドに渡すことができる単一のYAMLファイルを作成することをお勧めします。
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`アノテーションを使用する
メッシュ全体のトレース設定を上書きするには、Podメタデータ仕様にproxy.istio.io/config
アノテーションを追加できます。たとえば、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を値として使用します。
トレースタグのカスタマイズ
カスタムタグは、リテラル、環境変数、クライアントリクエストヘッダーに基づいてスパンに追加でき、環境固有の追加情報をスパンに提供できます。
以下の3つのサポートされているオプションのいずれかを使用してタグをカスタマイズできます。
リテラルは、各スパンに追加される静的な値を表します。
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
スパンタグの一部として含まれるリクエストパスの最大長は256です。この最大長を変更するには、tracing.yaml
ファイルに以下を追加します。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing:
max_path_tag_length: <VALUE>