全部產品
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

否

設定的標籤值,只有operation為UPSERT時會使用。

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。