能治好白癜风的医院在哪 http://pf.39.net/bdfyy/bjzkbdfyy/190321/6983144.html文章来源
阿里巴巴中间件团队
可观测性(Observability)主要是指了解程序内部运行情况的能力。我们不希望应用发布上线后,对应用的内部一无所知。对于我们来说,整个应用就是一个黑盒子。即便应用出现错误或者发生崩溃,我们也可以得到崩溃前的所有相关数据,这也是飞机黑匣子(FlightRecorder)设计的出发点,如图1所示。
图1飞行记录仪之日志、度量和追踪
目前,关于可观测性的架构设计主要涉及三个部分:日志(logging)、度量(Metrics)和追踪(Tracing)。下面就从这三个方面详细阐述可观测性架构的设计。
日志
要想了解系统的运行情况,最简单的方法就是查看日志。为此,我们创造了非常多的日志框架、工具和系统,如日志文件打印、日志文件采集工具、日志分析系统等。但是,在实际运维中,我们不能将所有信息事无巨细地全部记录下来,这样做反而没有意义。我们需要为日志设置不同的级别,如debug、error、info等,在开发、测试、生产等不同环境下开启不同的日志级别,并保证在系统运行时能够实时调控这些日志级别。
通常,我们不用考虑日志处理的问题,毕竟日志处理技术经过长时间的发展,目前已经非常成熟,几乎所有的编程语言都有对应的日志框架。目前,云厂商基本上都会提供日志服务,对接非常简单,或者自行安装成熟的日志处理系统,如ElasticStack等。
度量
度量不仅包括CPU负载、内存使用量等技术指标的度量,还包括非常多的业务度量(BusinessMetrics),如每分钟的交易额、每分钟会员登录数等。对于这些业务度量参数,我们在做架构设计的时候,需要以参考指标的方式全部罗列出来,以便于观测上线后的数据,并做出相应的业务决策。
这里可能会有读者产生疑问,我们已经使用日志记录了相关的数据,数据库中也保存了最终的数据,为什么还要增加对数据的记录?为了解答这个问题,我们首先看一下如下区别。
第一,日志记录的是发生在某个时间点的事情,其中包含非常多的细节,可以说是事无巨细的。
第二,数据库记录的是当前数据的最新快照,我们通常不会