Envoy 的统计信息

Envoy 代理收集了关于网络流量的详细统计信息。

Envoy 的统计信息只覆盖了特定 Envoy 实例的流量。参考可观测性 了解关于服务级别的 Istio 遥测方面的内容。这些由 Envoy 代理产生的统计数据记录能够提供更多关于 Pod 实例的具体信息。

查看某个 Pod 的统计信息:

  1. $ kubectl exec "$POD" -c istio-proxy -- pilot-agent request GET stats

Envoy 会生成与 Pod 行为相关的统计数据,并通过代理函数来限定统计范围。参考示例包括:

Istio 默认配置下 Envoy 只会记录最小化的统计信息,以减少代理服务器的整体 CPU 和内存占用情况。缺省的关键词集合有:

  • cluster_manager
  • listener_manager
  • server
  • cluster.xds-grpc

要查看关于统计数据收集的 Envoy 配置,可以使用 istioctl proxy-config bootstrap 命令,还可以参考 深入研究 Envoy 配置。 Envoy 只收集在 stats_matcher JSON 字段中能匹配上 inclusion_list 的统计数据。

注意:Envoy 统计数据的名称由组成 Envoy 的不同配置而导致其拥有不同的名称。因此,由 Istio 管理的 Envoy 的统计数据暴露的名称会受到 Istio 配置行为的影响。 如果您基于 Envoy 建立或者维护仪表盘或者告警,强烈建议您在升级 Istio 之前先在金丝雀环境检查统计信息。

想让 Istio 代理能够记录更多的统计信息,您可以在您的网格配置中添加 ProxyConfig.ProxyStatsMatcher。例如,为了全局启用断路器、请求重试、上游连接和请求超时的统计数据,您可以指定如下的数据统计的匹配配置:

为了能加载数据统计的匹配配置,代理需要重新启动。

  1. apiVersion: install.istio.io/v1alpha1
  2. kind: IstioOperator
  3. spec:
  4. meshConfig:
  5. defaultConfig:
  6. proxyStatsMatcher:
  7. inclusionRegexps:
  8. - ".*outlier_detection.*"
  9. - ".*upstream_rq_retry.*"
  10. - ".*upstream_cx_.*"
  11. inclusionSuffixes:
  12. - "upstream_rq_timeout"

通过使用每个代理的 proxy.istio.io/config 注解,您也可以重载全局数据统计对应的配置。 例如,为了生成上述相同的统计数据,您可以在一个 Gateway 代理或者工作负载上添加以下注解:

  1. metadata:
  2. annotations:
  3. proxy.istio.io/config: |-
  4. proxyStatsMatcher:
  5. inclusionRegexps:
  6. - ".*outlier_detection.*"
  7. - ".*upstream_rq_retry.*"
  8. - ".*upstream_cx_.*"
  9. inclusionSuffixes:
  10. - "upstream_rq_timeout"

注意:如果您使用 sidecar.istio.io/statsInclusionPrefixessidecar.istio.io/statsInclusionRegexpssidecar.istio.io/statsInclusionSuffixes,考虑需要切换到基于 ProxyConfig 配置,因此它提供了一个全局默认并且统一的方法去重载 Gateway 和 Sidecar 代理。