本文由日志易安全技术专家梁志伟撰写,刊登于山西证券的《山证人》技术增刊:安全运维。
近年来,互联网高速发展下的需求驱动、技术进步以及商业模式的转变,导致了企业各类业务趋向数字化,以此期望突破传统业务来找到新的利润增长点。为此,企业新建、重构了大量互联网类的业务系统,给企业基础设施、网络和应用各条线的运维管控带来了巨大的压力。
目前,企业基本上都建设有系统监控、网络监控、存储监控、数据库监控、中间件监控、交易性能监控等基础设施或者基础指标的专项监控系统,这类监控系统的建设角度基本上都是以某一类基础支撑对象为出发点,来监控其运行态势。但是这些专业级别的监控系统现阶段基本上是孤立的,没有被整合在一起,所以当网络、数据库或中间件发生故障时,企业并不能迅速定位这些基础层面的故障会影响到哪些应用系统,当业务系统不能正常处理请求时,企业也无法快速准确定位到底哪一类对象的哪一个指标才是问题的根源。
现有的监控手段基本上是以“从下而上”的角度来构建监控系统,即从底层出发来感知上层的应用状况。而实际上,所有的运维管控,最终的服务对象是应用系统。应用性能的监控管理已经不是一个新的概念,很多企业已经建设有自身的基于网络抓包的、基于日志、甚至基于业务流水的性能分析系统。但本质上,它仍然是一个专项的监控系统,并不能做到关联性的故障分析定位,这也是基础类监控系统的最大痛点。
如何利用已有的各类运行数据来更好地观测我们的系统,提升业务的连续性以及客户体验,是所有正处于数字化转型过程的企业都需要思考的重点。
技术思路
早在2018年,“可观察性”(Observability)就已经被引入到了IT领域,其核心内容是整合监控数据、日志数据以及Tracing等数据,在监控系统之外重点关注应用,是对应用系统的一种自我审视,即站在应用系统的角度去探究、展现自身的状态。它与传统监控系统的不同之处是,一个由外向内,一个由内向外,二者站立的角度不同。
(可观察性概述)
一个可观察性系统往往包含三个关键词:应用、主动和关联。应用是指我们关注的重点是应用本身,而不是基础设施;主动是观测的核心,相对于监控系统被动的暴露异常,可观察性更多是关注系统发生异常的根源。
可以通过以下三个手段构建可观察性:
(1)Logging,就是运维人员常见的日志,是应用在运行过程中所产生的痕迹,日志最详细地记录了请求处理的过程,是应用系统日常排障的重要数据来源。
(2)Metrics,即指标,用来观察系统的状态和趋势,以便及时发现异常,但对于问题的定位缺乏细节支持。
(3)Tracing,面向请求以及路径,全路径展现请求链路以及整个IT系统的互联架构,从路径中分析异常。
(可观察性的数据核心)
关键技术
一、数据整合技术
数据整合是可观测性的数据支撑。
从基础能力方面来讲,系统必须具备对可观察性Metrics、Tracing、Logging的采集能力,即海量数据的实时采集能力。对于数据整合来讲,这一点毋庸置疑,同时市面上大部分的监控类产品具备该方面的能力。
另一方面,需要能对接现有的各类监控系统,支持接口级别的对接以及数据源级别的对接。在这方面,我们主要强调的是高效、快捷。从技术角度上讲,各类的存储介质的对接技术难度不大,但是面对“多源”,可能会产生较大的工作量。运维人员的工作重心是运维管理,而不是编码,所以在这里我们提出了工具化、图形化、流程化的数据对接能力,以可视化的方式来实现数据的整合处理。
(异构数据的交互难题)
二、数据计算技术
Tracing数据,数据的关联以及根因分析的场景定义,都需要大量的数据处理来实现,根据不同的数据特性以及分析场景,我们的系统需要具有支持批量计算和流式计算的能力。
如同前面所述,不可能以代码化的方式来让运维人员处理这部分内容,所以我们提供了不同的处理机制。
(1)流式计算能力
流式计算,我们强调的是数据的实时性。需要支撑的计算场景相对固定,除了基本的数据处理之外,我们重点关注多源数据的合并、时间窗口统计、事务窗口合并等方面的能力,在这里我们以组件化、图形化的方式,加以流式大数据计算后台,来实现数据的计算过程。
(流式数据计算过程编排)
针对Tracing的实时数据,我们则需要通过流式计算的能力,来实时统计链路关系数据以及链路节点的关键指标信息。
(2)离线计算能力
离线计算,关注的重点是场景。需要能够提供丰富的计算原子命令,通过命令的组装来灵活地以离线任务的方式实现数据处理。在这种情况下,我们面向的数据类型必须是多种多样的。在依托大数据架构的能力基础之上,集成大量的数据处理命令,可以帮助企业实现数据关联、分析等操作,其中包含了大量的历史统计、基线统计、计算、合并、连接等计算命令支撑。(SPL离线计算能力)
针对日志的处理以及多数据关联的计算,尤其是针对于历史数据的计算,则非常依赖平台离线计算的能力。
三、数据检测技术
数据监测方面,我们重点关注非指标类运维数据的检测,例如Tracing以及日志数据。
依托于平台数据计算能力的支撑,企业能够实现:
(1)基于日志的交易过程监控,我们可以从日志中发现系统异常、交易异常以及业务异常等。这一方面来看,我们能够帮助企业构建一个专项的日志系统。
(2)基于Tracing,我们能够以可观察性的角度,观测链路的完整性、异常节点等。如此,若系统发生重大异常,或因版本变更而产生问题时,根因定位更为直观、快捷。
(Tracing下的全局监控)
四、指标检测技术
现有的指标类监控系统,针对指标异常的监控,往往是采用阈值的方式来进行监控,普遍存在大量的误报,在重要节日或者系统异常波动时,某些阈值设置有失合理性,也会导致大量的误报或者漏报。
在AIOps理论基础下,我们将人工智能技术运用于运维领域,结合现已整合的运维数据,通过机器学习的算法实现自动化、无监督模式下的异常自动发现。
(基于机器学习进行指标异常检测)
可观察性智能运维监控助您实现
通过平台各种高效的数据处理技术以及智能化的处理能力,从外部观测企业IT系统的运行情况,降低用户对应用系统理解的门槛,以用户体验的角度观测系统运行,同时提升故障分析的效率,这也是我们最终的目标。
项目实践
某万亿城商行从2019年开始建设以业务观测为视角的全链路追踪分析监控系统,整合基于应用系统的链路数据、性能数据以及日志数据。
一方面,该城商行实现了从整体上掌控整个IT系统的互联互通架构,为架构优化提供了数据支撑;另一方面,大幅提升监控以及故障排查的效率,进而提升了整个IT系统的用户使用体验。
整个系统的建设核心以及目的主要体现在以下几个方面:
一、数据治理方面
我们根据该用户自身的实际情况,定义了各方面的数据标准,为后续功能级别的实现夯实基础。
这些数据包含Tracing、Metrics以及Logging,而这其中Tracing的数据改造最为关键。受制于传统架构的模式,现有应用系统的互联互通并未进行明确的Tracing数据标准定义,所以需要多方进行改造适配,这部分适配工作也是前期准备工作的重点以及核心工作。
二、链路分析方面
以标准化的数据为基础,构建了全局的链路架构,并辅以黄金指标监控,构建单请求的追踪情况,快速展现异常节点、耗时节点等信息。
(全局视角看链路)(请求视角看故障)(故障视角看线索)
三、应用监控方面
与此同时,以Tracing进行统计计算,形成了体现业务能力的黄金指标,再结合机器学习算法进行自动检测,形成了业务的全局监控视图以及系统健康情况面板。(应用监控面板)
(自动化检测面板)