Telemetry CRD说明

更新时间:
复制 MD 格式

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。