可观测性
微服务架构中最大的挑战之一是如何通过简单方法就能够了解各服务间的关系。一次请求可能会流经多个甚至几十个独立部署的微服务,因此,发现哪里有性能瓶颈或错误变得尤为重要。
在 Istio
中, 为服务网格内所有的服务通信生成了详细的遥测数据,这种遥测技术提供了服务行为的可观察性,使得运维人员能够更快的排查故障、维护和优化服务,而不会给服务的开发人员带来任何额外的负担。通过 Istio
,运维人员可以全面了解到受监控的服务是如何与其他服务以及 Istio
组件进行交互。
Istio
生成了以下三种类型的遥测数据,以提供对整个服务网格的可观测性:
指标:Istio 基于 4 个监控维度(延迟、流量、错误、饱和度)生成了一系列的服务指标。此外,还提供了控制平面级更详细的指标,并基于这些指标默认提供了一些监控面板,如:
Grafana
。(饱和度是指服务每秒可以处理的请求总数,以及距离达到该阈值有多近)
分布式追踪:
Istio
为每个服务生成分布式追踪span
,并默认提供Jaeger
面板,方便运维人员更直观的查看网格内服务的依赖和调用流程。访问日志:当流量流入网格中的服务时,
Istio
可以生成每个请求的完整记录,包括源和目标的元数据。此信息使运维人员能够将服务行为的审查控制到单个工作负载实例的级别。
在 Istio
中,已经和常见的几个Dashboard
( Prometheus
、Grafana
、Jaeger
、Kiali
)做了对接, 能够帮助我们了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态等,最大幅度的实现了对服务网格中服务的可观测性。Dashborard
需要手动安装,安装方法参照3.3 部署dashboard。
本章中,我们会通过 Jaeger
实现调用链跟踪、通过 Prometheus
和 Grafana
实现遥测数据收集和展示,通过Kiali
生成服务可视化图。