IT领域的可观测性,源自自动控制领域。
控制领域中,研究可观测性的目的是提供基于系统内部状态(白盒),而非系统外部输出(黑盒)进行控制的理论依据。
在IT领域中,简单而言,可观测性就是为复杂IT系统寻求白盒监控能力。
随着业务系统不断上云,容器、微服务、持续发布等云原生技术被广泛采用,从而为IT系统的可控性带来了全新挑战。为保障云原生应用的稳定性(控制的目的就是稳定),可观测技术被越来越多的企业所采用。
可观测技术的本质,是通过系统的外部数据,分析系统的内部状态,从而做出控制指令。针对于IT系统,尤其是面相云原生应用,可观测技术应包含如下需求:
1)零侵扰:传统APM/NPM等工具,要么需要应用程序中打桩插码,要么需要基础设施中分光镜像,均会对IT系统进行侵扰。可观测技术使用外部数据做分析,因此采用零侵扰的方式获取监控数据,无需打桩插码、分光镜像,而是通过开放系统架构直接获取监控数据。零侵扰的另一方面是要求低功耗,不能因为采集数据而影响应用或基础设施性能,通常采集点功耗不能超过业务功耗的1%。
2)多维度:要保障云原生应用稳定运行,可观测技术必须包含多维度数据分析能力。具体来说,要将应用的API、容器、主机、网络等监控数据进行全栈关联分析。传统的APM工具,可以定位代码层问题,却无法追踪容器或主机网络服务引起的故障。而传统的NPM工具,又不能关联应用的TraceID从而追踪穿越NAT、LB等网元的流量。因此,多维度的全栈数据分析,是可观测平台的第二个需求。
3)实时性:自动控制中,过大的传感器反馈时延,会导致系统震荡而不可控。与之类似,云原生应用的动态性要求可观测平台必须具备实时性。如果应用的升级/扩容在分钟级完成,那么监控系统就必须提供秒级的反馈能力。注意,这里的反馈需要对海量指标/追踪/日志数据进行查找分析,因此对可观测平台的海量数据实时处理能力提出了极高要求。
那么,如何简单评一个可观测平台在上述三点需求中有效性呢?这里提供三个简单判据,供诸位参考:
1)零侵扰判据:是否无需应用休改代码、重启,是否无需网络分光镜像,是否消耗不超过云主机1%的CPU;
2)多维度判据:是否同时提供应用层数据、网络层数据,基础设施层数据的全景视图(Single Pane of Glass);
3)实时性判据:是否提供对PB及指标、追踪、日志数据的秒级检索。
除此之外,可观测平台的技术架构,也是评判其先进性的重要方面。领先的可观测平台,包括云杉网络DeepFlow、Datadog、阿里云ARMS等,均采用了基于eBPF的数据采集技术以及基于OLAP的实时数仓技术。