Telemetry用來定義和佈建服務網格中觀測和收集資料相關的策略和行為。它為您提供了更細粒度和可控的方式來管理Istio提供的遙測功能,例如日誌、度量、追蹤等。通過Telemetry CRD,您可以根據特定的需求自訂和調整遙測資料的收集和處理。本文介紹Telemetry CRD的配置樣本和欄位說明。
配置樣本
當前Istio支援三種不同範圍的可觀測配置方式,與ASM控制台可觀測配置的對應關係如下:
以下展示了不同範圍進行可觀測配置的Telemetry YAML檔案樣本。
全域配置
特定命名空間配置
特定工作負載配置
欄位說明
Telemetry
屬性 | 類型 | 是否必選 | 說明 |
selector | 否 | 配置選取器指定需要配置Telemetry策略的工作負載。 | |
tracing | Tracing[] | 否 | 配置所有選定工作負載的鏈路追蹤行為。 |
metrics | Metrics[] | 否 | 配置所有選定工作負載的指標監控行為。 |
accessLogging | 否 | 配置所有選定工作負載的日誌記錄行為。 |
Tracing
屬性 | 類型 | 是否必選 | 說明 |
randomSamplingPercentage | double | 否 | 控制用於追蹤的流量採樣率,取值為0時代表不採樣。 |
customTags | map<string, CustomTag> | 否 | 向tracing中添加額外的自訂標籤。 |
Metrics
屬性 | 類型 | 是否必選 | 說明 |
overrides | 否 | 針對某個特定的監控指標,或是所有預設的標準監控指標,自訂其產生的方式和表現形式。 | |
providers | 否 | 配置應適用的提供者名稱,當前只支援配置Prometheus。 |
AccessLogging
屬性 | 類型 | 是否必選 | 說明 |
disabled | bool | 否 | 控制日誌行為。 |
providers | 否 | 配置應適用的提供者名稱,當前只支援配置Envoy。 |
WorkloadSelector
屬性 | 類型 | 是否必選 | 說明 |
matchLabels | map<string, string> | 否 | 一個或多個標籤,用於指示應用特定策略的一組Pods/虛擬機器(VMs)。標籤搜尋的範圍被限制在資源所在的配置命名空間內。 |
CustomTag
屬性 | 類型 | 是否必選 | 說明 |
literal | 否 | 向每一個span添加相同且硬式編碼值。 | |
environment | 否 | 將一個環境變數的值添加到每一個span中。 | |
header | 否 | 從請求中提取一個特定的頭部資訊,並將其值添加到每一個span中。 |
MetricsOverrides
屬性 | 類型 | 是否必選 | 說明 |
match | 否 | 匹配需要覆蓋的監控指標,需要添加並配置所有用戶端以及服務端指標。 | |
disabled | bool | 否 | 是否禁用指標監控,設定為true則禁用。 |
tagOverrides | map<string, MetricsOverrides> | 否 | 一個選定的度量監控指標中,用於覆蓋的一系列維度名稱和維度資料表達式的集合。 |
MetricSelector
屬性 | 類型 | 是否必選 | 說明 |
metric | 否 | 控制監控指標。 | |
mode | 否 | 控制監控指標產生的模式,有以下兩種可選:CLIENT, SERVER。 |
ProviderRef
屬性 | 類型 | 是否必選 | 說明 |
name | string | 是 | MeshConfig中包含的Telemetry provider。 |
Tracing.Literal
屬性 | 類型 | 是否必選 | 說明 |
value | string | 是 | 需要使用的標籤值。 |
Tracing.Environment
屬性 | 類型 | 是否必選 | 說明 |
name | string | 是 | 從中提取標籤值的環境變數名稱。 |
defaultValue | string | 否 | 環境變數不存在時使用的預設值。 |
Tracing.RequestHeader
屬性 | 類型 | 是否必選 | 說明 |
name | string | 是 | 從中提取標籤值的header名稱。 |
defaultValue | string | 否 | header不存在時使用的預設值。 |
MetricsOverrides.TagOverride
屬性 | 類型 | 是否必選 | 說明 |
operation | 否 | 控制是否需要更新/添加/刪除一個維度。 | |
value | string | 否 | 設定的標籤值,只有 |
MetricSelector.IstioMetric
名稱 | 描述 |
REQUEST_COUNT | 從應用程式發出的請求計數,包括HTTP、HTTP/2和gRPC流量。 |
REQUEST_DURATION | 針對HTTP、HTTP/2和gRPC流量產生的請求期間。 |
REQUEST_SIZE | 針對HTTP、HTTP/2和gRPC流量產生的請求體大小。 |
RESPONSE_SIZE | 針對HTTP、HTTP/2和gRPC流量產生的響應體大小。 |
TCP_OPENED_CONNECTIONS | 工作負載生命週期內開啟的TCP串連計數。 |
TCP_CLOSED_CONNECTIONS | 工作負載生命週期內關閉的TCP串連計數。 |
TCP_SENT_BYTES | 通過TCP串連在響應期間發送的位元組數。 |
TCP_RECEIVED_BYTES | 通過TCP串連在請求期間接收的位元組數。 |
GRPC_REQUEST_MESSAGES | 用戶端發送的gRPC訊息數量。 |
GRPC_RESPONSE_MESSAGES | 服務端發送的gRPC訊息數量。 |
MetricsOverrides.TagOverride.Operation
名稱 | 描述 |
UPSERT | 指定該維度需要被添加。 |
REMOVE | 指定該維度需要被移除。 |
WorkloadMode
名稱 | 描述 |
CLIENT | 工作負載為用戶端,作為網路流量起點。 |
SERVER | 工作負載為服務端,作為網路流量終點。 |
注意事項
對於本文中未列出的欄位,ASM在原則上保持與對應版本Istio的相容,ASM控制台不提供對這些欄位的編輯功能,因此如果您希望使用這些欄位,需直接操作對應的Telemetry CR(通過kubectl等方式)。更多關於Telemtry資源的欄位資訊,請參見Telemetry。