Telemetry API を使用したトレースの設定

Istio には、サンプリングレートや、レポートされるスパンへのカスタムタグの追加など、高度なトレースオプションを構成する機能があります。このタスクでは、Telemetry API を使用してトレースオプションをカスタマイズする方法を示します。

始める前に

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

  2. お好みのトレーシングバックエンドに基づいて、インテグレーションにあるトレーシングインストールガイドに従い、適切なアドオンをインストールし、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つのサポートされているオプションのいずれかを使用してタグをカスタマイズできます。

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

    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"
    
  2. 環境変数は、カスタムタグの値がワークロードプロキシの環境変数から設定される場合に使用できます。

    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
    
  3. クライアントリクエストヘッダーオプションを使用すると、受信クライアントリクエストヘッダーからタグ値を設定できます。

    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で結果を確認できます。

この情報は役に立ちましたか?
改善のためのご提案はありますか?

フィードバックありがとうございます!