本文要探讨的,是IT业界近几年新兴的热词:可观察性。我们不妨从一只著名的猫谈起——薛定谔的猫,它对于我们解读可观察性不无启发。
因此,只有在揭开木箱盖子的一瞬间,才能确切地知道猫是死是活。量子理论认为,如果没有揭开盖子观察,猫永远处于既活又死的叠加态,可这违背了逻辑——现实中当然不存在既活又死的猫。
薛定谔用这个思想实验与其它学派进行学术争论,其中的是非曲直,属于神仙打架,我们这些量子物理学的门外汉当然无从判断。不过,对于IT科技领域的理论和实战,这个思想实验却有着有趣的借鉴意义:
我们所保护的对象
周围永远伴随着危险
我们知道事故会发生
却不知道哪一刻发生
最糟糕的是
这一切都在黑箱之中
薛定谔的猫是否健康,只有在打开黑箱进行观察的一刻才能确定,所以在这个虚拟实验中,观察是问题的关键。
在数字化世界,要保障业务系统的健康,关键的因素正是可观察性。
02可观察性的哲学
可观察性(Observability)虽然在IT界是近几年才热起来的新术语,但它其实是上世纪60年代由匈牙利裔工程师鲁道夫·卡尔曼提出的概念,源于控制论,是指系统可以由其外部输出信号推断其内部状态的程度,在维基百科中这样定义:
人类各个领域的进步,无不伴随着可观察性的提高。
例如在医疗领域,X光、超声波、CT、核磁共振等科技手段的不断应用,让人体内部器官的状态越来越多地转换成外部可见的光电信号,让医生可以直观地观察和诊断。人体的各种物理、生化状态,被量化成各种生理指标数字,准确地描述人体的健康水平。
在城市管理中,遍布城市各角落的摄像头,让车流、人流转化成视频影像,使得管理者通过屏幕直观地掌控城市的运行状态,实施有效管理。
交通工具如汽车、船舶和飞机同样如此,它们上百年的发展历程,同样是一部可观察性不断进步的历史。一架现代的飞机由上百万个零件构成,飞机各个部位布满了传感器,把飞机姿态、高度、温度、湿度、风速、发动机状态、轮胎气压等内外部信息实时传送到驾驶舱,在仪表盘上显示,供飞行员随时掌握。
无疑,评价一架现代的飞机,除了衡量飞行速度、安全性、载重量、航程等因素,可观察性也是一个重要的指标。越先进的飞机,内部结构越复杂,它的可观察性越重要。
一架好的飞机,必须是可观察性好的飞机。
一个好的业务系统,必须是可观察性好的业务系统。
对于业务系统,尤其是云原生时代的分布式、微服务化、容器化的复杂应用,随着系统业务量日益庞大、内部结构日益复杂、组件间交互日益频繁,传统的监控管理手段已经不足以满足新时代的需求,可观察性就自然而然地被引入IT领域,变成与性能、可用性、可靠性、可扩展性一样的关键维度。
03业务视角的可观察性
1.Logging,日志,展现应用运行产生的事件,可以解释系统的运行状态,但是存储和查询需要消耗大量的资源,通常要使用过滤器减少数据量。
2.Metrics,指标,聚合数值显示的统计指标,占用存储空间小,可以观察系统的状态和趋势,但对于问题定位缺乏详细信息。
3.Tracing,追踪,面向的是请求,分析出请求中异常点,但与logging有相同的问题,就是资源消耗较大,通常需要通过采样的方式减少数据量。
三种形式的数据各有特点,互相补充,将它们组合使用会产生丰富的观察数据,实现业务系统的可观察性。
很多人不清楚可观察性与传统的监控的关系,认为只是监控换了一个说法。
实际上,从概念角度说,CindySridharan将可观测性定义为监控的超集,范围大大超越监控,Twitter工程团队将可观测性具体化为监控、预警、可视化、分布式系统跟踪、日志聚合和分析,谷歌则提出了Dapper理论,强调对服务的端到端跟踪。
从使用者角度说,传统的监控由运维部门使用,基础是对异常的判断,核心功能是告警,定位于保证系统的稳定性。而需要可观察性的不限于运维部门,业务部门需要观察业务经营数据的变化趋势,开发部门需要观察程序在生产环境下运转的情况,快速发现新版本上线后的问题。
从开发角度说,可观察性是给软件的开发者提出的新要求,在满足功能、性能、可靠性、可扩展性要求的同时,还要让应用系统中更多细节能够被外部观察。监控系统只能监控可观察到的东西。
有了可观察性,薛定谔的黑箱就变成一个透明的白箱,让氰化物容器和猫咪的健康状态一目了然。
04实现可观察性的工具
随着可观察性需求的凸显,出现了很多开源项目和商用软件,以不同的技术路线和方式帮助企业实现系统的可观察性。
其中,Zipkin、Jaeger工具等定位于服务跟踪(tracing)领域。Fluentd、ELK等是日志分析(logging)领域的典型工具。Promethues、grafana、influxdb定位于指标监控(metrics)领域。ApacheSkywalking则融合了tracing与metrics。
公司产品主要应用场景包括:
业务处理过程的可观察性:对于企业多套分布式的大型业务系统,华青融天软件可以集中、实时监测构成系统的大量节点与数据流状态,实时计算业务量、成功率、响应率、处理耗时等指标(metrics),让业务在分布式系统内部的处理过程可观察,主动发现问题,保证系统稳定,优化客户体验。
交易链路端到端的可观察性:对每种业务类型的每条交易链路实现端到端实时追踪(tracing),当交易出现异常时告警,并准确指明导致告警的节点,便于运维人员快速定位问题根源。
业务处理异常的可观察性:对客户业务的所有处理环节进行实时追踪和校验,检验其处理过程的准确性,对诸如交易金额错误、非客户意愿的重复交易等业务异常实时捕获,以避免业务损失。
不同于前文所谈到的各种软件工具,华青融天系列软件采用网络流量和日志自动解析相结合的方式,无需对业务系统进行改造、插入各种代码,也无需在业务服务器安装代理,是一种无侵入的方式,能够以低成本、短周期满足企业的可观察性需求。
正如城市的视频监控网络可以支撑多方面的应用,如疏导交通、追捕逃犯、应急指挥等,基于华青融天的机器大数据实时分析平台,可以开发出多种上层应用,以满足不同层面的需求。例如:服务于运维部门的故障根因定位,服务于业务部门的用户画像与用户行为分析,服务于开发部门的仿真系统等。随着业务系统可观察性的提高,更多的应用场景将被激活。
随着分布式架构和云原生技术的不断普及,围绕可观察性,必将形成一个快速发展的热点领域。华青融天将持续丰富产品家族,更好地满足企业的可观察性需求。