MeshConfigとPodアノテーションを使用したトレースの設定

Istioは、サンプリングレートや報告されたスパンへのカスタムタグの追加など、高度なトレースオプションを設定できます。サンプリングはベータ機能ですが、カスタムタグとトレースタグの長さは、このリリースでは開発中と見なされています。

始める前に

  1. アプリケーションが、こちらで説明されているように、トレースヘッダーを伝播するようにしてください。

  2. お好みのトレースバックエンドに基づいて、統合の下にあるトレースインストールガイドに従い、適切なアドオンをインストールし、Istioプロキシを構成してトレースをトレースデプロイメントに送信してください。

利用可能なトレース設定

Istioでは、次のトレースオプションを構成できます。

  1. トレース生成のために選択されるリクエストの割合を表すランダムサンプリングレート。

  2. リクエストパスの最大長。この長さを超えると、レポートのためにパスが切り捨てられます。これは、特にイングレスゲートウェイでトレースを収集する場合、トレースデータストレージの制限に役立ちます。

  3. スパンへのカスタムタグの追加。これらのタグは、静的なリテラル値、環境変数、またはリクエストヘッダーのフィールドに基づいて追加できます。これは、環境固有の追加情報をスパンに挿入するために使用できます。

トレースオプションを構成するには、2つの方法があります。

  1. MeshConfigオプションによるグローバル設定。

  2. ワークロード固有のカスタマイズのためのポッドアノテーション。

インストール

これらの機能を使用することで、環境内のトレースを管理するための新しい可能性が開かれます。

この例では、すべてのトレースをサンプリングし、ポッドに注入された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つのサポートされているオプションのいずれかを使用してタグをカスタマイズできます。

  1. リテラルは、各スパンに追加される静的な値を表します。

    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スパンタグの一部として含まれるリクエストパスの最大長は256です。この最大長を変更するには、tracing.yamlファイルに以下を追加します。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        max_path_tag_length: <VALUE>
この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございます!