不使用 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,以提高时延报告的准确性。
性能影响
因为目前的工作是试验性的,我们主要关注的是建立基础性的功能。基于我们最初的试验,我们已经确定了几个基础的性能优化方向,希望能持续提高性能以及在开发时这个特性的可扩展性。
我们不考虑将这个特性提升到 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 指标。
- 我们提供不基于代理生成的指标的自定义或配置。