ASMExtensionProvider は、Alibaba Cloud Service Mesh(ASM)の機能を強化および構成するために設計されたコンポーネントであり、トレース分析やアクセスログなど、主要な機能の柔軟な統合とカスタム構成を可能にします。このトピックでは、ASMExtensionProvider の構成方法と特定のフィールドについて説明します。
サンプル構成
Zipkin を使用したトレース分析の構成
次のサンプルコードは、Zipkin を使用してトレース分析をレポートする方法の例を示しています。
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: zipkin
spec:
zipkin:
port: 8090
service: zipkin.istio-system.svc.cluster.localEnvoy プロキシによって生成されるアクセスログのフォーマットの構成
次のサンプルコードは、Envoy アクセスログフォーマットを構成する方法の例を示しています。
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: envoy
spec:
envoyFileAccessLog:
logFormat:
text: '{"bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%","downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%","duration":"%DURATION%","istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%","method":"%REQ(:METHOD)%","path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","protocol":"%PROTOCOL%","request_id":"%REQ(X-REQUEST-ID)%","requested_server_name":"%REQUESTED_SERVER_NAME%","response_code":"%RESPONSE_CODE%","response_flags":"%RESPONSE_FLAGS%","route_name":"%ROUTE_NAME%","start_time":"%START_TIME%","trace_id":"%REQ(X-B3-TRACEID)%","upstream_cluster":"%UPSTREAM_CLUSTER%","upstream_host":"%UPSTREAM_HOST%","upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_response_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%","user_agent":"%REQ(USER-AGENT)%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","authority_for":"%REQ(:AUTHORITY)%"}'
path: /dev/stdout異なるクラスタのトレースデータレポート方法の構成
次のサンプルコードは、集約プロバイダーの構成例を示しています。ここで、cluster-a は Zipkin を使用してトレースデータを送信し、他のクラスタは OpenTelemetry を使用します。
バージョン 1.22.6.89 以降の ASM のみがサポートされています。
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: aggregate-provider
spec:
aggregate:
defaultProvider:
name: opentelemetry
uniqueProviders:
- clusters:
- id: cluster-a
region: cn-hangzhou
provider:
name: zipkin
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: zipkin
spec:
zipkin:
port: 8090
service: zipkin.istio-system.svc.cluster.local
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: opentelemetry
spec:
opentelemetry:
port: 8090
service: otel.istio-system.svc.cluster.localTelemetry CRD でのプロバイダーのインポート
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: default
namespace: istio-system
spec:
accessLogging:
- disabled: false
providers:
- name: envoy
tracing:
- providers:
- name: zipkin構成項目
ASMExtensionProvider
構成項目 | タイプ | 必須 | 説明 |
zipkin | いいえ | Zipkin のトレース分析を構成します。 | |
lightstep | いいえ | Lightstep のトレース分析を構成します。 | |
datadog | いいえ | Datadog のトレース分析を構成します。 | |
stackdriver | いいえ | Stackdriver のトレース分析を構成します。 | |
opencensus | いいえ | OpenCensus のトレース分析を構成します。 | |
skywalking | いいえ | Skywalking のトレース分析を構成します。 | |
opentelemetry | いいえ | OpenTelemetry のトレース分析を構成します。 | |
envoyFileAccesslog | いいえ | Envoy プロキシのアクセスログを構成します。 | |
aggregate | いいえ | 異なるクラスタに異なるプロバイダーを構成するための集約プロバイダーです。 |
トレースプロバイダーを構成する前に、プロバイダーの名前が ASM 内のサービスに対応していることを確認してください。外部サービスの場合は、ServiceEntry を介して登録する必要があります。詳細については、「Service Entry」をご参照ください。
ZipkinTracingProvider
構成項目 | タイプ | 必須 | 説明 |
service | string | はい | Zipkin サービスの名前です。 |
path | string | はい | Zipkin サービスのリクエストパスです。 |
port | uint32 | いいえ | Zipkin サービスのポートです。 |
maxTagLength | uint32 | いいえ | 各タグの最大文字長です。デフォルト値は 256 です。 |
LightstepTracingProvider
構成項目 | タイプ | 必須 | 説明 |
service | string | はい | Lightstep サービスの名前です。 |
port | uint32 | はい | Lightstep サービスのポートです。 |
accesstoken | string | いいえ | Lightstep サービスのアクセストークンです。 |
maxTagLength | uint32 | いいえ | 各タグの最大文字長です。デフォルト値は 256 です。 |
DatadogTracingProvider
構成項目 | タイプ | 必須 | 説明 |
service | string | はい | Datadog サービスの名前です。 |
port | uint32 | はい | Datadog サービスのポートです。 |
maxTagLength | uint32 | いいえ | 各タグの最大文字長です。デフォルト値は 256 です。 |
StackdriverProvider
構成項目 | タイプ | 必須 | 説明 |
maxTagLength | uint32 | いいえ | 各タグの最大文字長です。デフォルト値は 256 です。 |
logging | いいえ | Stackdriver のロギングです。 |
OpenCensusAgentTracingProvider
構成項目 | タイプ | 必須 | 説明 |
service | string | はい | OpenCensusAgent サービスの名前です。 |
port | uint32 | はい | OpenCensusAgent サービスのポートです。 |
context | []string | いいえ | 分散トレーシングに使用されるヘッダー伝播を指定します。デフォルトは |
maxTagLength | uint32 | いいえ | 各タグの最大文字長です。デフォルト値は 256 です。 |
SkywalkingTracingProvider
構成項目 | タイプ | 必須 | 説明 |
service | string | はい | Skywalking サービスの名前です。 |
port | uint32 | はい | Skywalking サービスのポートです。 |
OpenTelemetryProvider
構成項目 | タイプ | 必須 | 説明 |
service | string | はい | OpenTelemetry サービス名です。 |
port | uint32 | はい | OpenTelemetry サービスポートです。 |
maxTagLength | uint32 | いいえ | 各タグの最大文字長です。デフォルト値は 256 です。 |
grpc | いいえ | gRPC プロトコルレポート構成です。 | |
http | いいえ | HTTP プロトコルレポート構成です。指定しない場合、デフォルトではレポートに gRPC プロトコルが使用されます。 |
EnvoyFileAccessLogProvider
構成項目 | タイプ | 必須 | 説明 |
path | string | いいえ | ログが出力されるパスです。 |
logFormat | いいえ | ログに構成されたフォーマットです。 |
AggregateProvider
構成項目 | タイプ | 必須 | 説明 |
defaultProvider | はい | 使用されるデフォルトのプロバイダーです。 | |
uniqueProviders | いいえ | 異なるクラスタに構成されたプロバイダーです。 |
UniqueProvider
構成項目 | タイプ | 必須 | 説明 |
provider | いいえ | 参照用のプロバイダーです。 | |
clusters | いいえ | 参照用のクラスタです。 |
StackdriverProvider_Logging
構成項目 | タイプ | 必須 | 説明 |
labels | map[string]string | いいえ | ログエントリに含める label 名と式です。例: |
OpenTelemetryProvider_HttpService
構成項目 | タイプ | 必須 | 説明 |
path | string | はい | サービスのパスを設定します。 |
timeout | string | いいえ | HTTP リクエストのタイムアウト期間です。 |
headers | いいえ | 各 HTTP リクエストに追加されるカスタム HTTP リクエストヘッダーです。 |
OpenTelemetryProvider_GrpcService
構成項目 | タイプ | 必須 | 説明 |
timeout | string | いいえ | gRPC リクエストが応答されるタイムアウト期間です。 |
initialMetaData | いいえ | 各 gRPC リクエストに追加されるカスタムリクエストヘッダーです。 |
HeaderValue
構成項目 | タイプ | 必須 | 説明 |
name | string | はい | リクエストヘッダーの名前です。 |
value | string | はい | リクエストヘッダーの値です。 |
EnvoyFileAccessLogProvider_LogFormat
構成項目 | タイプ | 必須 | 説明 |
text | string | いいえ | テキスト入力のログフォーマットです。例: |
labels | map[string]string | いいえ | JSON 構造化出力の Envoy ログフォーマットを構成します。例: |
ProviderRef
構成項目 | タイプ | 必須 | 説明 |
name | string | いいえ | プロバイダーの名前です。 |
ClusterRef
構成項目 | タイプ | 必須 | 説明 |
region | string | いいえ | クラスタが配置されているリージョンです。 |
name | string | いいえ | クラスタの名前です。 |
id | string | はい | クラスタの ID です。 |