不使用 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 代理中生成服务级别的指标,请配置以下选项:

$ 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,以提高时延报告的准确性。

性能影响

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

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

已知的限制

  • 我们只对通过 Prometheus 导出指标提供支持。
  • 我们不支持生成 TCP 指标。
  • 我们提供不基于代理生成的指标的自定义或配置。
这些信息有用吗?
Do you have any suggestions for improvement?

Thanks for your feedback!