遥测
遥测定义了如何在网格内为工作负载生成遥测。
对于网格级配置,请将资源放在 Istio 安装的根配置命名空间中,*无需* 工作负载选择器。
对于任何命名空间,包括根配置命名空间,只能有一个没有工作负载选择器的 Telemetry 资源。
对于具有工作负载选择器的资源,只能有一个资源选择任何给定的工作负载。
Telemetry 配置的层次结构如下
- 特定于工作负载的配置
- 特定于命名空间的配置
- 根命名空间配置
示例
启用 10% 流量的随机采样的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
# no selector specified, applies to all workloads
tracing:
- randomSamplingPercentage: 10.00
为 foo
工作负载禁用跟踪报告的策略(注意:跟踪上下文仍将传播)
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: foo-tracing
namespace: bar
spec:
selector:
matchLabels:
service.istio.io/canonical-name: foo
tracing:
- disableSpanReporting: true
选择备用 Zipkin 提供程序用于跟踪报告的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: foo-tracing-alternate
namespace: baz
spec:
selector:
matchLabels:
service.istio.io/canonical-name: foo
tracing:
- providers:
- name: "zipkin-alternate"
randomSamplingPercentage: 10.00
仅从客户端工作负载采样跟踪的 Zipkin 提供程序定制策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
# no selector specified, applies to all workloads
tracing:
- match: CLIENT
- providers:
- name: "zipkin"
从字面值添加自定义标签的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
# no selector specified, applies to all workloads
tracing:
- randomSamplingPercentage: 10.00
customTags:
my_new_foo_tag:
literal:
value: "foo"
禁用整个网格的 Prometheus 服务器端指标的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
# no selector specified, applies to all workloads
metrics:
- providers:
- name: prometheus
overrides:
- match:
metric: ALL_METRICS
mode: SERVER
disabled: true
为foo
命名空间的所有 Prometheus 指标添加维度的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: namespace-metrics
namespace: foo
spec:
# no selector specified, applies to all workloads in the namespace
metrics:
- providers:
- name: prometheus
overrides:
# match clause left off matches all istio metrics, client and server
- tagOverrides:
request_method:
value: "request.method"
request_host:
value: "request.host"
从bar.foo
工作负载的一些 Prometheus 指标中删除response_code
维度的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: remove-response-code
namespace: foo
spec:
selector:
matchLabels:
service.istio.io/canonical-name: bar
metrics:
- providers:
- name: prometheus
overrides:
- match:
metric: REQUEST_COUNT
tagOverrides:
response_code:
operation: REMOVE
- match:
metric: REQUEST_DURATION
tagOverrides:
response_code:
operation: REMOVE
- match:
metric: REQUEST_SIZE
tagOverrides:
response_code:
operation: REMOVE
- match:
metric: RESPONSE_SIZE
tagOverrides:
response_code:
operation: REMOVE
为整个网格启用访问日志记录的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
# no selector specified, applies to all workloads
accessLogging:
- providers:
- name: envoy
# By default, this turns on access logging (no need to set `disabled: false`).
# Unspecified `disabled` will be treated as `disabled: false`, except in
# cases where a parent configuration has marked as `disabled: true`. In
# those cases, `disabled: false` must be set explicitly to override.
禁用foo
命名空间的访问日志记录的策略
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: namespace-no-log
namespace: foo
spec:
# no selector specified, applies to all workloads in the namespace
accessLogging:
- disabled: true
遥测
跟踪
Tracing 配置网格内工作负载的跟踪行为。它可用于启用/禁用跟踪,以及设置采样率和自定义标签提取。
Tracing 配置支持在配置层次结构中的每个级别覆盖providers
、random_sampling_percentage
、disable_span_reporting
和custom_tags
字段,并从父资源中填充缺失的值。但是,如果指定了custom_tags
,它将完全替换父配置提供的任何值。
ProviderRef
用于将遥测配置绑定到特定提供程序以进行目标定制。
指标
Metrics 定义网格内指标生成行为的工作负载级覆盖。它可用于启用/禁用指标生成,以及自定义生成的指标的维度。
MetricSelector
提供了一种机制来匹配指标以应用覆盖行为。
MetricsOverrides
MetricsOverrides 定义单个指标或所有标准指标集的自定义指标生成行为。
访问日志记录
访问日志记录定义访问日志生成的作业负载级覆盖。它可用于选择提供程序或启用/禁用工作负载的访问日志生成。
Tracing.TracingSelector
TracingSelector 提供了一种粗粒度的方式,可以根据某些流量元数据(例如流量方向)配置跟踪行为。
Tracing.CustomTag
CustomTag 定义一个要添加到跟踪跨度的标签,该标签基于操作员提供的值。此值可以是硬编码值、从侧车代理已知的环境变量中获取的值或来自请求标头的值。
注意:如果指定了custom_tags
,它将完全替换父配置提供的任何值。
Tracing.Literal
Tracing.Environment
Tracing.RequestHeader
MetricsOverrides.TagOverride
TagOverride 指定对指标维度(也称为label
)执行的操作。可以添加、删除标签或覆盖其默认值。
AccessLogging.LogSelector
LogSelector 提供了一种粗粒度的方式,可以根据某些流量元数据(例如流量方向)配置日志记录行为。LogSelector 应用于当前不受过滤器支持的属性集表示的流量元数据。它允许控制平面限制发送到各个工作负载的配置。可以通过filter
进一步配置更细粒度的日志记录行为。
AccessLogging.Filter
允许指定访问日志过滤器。
MetricSelector.IstioMetric
Istio 指标提供程序支持的已知指标类型的精选列表。另请参阅:https://istio.ac.cn/latest/docs/reference/config/metrics/#metrics
名称 | 描述 |
---|---|
ALL_METRICS
| 使用此枚举表示覆盖应该应用于所有 Istio 默认指标。 |
REQUEST_COUNT | 对应用请求/响应的计数器,针对 HTTP、HTTP/2 和 GRPC 流量生成。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
REQUEST_DURATION | 请求持续时间的直方图,针对 HTTP、HTTP/2 和 GRPC 流量生成。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
REQUEST_SIZE | 请求正文大小的直方图,针对 HTTP、HTTP/2 和 GRPC 流量生成。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
RESPONSE_SIZE | 响应正文大小的直方图,针对 HTTP、HTTP/2 和 GRPC 流量生成。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
TCP_OPENED_CONNECTIONS | 工作负载生命周期内打开的 TCP 连接计数器。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
TCP_CLOSED_CONNECTIONS | 工作负载生命周期内关闭的 TCP 连接计数器。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
TCP_SENT_BYTES | 通过 TCP 连接在响应期间发送的字节计数器。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
TCP_RECEIVED_BYTES | 通过 TCP 连接在请求期间接收的字节计数器。 Prometheus 提供程序将此指标导出为: Stackdriver 提供程序将此指标导出为
|
GRPC_REQUEST_MESSAGES | 客户端发送的每个 gRPC 消息都会递增此计数器。 Prometheus 提供程序将此指标导出为: |
GRPC_RESPONSE_MESSAGES | 服务器发送的每个 gRPC 消息都会递增此计数器。 Prometheus 提供程序将此指标导出为: |
MetricsOverrides.TagOverride.Operation
名称 | 描述 |
---|---|
UPSERT | 插入或更新带有提供的表达式值的标签。如果使用 |
REMOVE | 指定在生成指标时不应包含该标签。 |
WorkloadMode
WorkloadMode 允许选择网络流量中底层工作负载的角色。如果工作负载是流量的目标(即,从工作负载的角度来看,流量方向是入站),则认为该工作负载充当SERVER
。如果工作负载是网络流量的源,则认为它处于CLIENT
模式(流量从工作负载出站)。
名称 | 描述 |
---|---|
CLIENT_AND_SERVER | 选择工作负载是网络流量的源或目标的情况。 |
CLIENT | 选择工作负载是网络流量的源的情况。 |
SERVER | 选择工作负载是网络流量的目标的情况。 |