不使用 Mixer 生成 Istio 指标 [Alpha]

Istio 1.4 对直接在 Envoy 代理中生成服务级别的 HTTP 指标添加了 alpha 版支持。 这个特性让你可以在没有 Mixer 的情况下使用 Istio 提供的工具监控你的服务网格。

在代理中生成的服务级别指标代替了如下所示的当前在 Mixer 中生成的 HTTP 指标:

  • istio_requests_total
  • istio_request_duration_seconds
  • istio_request_size

在 Envoy 中启用服务级别指标生成功能

要直接在 Envoy 代理中生成服务级别的指标,请配置以下选项:

  1. $ istioctl manifest apply --set values.telemetry.enabled=true,values.telemetry.v1.enabled=false,values.telemetry.v2.enabled=true,values.telemetry.v2.prometheus.enabled=true

打开 Istio Mesh Grafana 面板。可以验证在没有任何请求经过 Istio Mixer 的情况下仍然显示和之前一样的遥测指标。

和基于 Mixer 生成遥测指标的区别

在 Istio 1.3 版本,代理生成和基于 Mixer 生成服务级别的指标存在一些细微的差别。在代理生成和基于 Mixer 生成服务级别的指标有相同完整的特性之前,我们不会考虑功能的稳定性。

在那之前,请注意如下差别:

  • istio_request_duration_seconds 时延指标有一个新的名字:istio_request_duration_milliseconds。 新的指标度量单位使用毫秒代替秒。我们更新了 Grafana 面板来应对这些变化。
  • istio_request_duration_milliseconds 指标在代理中使用更多细粒度的 buckets,以提高时延报告的准确性。

性能影响

因为目前的工作是试验性的,我们主要关注的是建立基础性的功能。基于我们最初的试验,我们已经确定了几个基础的性能优化方向,希望能持续提高性能以及在开发时这个特性的可扩展性。

我们不考虑将这个特性提升到 Beta 或者 Stable 状态,直到我们完成性能和可扩展性的提升以及评估。

你的网格的性能依赖于你的配置。要了解更多,请看我们的性能最佳实践帖

下面是目前为止我们做的测试评估:

  • istio-proxy 容器中所有的过滤器一起使用比运行 Mixer 过滤器减少了 10% 的 CPU 资源。
  • 和不配置遥测过滤器的 Envoy 代理相比,新增加的过滤器会导致在 1000 rps 时增加约 5ms P90 的时延。
  • 如果你只使用 istio-telemetry 服务来生成服务级别的指标,你可以关闭 istio-telemetry 服务。 这样网格中每 1000 rps 流量可以为你节省约 0.5 vCPU,并且可以在收集标准指标时将 Istio 消耗的 CPU 减半。

已知的限制

  • 我们只对通过 Prometheus 导出指标提供支持。
  • 我们不支持生成 TCP 指标。
  • 我们提供不基于代理生成的指标的自定义或配置。