ASMExtensionProvider是用於擴充和配置網格功能的組件,支援鏈路追蹤、訪問日誌等關鍵特性的靈活整合與定製化配置。本文介紹ASMExtensionProvider的配置樣本和欄位說明。
配置樣本
配置Zipkin鏈路追蹤
以下展示了一個鏈路追蹤通過Zipkin進行上報的配置樣本。
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: zipkin
spec:
zipkin:
port: 8090
service: zipkin.istio-system.svc.cluster.local配置Envoy訪問日誌格式
以下展示了一個配置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為不同叢集配置不同的Tracing上報方式
以下展示了一個彙總Provider的配置,該配置使叢集cluster-a通過Zipkin進行鏈路追蹤資料上報,其他叢集通過OpenTelemetry進行鏈路追蹤資料上報。
僅支援ASM 1.22.6.89及以上版本。
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.local在Telemetry資源中引用provider
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 | 否 | 彙總Provider,用於為不同叢集配置不同Provider。 |
在配置鏈路追蹤Provider時,需要保證Provider的服務名稱為網格內服務,如果為網格外服務,需要通過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 | 是 | 預設使用的Provider。 | |
uniqueProviders | 否 | 為不同叢集分別配置Provider。 |
UniqueProvider
配置項 | 類型 | 是否必選 | 說明 |
provider | 否 | Provider引用。 | |
clusters | 否 | 叢集引用。 |
StackdriverProvider_Logging
配置項 | 類型 | 是否必選 | 說明 |
labels | map[string]string | 否 | 要包含在日誌條目中的標籤名稱和標籤運算式。例: |
OpenTelemetryProvider_HttpService
配置項 | 類型 | 是否必選 | 說明 |
path | string | 是 | 設定服務的路徑。 |
timeout | string | 否 | HTTP請求的逾時時間。 |
headers | 否 | 每個HTTP請求中添加的自訂 HTTP要求標頭。 |
OpenTelemetryProvider_GrpcService
配置項 | 類型 | 是否必選 | 說明 |
timeout | string | 否 | gRPC請求的逾時時間。 |
initialMetaData | 否 | 每個gRPC請求中添加的自訂 gRPC頭。 |
HeaderValue
配置項 | 類型 | 是否必選 | 說明 |
name | string | 是 | 要求標頭名稱。 |
value | string | 是 | 要求標頭值。 |
EnvoyFileAccessLogProvider_LogFormat
配置項 | 類型 | 是否必選 | 說明 |
text | string | 否 | 文本化輸出方式的日誌格式。例: |
labels | map[string]string | 否 | 配置JSON結構化輸出的Envoy日誌格式。例: |
ProviderRef
配置項 | 類型 | 是否必選 | 說明 |
name | string | 否 | Provider名稱。 |
ClusterRef
配置項 | 類型 | 是否必選 | 說明 |
region | string | 否 | 叢集所在的地區。 |
name | string | 否 | 叢集的名稱。 |
id | string | 是 | 叢集ID。 |