前言:
能够在生产环境中“监控”系统的运行状态,比在开发环境中完整的测试所有的功能更重要。
1. 什么是可观测性?
- 可观察性≠监控
- 监控指的是从运维人员的角度去审视系统的行为和状态,他是被动的。是从系统之外去探究系统的运行状态。
- 从开发者的角度探究系统的状态
- 可观测性是指从开发人员的角度主动的去探究系统的运行状态,需要开发人员在开发的过程中主动的去考虑把哪些系统的指标暴露出去。而在以前,只是通过记录日志的方式去查看系统的运行状态。
- 组成:指标、日志收集、分布式追踪
2. 指标
指标又叫——度量。他是以集合数据的方式来查看系统的行为。例如:可以在一些时间点上做一些记录,然后把这些生成的数据统一起来,最后就能以一个趋势图的方式来展示这段时间系统的运行状态。
Istio中的指标分为3类:
- 代理级别的指标
- 服务级别的指标
- 控制平面指标
代理级别的指标
就是用收集Sicecar代理上的一些数据。我们都知道,Sidecar代理会直接接管所有的请求,所以有很丰富的数据供我们收集。
典型代理级别指标举例:
服务级别的指标
主要用来收集服务本身的一些信息。主要是根据服务的4个最基本的监控需求来进行收集:延迟、流量、错误、饱和。默认情况下这些指标数据会导出到prometheus,也可以自定义。服务级别的指标不一定输出,可以根据情况开启或关闭。
举例:
控制平面指标
通过控制平面指标来监控Istio自身的状况,这样就可以了解到整个网格的健康情况,
3. 日志
日志是通过系统产生的事件来监控你的应用。Istio里提供了访问日志,包括的非常完整的元数据信息(比如:请求的来源,目标地址),也支持导出到第三方工具里(ELK等)。一般来说,日志包括两部分:1. 应用本身的日志(开发主动输出的log) 2. 还可以查看Envoy产生的信息
4. 分布式追踪
通过追踪请求来了解服务间的调用关系,主要把分布式追踪用于问题的排查以及性能分析方面