テレメトリ

Telemetry は、メッシュ内のワークロードに対してテレメトリがどのように生成されるかを定義します。

メッシュレベルの設定については、ワークロードセレクタ *なし* で、Istio インストールのルート設定ネームスペースにリソースを配置します。

ルート設定ネームスペースを含む任意のネームスペースでは、ワークロードセレクタのない Telemetry リソースは1つだけ有効です。

ワークロードセレクタを持つリソースの場合、任意のワークロードを選択するリソースは1つだけ有効です。

Telemetry 設定の階層は次のとおりです。

  1. ワークロード固有の設定
  2. ネームスペース固有の設定
  3. ルートネームスペース設定

トラフィックの10%に対してランダムサンプリングを有効にするポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  # no selector specified, applies to all workloads
  tracing:
  - randomSamplingPercentage: 10.00

fooワークロードのトレースレポートを無効にするポリシー(注:トレースコンテキストは引き続き伝播されます)

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: foo-tracing
  namespace: bar
spec:
  selector:
    matchLabels:
      service.istio.io/canonical-name: foo
  tracing:
  - disableSpanReporting: true

トレースレポート用に代替Zipkinプロバイダーを選択するポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: foo-tracing-alternate
  namespace: baz
spec:
  selector:
    matchLabels:
      service.istio.io/canonical-name: foo
  tracing:
  - providers:
    - name: "zipkin-alternate"
    randomSamplingPercentage: 10.00

クライアントワークロードからのみトレースをサンプリングするようにZipkinプロバイダーを調整するポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  # no selector specified, applies to all workloads
  tracing:
  - match: CLIENT
  - providers:
    - name: "zipkin"

リテラル値からカスタムタグを追加するポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  # no selector specified, applies to all workloads
  tracing:
  - randomSamplingPercentage: 10.00
    customTags:
      my_new_foo_tag:
        literal:
          value: "foo"

メッシュ全体でPrometheusのサーバー側メトリクスを無効にするポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  # no selector specified, applies to all workloads
  metrics:
  - providers:
    - name: prometheus
    overrides:
    - match:
        metric: ALL_METRICS
        mode: SERVER
      disabled: true

foo名前空間のすべてのPrometheusメトリクスにディメンションを追加するポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: namespace-metrics
  namespace: foo
spec:
  # no selector specified, applies to all workloads in the namespace
  metrics:
  - providers:
    - name: prometheus
    overrides:
    # match clause left off matches all istio metrics, client and server
    - tagOverrides:
        request_method:
          value: "request.method"
        request_host:
          value: "request.host"

bar.fooワークロードの一部のPrometheusメトリクスからresponse_codeディメンションを削除するポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: remove-response-code
  namespace: foo
spec:
  selector:
    matchLabels:
      service.istio.io/canonical-name: bar
  metrics:
  - providers:
    - name: prometheus
    overrides:
    - match:
        metric: REQUEST_COUNT
      tagOverrides:
        response_code:
          operation: REMOVE
    - match:
        metric: REQUEST_DURATION
      tagOverrides:
        response_code:
          operation: REMOVE
    - match:
        metric: REQUEST_SIZE
      tagOverrides:
        response_code:
          operation: REMOVE
    - match:
        metric: RESPONSE_SIZE
      tagOverrides:
        response_code:
          operation: REMOVE

メッシュ全体でアクセスログを有効にするポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  # no selector specified, applies to all workloads
  accessLogging:
  - providers:
    - name: envoy
    # By default, this turns on access logging (no need to set `disabled: false`).
    # Unspecified `disabled` will be treated as `disabled: false`, except in
    # cases where a parent configuration has marked as `disabled: true`. In
    # those cases, `disabled: false` must be set explicitly to override.

foo名前空間でアクセスログを無効にするポリシー

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: namespace-no-log
  namespace: foo
spec:
  # no selector specified, applies to all workloads in the namespace
  accessLogging:
  - disabled: true

テレメトリ

項目説明必須
selectorWorkloadSelector

オプション。セレクターはポリシーを適用する場所を決定します。設定されていない場合、ポリシーはポリシーと同じ名前空間にあるすべてのワークロードに適用されます。

特定のポリシーに対して、selectorまたはtargetRefsのいずれか1つのみを設定できます。

いいえ
targetRefsPolicyTargetReference[]

オプション。targetRefsは、ポリシーを適用する必要があるリソースのリストを指定します。指定されたターゲットリソースによって、ポリシーが適用されるワークロードが決まります。

現在、次のリソースアタッチメントタイプがサポートされています。

  • 同じ名前空間内のkind: Gatewaygroup: gateway.networking.k8s.io
  • 同じ名前空間内のkind: Servicegroup: ""またはgroup: "core"。このタイプはウェイポイントでのみサポートされています。

設定されていない場合、ポリシーはセレクターで定義されたとおりに適用されます。selectorとtargetRefsのいずれか1つのみを設定できます。

注:1.22より前のIstioバージョンを持つ複数リビジョン環境でtargetRefsフィールドを使用している場合、istio.io/revラベルを使用してポリシーを1.22以降を実行しているリビジョンに固定することを強くお勧めします。これは、古いコントロールプレーン(targetRefsフィールドを認識していない)に接続されたプロキシが、アップグレードプロセス中にポリシーを名前空間全体として誤って解釈するのを防ぐためです。

注:ポリシーを適用するには、ウェイポイントプロキシでこのフィールドを使用する必要があります。selectorポリシーは無視されます。

いいえ
tracingTracing[]

オプション。Tracingは、選択されたすべてのワークロードのトレース動作を設定します。

いいえ
metricsMetrics[]

オプション。Metricsは、選択されたすべてのワークロードのメトリクス動作を設定します。

いいえ
accessLoggingAccessLogging[]

オプション。Access loggingは、選択されたすべてのワークロードのアクセスログ動作を設定します。

いいえ

トレーシング

Tracingは、メッシュ内のワークロードのトレース動作を設定します。トレースの有効/無効化、サンプリングレートの設定、カスタムタグの抽出に使用できます。

Tracing構成は、構成階層の各レベルでprovidersrandom_sampling_percentagedisable_span_reportingcustom_tagsフィールドの上書きをサポートし、欠落している値は親リソースから補われます。ただし、custom_tagsを指定した場合、親構成によって提供される値は完全に置き換えられます。

項目説明必須
matchTracingSelector

特定の条件への動作の調整を可能にします。

いいえ
providersProviderRef[]

オプション。スパンレポートに使用するプロバイダーの名前。プロバイダーが指定されていない場合、デフォルトのトレースプロバイダーが使用されます。注:現時点では、特定のTracingルールで1つのプロバイダーしか指定できません。

いいえ
randomSamplingPercentageDoubleValue

事前サンプリング決定が行われていない場合に、トラフィックがトレースのために選択されるレートを制御します。事前サンプリング決定が行われている場合、その決定が尊重されます。ただし、サンプリング決定が行われていない場合(例:リクエストにx-b3-sampledトレースヘッダーが存在しない)、指定された割合でトラフィックがテレメトリ生成のために選択されます。

デフォルトは0%です。有効な値は[0.00-100.00]です。0.01%刻みで指定できます。

いいえ
disableSpanReportingBoolValue

スパンレポートを制御します。trueに設定すると、影響を受けるワークロードのスパンはレポートされません。これはコンテキストの伝播やトレースのサンプリング動作には影響しません。

いいえ
customTagsmap<string, CustomTag>

オプション。生成されたトレーススパンに追加のカスタムタグを設定します。

いいえ

ProviderRef

テレメトリ構成を特定のプロバイダーにバインドして、ターゲットを絞ったカスタマイズを行うために使用されます。

項目説明必須
namestring

MeshConfig内のテレメトリプロバイダーの名前。必須です。

はい

メトリクス

Metricsは、メッシュ内のメトリクス生成動作のワークロードレベルの上書きを定義します。メトリクス生成の有効/無効化、生成されたメトリクスのディメンションのカスタマイズに使用できます。

項目説明必須
providersProviderRef[]

オプション。この構成を適用するプロバイダーの名前。プロバイダーが指定されていない場合、デフォルトのメトリクスプロバイダーが使用されます。

いいえ
overridesMetricsOverrides[]

オプション。メトリクス生成動作の上書きの順序付きリスト。

指定された上書きは順番に適用されます。それらは、階層内の他のリソースからの継承された上書きの上に、次の順序で適用されます。

  1. メッシュスコープの上書き
  2. 名前空間スコープの上書き
  3. ワークロードスコープの上書き

上書きは順番に適用されるため、ユーザーは上書きを最も具体的なものから最も具体的なものまで順序付けることをお勧めします。つまり、すべての普遍的な上書きを最初にリストし、その後、調整された上書きをリストすることをベストプラクティスとします。

いいえ
reportingIntervalDuration

オプション。レポート間隔により、メトリクスレポートの呼び出し間の時間を設定できます。これは現在TCPメトリクスのみをサポートしていますが、将来的には長時間実行されるHTTPストリームにも使用できる可能性があります。デフォルトの期間は5sです。

いいえ

MetricSelector

上書き動作の適用のためのメトリクスの照合メカニズムを提供します。

項目説明必須
metricIstioMetric (oneof)

よく知られているIstio標準メトリクスの1つ。

いいえ
customMetricstring (oneof)

メトリクスの自由形式の指定を可能にします。カスタムメトリクスの検証は提供されません。

いいえ
modeWorkloadMode

メトリクス生成のモード(CLIENTSERVER、またはCLIENT_AND_SERVER)を選択します。

いいえ

MetricsOverrides

MetricsOverridesは、個々のメトリクスまたはすべての標準メトリクスのセットに対するカスタムメトリクス生成動作を定義します。

項目説明必須
matchMetricSelector

Matchは、上書きの範囲を提供できます。個々のメトリクス、およびメトリクスが生成されるワークロードモード(サーバー、クライアント、または両方)を選択するために使用できます。

matchが指定されていない場合、上書きは、両方の動作モード(クライアントとサーバー)のすべてのメトリクスに適用されます。

いいえ
disabledBoolValue

オプション。リストされたメトリクスのメトリクスレポートをオフにするには、これをtrueに明示的に設定する必要があります。親構成でdisabledがtrueに設定されている場合、選択されたTelemetryリソースのワークロードでメトリクスレポートをオンにするには、明示的にfalseに設定する必要があります。

いいえ
tagOverridesmap<string, TagOverride>

オプション。選択されたメトリクスで上書きするタグ名とタグ式のコレクション。マップのキーはタグの名前です。マップの値はタグに対して実行する操作です。警告:一部のプロバイダーはタグの追加/削除をサポートしていない場合があります。こちらも参照してください:https://istio.dokyumento.jp/latest/docs/reference/config/metrics/#labels

いいえ

AccessLogging

アクセスロギングは、アクセスログ生成のワークロードレベルの上書きを定義します。プロバイダーの選択、またはワークロードのアクセスログ生成の有効/無効化に使用できます。

項目説明必須
matchLogSelector

特定の条件へのロギング動作の調整を可能にします。

いいえ
providersProviderRef[]

オプション。この構成を適用するプロバイダーの名前。プロバイダーが指定されていない場合、デフォルトのロギングプロバイダーが使用されます。

いいえ
disabledBoolValue

ロギングを制御します。trueに設定すると、影響を受けるワークロードのアクセスログは生成されません(指定されたプロバイダーの場合)。注:現在のデフォルト動作は、上記で選択されたプロバイダーによって制御されます。カスタマイズコントロールは、今後のリリースでこのAPIに追加されます。

いいえ
filterFilter

オプション。指定されている場合、このフィルターは、ロギングする特定のリクエスト/接続を選択するために使用されます。

いいえ

Tracing.TracingSelector

TracingSelectorは、特定のトラフィックメタデータ(トラフィックの方向など)に基づいてトレース動作を構成するための粗粒度の機能を提供します。

項目説明必須
modeWorkloadMode

これは、プロキシされたワークロードに対するトラフィックの方向に基づいて、トレース構成を適用するかどうかを決定します。

いいえ

Tracing.CustomTag

CustomTagは、オペレーターが提供した値に基づいてトレーススパンに追加されるタグを定義します。この値は、ハードコードされた値、サイドカープロキシに認識されている環境変数から取得された値、またはリクエストヘッダーからの値のいずれかです。

注:custom_tagsを指定した場合、親構成によって提供される値は完全に置き換えられます。

項目説明必須
literalLiteral (oneof)

Literalは、各スパンに同じハードコードされた値を追加します。

いいえ
environmentEnvironment (oneof)

Environmentは、各スパンに環境変数の値を追加します。

いいえ
headerRequestHeader (oneof)

RequestHeaderは、リクエストからのヘッダーの値を各スパンに追加します。

いいえ

Tracing.Literal

項目説明必須
valuestring

使用するタグ値。

はい

Tracing.Environment

項目説明必須
namestring

タグ値を抽出する環境変数の名前。

はい
defaultValuestring

オプション。環境変数が見つからない場合、代わりにこの値が使用されます。

いいえ

Tracing.RequestHeader

項目説明必須
namestring

タグ値を抽出するヘッダーの名前。

はい
defaultValuestring

オプション。ヘッダーが見つからない場合、代わりにこの値が使用されます。

いいえ

MetricsOverrides.TagOverride

TagOverrideは、メトリクスディメンション(labelとも呼ばれる)に対して実行する操作を指定します。タグを追加、削除、またはデフォルト値を上書きできます。

項目説明必須
operationOperation

Operationは、タグを更新/追加するかどうか、または削除するかどうかを制御します。

いいえ
valuestring

値は、操作がUPSERTの場合のみ考慮されます。値は、属性に対するCEL式です。例としては、string(destination.port)request.hostなどがあります。Istioは、すべての標準的なEnvoy属性を公開します。さらに、Istioはノードメタデータを属性として公開します。詳細については、カスタマイズに関するドキュメントを参照してください。

いいえ

AccessLogging.LogSelector

LogSelectorは、特定のトラフィックメタデータ(トラフィックの方向など)に基づいて、ログ記録動作を粗粒度に設定するための機能を提供します。LogSelectorは、現在フィルタでサポートされている属性セットには含まれていないトラフィックメタデータに適用されます。これにより、制御プレーンは個々のワークロードに送信される設定を制限できます。より細粒度のログ記録動作は、filterを使用してさらに設定できます。

項目説明必須
modeWorkloadMode

これは、プロキシされたワークロードに対するトラフィックの方向に基づいて、アクセスログ設定を適用するかどうかを決定します。

いいえ

AccessLogging.Filter

アクセスログフィルタの指定を許可します。

項目説明必須
string

リクエスト/接続をログに記録するタイミングを選択するためのCEL式。

  • response.code >= 400
  • connection.mtls && request.url_path.contains('v1beta3')
  • !has(request.useragent) || !(request.useragent.startsWith("Amazon-Route53-Health-Check-Service"))
いいえ

MetricSelector.IstioMetric

Istioメトリックプロバイダでサポートされている既知のメトリックタイプの厳選されたリスト。こちらも参照してください:https://istio.dokyumento.jp/latest/docs/reference/config/metrics/#metrics

名前説明
ALL_METRICS

この列挙型を使用すると、オーバーライドをすべてのIstioデフォルトメトリックに適用する必要があることを示します。

REQUEST_COUNT

アプリケーションへの/からのリクエストのカウンター。HTTP、HTTP/2、およびGRPCトラフィックに対して生成されます。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_requests_total

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/request_count(サーバーモード)
  • istio.io/service/client/request_count(クライアントモード)
REQUEST_DURATION

リクエスト期間のヒストグラム。HTTP、HTTP/2、およびGRPCトラフィックに対して生成されます。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_request_duration_milliseconds

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/response_latencies(サーバーモード)
  • istio.io/service/client/roundtrip_latencies(クライアントモード)
REQUEST_SIZE

リクエスト本文サイズのヒストグラム。HTTP、HTTP/2、およびGRPCトラフィックに対して生成されます。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_request_bytes

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/request_bytes(サーバーモード)
  • istio.io/service/client/request_bytes(クライアントモード)
RESPONSE_SIZE

レスポンス本文サイズのヒストグラム。HTTP、HTTP/2、およびGRPCトラフィックに対して生成されます。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_response_bytes

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/response_bytes(サーバーモード)
  • istio.io/service/client/response_bytes(クライアントモード)
TCP_OPENED_CONNECTIONS

ワークロードのライフタイム中に開かれたTCP接続のカウンター。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_tcp_connections_opened_total

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/connection_open_count(サーバーモード)
  • istio.io/service/client/connection_open_count(クライアントモード)
TCP_CLOSED_CONNECTIONS

ワークロードのライフタイム中に閉じられたTCP接続のカウンター。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_tcp_connections_closed_total

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/connection_close_count(サーバーモード)
  • istio.io/service/client/connection_close_count(クライアントモード)
TCP_SENT_BYTES

TCP接続を介したレスポンス中に送信されたバイト数のカウンター。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_tcp_sent_bytes_total

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/sent_bytes_count(サーバーモード)
  • istio.io/service/client/sent_bytes_count(クライアントモード)
TCP_RECEIVED_BYTES

TCP接続を介したリクエスト中に受信されたバイト数のカウンター。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_tcp_received_bytes_total

Stackdriverプロバイダはこのメトリックを次のようにエクスポートします。

  • istio.io/service/server/received_bytes_count(サーバーモード)
  • istio.io/service/client/received_bytes_count(クライアントモード)
GRPC_REQUEST_MESSAGES

クライアントから送信されたすべてのgRPCメッセージごとにインクリメントされるカウンター。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_request_messages_total

GRPC_RESPONSE_MESSAGES

サーバーから送信されたすべてのgRPCメッセージごとにインクリメントされるカウンター。

Prometheusプロバイダはこのメトリックを次のようにエクスポートします:istio_response_messages_total

MetricsOverrides.TagOverride.Operation

名前説明
UPSERT

指定された値の式を使用してタグを挿入または更新します。UPSERTが操作として使用される場合、valueフィールドを指定する必要があります。

REMOVE

生成時にメトリックにタグを含めないように指定します。

WorkloadMode

WorkloadModeは、ネットワークトラフィックにおける基盤となるワークロードの役割を選択します。ワークロードは、トラフィックの宛先である場合(つまり、ワークロードの観点から見たトラフィックの方向は着信です)、SERVERとして機能していると見なされます。ワークロードがネットワークトラフィックの送信元である場合、CLIENTモード(トラフィックはワークロードから発信)であると見なされます。

名前説明
CLIENT_AND_SERVER

ワークロードがネットワークトラフィックの送信元または宛先のいずれかであるシナリオを選択します。

CLIENT

ワークロードがネットワークトラフィックの送信元であるシナリオを選択します。

SERVER

ワークロードがネットワークトラフィックの宛先であるシナリオを選択します。

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

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