全部產品
Search
文件中心

Alibaba Cloud Service Mesh:Telemetry CRD說明

更新時間:Feb 06, 2025

Telemetry用來定義和佈建服務網格中觀測和收集資料相關的策略和行為。它為您提供了更細粒度和可控的方式來管理Istio提供的遙測功能,例如日誌、度量、追蹤等。通過Telemetry CRD,您可以根據特定的需求自訂和調整遙測資料的收集和處理。本文介紹Telemetry CRD的配置樣本和欄位說明。

配置樣本

當前Istio支援三種不同範圍的可觀測配置方式,與ASM控制台可觀測配置的對應關係如下:

  1. 全域配置全域

  2. 特定命名空間配置命名空間

  3. 特定工作負載配置自訂

以下展示了不同範圍進行可觀測配置的Telemetry YAML檔案樣本。

全域配置

展開查看YAML內容

apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  labels:
    provider: asm
  # 名稱為default,命名空間為istio-system時對全域生效
  name: default
  namespace: istio-system
spec:
  accessLogging:
  - disabled: false
    # ASM預設配置,無法修改
    providers:
    - name: envoy
  metrics:
  # 需要配置client和server的每個監控指標
  - overrides:
    - disabled: false
      match:
        metric: REQUEST_COUNT
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_COUNT
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_DURATION
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_DURATION
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_SIZE
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_SIZE
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: RESPONSE_SIZE
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: RESPONSE_SIZE
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_REQUEST_MESSAGES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_REQUEST_MESSAGES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_RESPONSE_MESSAGES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_RESPONSE_MESSAGES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_SENT_BYTES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_SENT_BYTES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_RECEIVED_BYTES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_RECEIVED_BYTES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_OPENED_CONNECTIONS
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_OPENED_CONNECTIONS
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_CLOSED_CONNECTIONS
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_CLOSED_CONNECTIONS
        mode: SERVER
      tagOverrides: {}
    # ASM預設配置,無法修改
    providers:
    - name: prometheus
  tracing:
  - customTags:
    foo:
      literal:
        value: bar
    randomSamplingPercentage: 10

特定命名空間配置

展開查看YAML內容

apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  labels:
    provider: asm
  # 名稱為default時代表對於整個命名空間生效
  name: default
  # 對於default命名空間生效
  namespace: default
spec:
  accessLogging:
  - disabled: false
    providers:
    - name: accesslogging.default.default
  metrics:
  - overrides:
    - disabled: false
      match:
        metric: REQUEST_COUNT
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_COUNT
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_DURATION
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_DURATION
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_SIZE
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_SIZE
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: RESPONSE_SIZE
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: RESPONSE_SIZE
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_REQUEST_MESSAGES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_REQUEST_MESSAGES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_RESPONSE_MESSAGES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_RESPONSE_MESSAGES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_SENT_BYTES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_SENT_BYTES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_RECEIVED_BYTES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_RECEIVED_BYTES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_OPENED_CONNECTIONS
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_OPENED_CONNECTIONS
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_CLOSED_CONNECTIONS
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_CLOSED_CONNECTIONS
        mode: SERVER
      tagOverrides: {}
    providers:
    - name: prometheus

特定工作負載配置

展開查看YAML內容

apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  labels:
    provider: asm
  # 名稱不為default時代表只對selector欄位指定label的工作負載生效
  name: test
  # 對default命名空間下的指定工作負載生效
  namespace: default
spec:
  accessLogging:
  - disabled: false
    providers:
    - name: accesslogging.default.test
  metrics:
  - overrides:
    - disabled: false
      match:
        metric: REQUEST_COUNT
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_COUNT
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_DURATION
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_DURATION
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_SIZE
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: REQUEST_SIZE
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: RESPONSE_SIZE
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: RESPONSE_SIZE
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_REQUEST_MESSAGES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_REQUEST_MESSAGES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_RESPONSE_MESSAGES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: GRPC_RESPONSE_MESSAGES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_SENT_BYTES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_SENT_BYTES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_RECEIVED_BYTES
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_RECEIVED_BYTES
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_OPENED_CONNECTIONS
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_OPENED_CONNECTIONS
        mode: SERVER
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_CLOSED_CONNECTIONS
        mode: CLIENT
      tagOverrides: {}
    - disabled: false
      match:
        metric: TCP_CLOSED_CONNECTIONS
        mode: SERVER
      tagOverrides: {}
    providers:
    - name: prometheus
  # 對於哪些workload生效
  selector:
    matchLabels:
      foo: bar

欄位說明

Telemetry

屬性

類型

是否必選

說明

selector

WorkloadSelector

配置選取器指定需要配置Telemetry策略的工作負載。

tracing

Tracing[]

配置所有選定工作負載的鏈路追蹤行為。

metrics

Metrics[]

配置所有選定工作負載的指標監控行為。

accessLogging

AccessLogging[]

配置所有選定工作負載的日誌記錄行為。

Tracing

屬性

類型

是否必選

說明

randomSamplingPercentage

double

控制用於追蹤的流量採樣率,取值為0時代表不採樣。

customTags

map<string, CustomTag>

向tracing中添加額外的自訂標籤。

Metrics

屬性

類型

是否必選

說明

overrides

MetricsOverrides[]

針對某個特定的監控指標,或是所有預設的標準監控指標,自訂其產生的方式和表現形式。

providers

ProviderRef[]

配置應適用的提供者名稱,當前只支援配置Prometheus

AccessLogging

屬性

類型

是否必選

說明

disabled

bool

控制日誌行為。

providers

ProviderRef[]

配置應適用的提供者名稱,當前只支援配置Envoy

WorkloadSelector

屬性

類型

是否必選

說明

matchLabels

map<string, string>

一個或多個標籤,用於指示應用特定策略的一組Pods/虛擬機器(VMs)。標籤搜尋的範圍被限制在資源所在的配置命名空間內。

CustomTag

屬性

類型

是否必選

說明

literal

Tracing.Literal

向每一個span添加相同且硬式編碼值。

environment

Tracing.Environment

將一個環境變數的值添加到每一個span中。

header

Tracing.RequestHeader

從請求中提取一個特定的頭部資訊,並將其值添加到每一個span中。

MetricsOverrides

屬性

類型

是否必選

說明

match

WorkloadSelector

匹配需要覆蓋的監控指標,需要添加並配置所有用戶端以及服務端指標

disabled

bool

是否禁用指標監控,設定為true則禁用。

tagOverrides

map<string, MetricsOverrides>

一個選定的度量監控指標中,用於覆蓋的一系列維度名稱和維度資料表達式的集合。

MetricSelector

屬性

類型

是否必選

說明

metric

MetricSelector.IstioMetric

控制監控指標。

mode

WorkloadMode

控制監控指標產生的模式,有以下兩種可選: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

MetricsOverrides.TagOverride.Operation

控制是否需要更新/添加/刪除一個維度。

value

string

設定的標籤值,只有operationUPSERT時會使用。

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