1.为什么我们需要“可观测性”?
基于监控的运维方式是运用指标和仪表盘来对故障问题进行分类,这是软件行业的普遍做法。在单体应用架构时代,由于系统交互比较简单,数据收集有限,依靠运维人员的经验和直觉来检测系统问题是有意义的。通过监控CPU、内存等资源消耗情况、数据库连接情况和网络传输质量,基本可以定位问题并进行修复。然而,现代应用程序底层系统的复杂性和规模使这种传统方法面临着挑战:分布式系统的交互组件数量众多,可能发生的故障数量和类型也更多; 此外,由于敏捷化开发的需求,分布式系统不断更新迭代,每次更改都可能产生新的故障类型;在分布式环境中,理解当前问题是一项巨大的挑战,主要是因为它比简单的系统产生更多的“未知的未知数”, 由于监控需要“已知的未知数”,因此通常无法充分解决这些复杂环境中的问题。
软件系统“可观测性”的定义是:在无需提前定义或预测调试需求的情况下,可解释系统处于何种状态的能力。可观测性很重要,因为它可以让运维人员更好地控制复杂系统,无需依靠经验或深厚的系统知识来预判问题所在。借助可观测性工具,运维人员可以客观地调查任何问题,找到深层隐藏的问题根因。由此可见,可观测性工具更适合现代的分布式IT系统,由分布式系统复杂性带来的不确定性,可通过可观测性工具得到更好的感知和预测,合理管控IT设备与业务风险。
2.“可观测性”的发展和演进
“可观测性”一词是由工程师Rudolf E. Kálmán于1960年创造的。在过去,可观测性的“三大支柱”分别指:日志、指标和跟踪。
【图1 传统的可观测性三大支柱,数据是平面的,割裂的】
事实上,由于受制于当时对数据科学的认知局限,“三大支柱”并不是一种适用于现代IT架构下的可观测性方法。例如:
假设A想了解程序正在执行的事务。因此,构建了一个日志记录工具:一个用于记录包含时间戳的消息的接口,一个用于将这些消息发送到某个地方的协议,以及一个用于存储和检索它们的数据系统。B想要监控在特定时刻的资源消耗情况,想要捕获指标。希望跟踪指标数值如何随时间变化,并在一组有限的维度上变化。显然,一大堆非结构化日志消息与这个问题无关。因此,B创建了一个完全独立的指标体系,解决了生成、传输和存储指标的具体问题。C想要确定性能瓶颈。同样,日志记录系统的非结构化性质与其毫无关系。识别性能瓶颈(例如可以并行运行的一系列操作)需要我们知道事务中每个操作的持续时间以及这些操作如何链接在一起。因此,C建立了一个完全独立的跟踪系统。
现有的可观测性方法在特定的场景和使用范围内可以帮助运维人员解决一些问题,然而,它们也有其局限性,我们在分析问题时,不会孤立地使用每个工具,而是需要一起使用。在整个过程中,这些工具的孤立性质给运维人员带来了巨大的认知负担。
【 图2 以传统方式,在不同数据集之间找到相关性是一种可怕的经历】
在“新式”仪表板中,标尺变成了一条基线,使不同的指标之间产生基于时间维度的关联性,但这同样是一个粗略的解决方案,识别相关性仍然需要靠运维人员的经验判断。在对故障问题有了粗略猜测后,运维人员需要查看可能与问题相关的事务(日志)和资源(机器,进程,配置文件)。
日志存储在完全独立的系统中,无法自动与任何指标仪表盘关联。配置文件和其他特定于服务的信息通常不在任何系统中,运维人员必须通过 SSH 或以其他方式访问正在运行的计算机才能查看它们。因此,运维人员需要再次查找相关信息,这次是在指标和日志之间建立关联。识别这些日志可能很困难,运维人员通常需要具备丰富的运维经验或者查阅源代码才能了解可能存在哪些日志。
当找到可能相关的日志时,下一步通常是确定导致生成此日志的事件链,这意味着又需要在同一事务中查找其余日志。整个过程相当繁琐,缺乏相关性再一次给运维带来了巨大的负担。
【图3 使用传统日志记录,查找构成特定事务的确切日志可能需要付出很多努力。一旦系统变得足够大,就几乎不可能了】
3.可观测性平台的数据基础 多元数据整合
数据割裂造成了运维的沉重负担,而要解决这些问题,需要一个更好的答案。如今,要了解系统如何变化,运维团队必须首先收集大量数据,如果运维人员可以专注于调查他们的系统是如何变化的,而不必首先确定正在发生的变化,那么他们就可以节省时间。“为什么这里坏了?”或“现在是什么导致延迟?” 是可观测性工具可以回答的几个问题。而在开始所有运维问题的调查之前,运维人员需要连接所有的数据节点:日志需要链接在一起,以便识别事务;指标需要链接到日志,以便生成的统计信息可以连接到它们正在监测的事务;每个数据点都需要链接到底层系统资源(软件、基础设施和配置细节),以便所有事件都可以连接到整个系统的拓扑结构中;主动拨测体系需要具备实时探测的能力,达到发现故障、模拟故障和路径追踪的目的;关键配置信息与指标和日志关联分析帮助运维人员理解业务架构,最终结果是结构化的数据,它将为分析工具提供系统的完整视图。
【图4 汇聚多种数据类型,整合多元数据的“辫子”,是可观测性分析平台的数据基础】
因此,与其说可观测性是断开连接数据的“三大支柱”,不如说可观测性的需要拥有一个整合多元数据的辫子。现代可观测性将建立在整合后的多元数据基础之上,允许分析工具对所有类型的事件和聚合进行关联,这些相关性又将对我们如何实践可观测性产生深远的影响。
【图5 多种数据源在故障发现和问题排查中的特点】
基于不同的数据组合适用于不同的分析需求(图5)的考虑,智维数据可观测性分析平台以跟踪、日志、指标、配置和拨测数据等数据整合形成数据分析的基础,形成了平台的数据底层。
从上图可以看到平台所支持的丰富的数据类型,以及适用于各运营场景下的平台联动与自动化分析能力。
4.新一代的可观测性平台的优势 自动化相关性分析
【图6 以VS连接失败为例,需要同时分析多种数据类型】
随着系统规模的扩大,通讯的交互路径最终变得过于复杂,终端用户的请求往往经过多台设备、多个业务模块的处理才能最终返回结果。用户在业务发布中通常会使用应用交付设备来进行发布,以保证其扩展性,这里我们通过运维人员遇到VS连接失败率高的问题举例(图6)来进行分析。碰到此类问题时,运维人员需要同时分析日志,关联指标、配置信息、资源占用、客户访问失败的细节等,通过逐个排除可能影响VS连接失败率高的因素最终定位问题原因。这个过程不仅需要运维人员头脑中具备清晰的思路,而且需要大量数据的排查来对每一个步骤进行佐证。这些原始数据的解读及其耗费精力,往往不能满足现代化应用对于业务可用性时间的要求。
【图7 以VS连接失败为例,智维数据可观测性分析平台可自动分析并输出结论】
现在,智维数据可观测性分析平台将多元数据进行整合后通过智能化分析能力识别整个数据集中的相关性,可自动完成数百类运维、安全问题的状态解读和故障的根因分析(图7),从直觉过渡到客观的全面观察。自动相关性检测的能力将赋能运维团队能够根据智能化、定制化的告警快速察觉异常,以往的告警模式会产生大量的信息,使运维人员淹没在海量告警中,该平台通过对黄金指标(延迟、流量、错误、饱和度)的长周期学习形成符合用户场景特征的基线,并根据指标的异常变化告警,使运维人员可更加准确的感知业务异常;通过应用拓扑实现业务画像,业务画像真实反应用户访问的路径,并将关键指标关联到访问路径上,根据指标变化标记异常节点;最后通过平台的事件分析能力实现故障自动化分析并输出结果和处置建议,从前繁琐的人工排障过程,比如数据回溯与疑点排查,现在通过大数据和智能算法,获得了分钟级的自动化解决方案。
智维数据可观测性分析平台立足于通、断、调中的每一个节点交互数据与配置数据分析,通过机器学习和缝合算法自动绘制企业实时业务交互数据动态地图。独有的智能算法可快速发现数据异常,提升用户在IT网络运维及安全上的响应能力,改变企业IT监控与业务相脱离的现状,是业内唯一的,全访问流程监控与分析平台。
平台内置的运营分析场景算法,为企业提供了更强的数据挖掘可扩展空间,支撑数据应用随需而变,支撑运维向运营能力进化。
快速搭建企业级可观测性分析平台,支持业务端数据应用创新能力。