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等方式)。
同时,以此方式修改可观测配置后,请勿再通过ASM控制台对可观测配置进行修改,否则可能造成字段丢失。更多关于Telemtry资源的字段信息,请参见Telemetry。