不使用 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 指标。
- 我们提供不基于代理生成的指标的自定义或配置。