前言:在
运维数据的系列文章中,系统的阐述了有关数据运营的一些阶段和过程,众所周知,运维技术栈是没有边界的,因此通过这种属性进行运维能力输出的延伸存在很大的主观判断性。随着运维能力的不断增强,主观判断的不确定性随之放大,给运维能力输出的稳定性保障带来了极大的挑战,同时也让我们认识到,面向过程与操作的运维能力输出模型将难以为续,这一特性在DevOps和AiOps的建设上表现的尤为突出。在本篇中,我们将通过监控平台来系统的阐述“面向终态”,来解决运维数据运营中的一系列问题。
一、 什么是面向终态
需要明确的是,面向终态是一种设计方法,在运维领域,有核心的四个能力域,分别是安全、稳定、高效、低成本。这四个能力域也匹配着运维能力输出的四个阶段,分别是手工运维、自动化运维、DevOps、AiOps。在这四个阶段中,运维的对象始终贯穿了系统、用户、业务、业态,因此面向终态重点在于终态的对象和范围。
以系统为例,面向终态描述了系统的最终形态,用户只需要描述自己需要什么,不需要详细规划执行路径,系统会根据线上的实时状况以及运维知识库来动态调整,来达到系统安全稳定的目的。举个通俗易懂的例子,在灰度过程中,会根据灰度的需求来自动执行灰度策略来动态分配流量。
以用户为例,面向终态描述了用户的最终需求,重点在于系统内部的控制逻辑,主要核心在于声明式API,用户只需要描述最终需求,不需要提供详细的逻辑设计,系统会根据需求通过声明后提交给系统,最终完成用户期望的结果,和面向系统的终态不同的是,面向用户的终态主要是暴露给用户的使用方式。
二、 监控平台的意义
随着科技的不断发展,线上业务占比不断攀升,信息科技越来越成为核心生产力,因此一些非功能性的需求逐步上升到一个比较高的程度,可用性、可靠性、业务连续性的兜底都需要监控来完成。另一个方面,数据存储成本、数据价值输出、数据衍生能力也需要将核心业务数据扩展到一个较宽泛的范围,这也是面向终态的监控平台。
在运维领域来说,业务保障域是监控平台的核心功能,具备全方位无死角的监控覆盖范围,以业务为顶层视角,系统为主体数据输出模式,对故障进行检测、诊断、恢复、预测,其中故障预测是基于运维经验沉淀和积累的结果,对数据的分析来总结出故障的模式,从而进行预测。在IT数字化方面,监控数据是重要的数据资产,因此监控平台需要承担核心数据集散地的作用,为业务数据提供补全,为技术数据提供支撑。在成本预测方面,容量管理和采购管理需要相应的资源利用率提供数据支撑,还包括投入产出比来进行优化建议。
因此,基于系统的面向终态,监控平台应该包括以下几种特性。①基于业务的实时链路监控;②基于平台的应用异常实时监控;③基于用户的子域数据汇聚;④基于数据交换的实时输出;⑤基于预警的统一集中收敛。
基于用户的面向终态,用户的最终需求涵盖了故障处理的事前、事中、事后的全流程,在事前阶段,用户关心有没有做监控,在事中阶段,用户关心监控是否及时,相关指标的准确率高不高,事后阶段,用户关心故障复盘是否能够达到既定的目的。因此监控平台应该应该包括以下几种特性。①以服务目录的方式对监控对象进行解读;②能够以自动化的方式对监控对象进行全覆盖;③能够智能的对报警阈值和等级进行定义;④对故障处理流程进行学习,并形成知识库。
从输出能力来罗列,面向终态的监控平台应该对监控数据进行全生命周期管理,以达到运行态监控、安全审计、业务分析和数据输出的功能,并以数据集散地的形态来提供第三方数据的接入和接出。
从监控平台的目标来看,需要发挥的作用主要有以下,①能够实时的采集数据;②能够实时的反馈业务的运行态状态;③能够智能的预知故障和告警;④能够支撑能力子域进行辅助故障定位;⑤能够支撑研发人员对系统进行针对性的优化;⑥能够对容量规划进行辅助分析。
从监控平台的数据覆盖度来看,横向需要进行数据宽度的延展,从网络、服务器存储、系统、应用到最终的业务层进行数据的采集和汇聚。纵向需要进行打通用户终端、流量出入口、系统集群、产品运营进行端对端的数据多维度关联。
通过一张图进行简单的理解。
三、 现有监控方案的一些问题
现实中,企业已经采取各种各样的监控软件来达到业务域保障的目的,比较典型的是以为Zabbix、ELK为代表的开源软件,在实际使用中都取得了很好的效果。但从面向终态的方法来看,还存在一些需要改进的点。主要有以下,
① 对于企业来说,监控能力的全局性较弱,现有的监控系统只针对某个领域或者某个能力聚焦,无法对全局有全面的掌控。
② 无法将业务层往下的子域的链路关系、数据关系形成逻辑汇聚,因此造成排错时间长,业务恢复缓慢。
③ 监控告警多且杂。正因为有很多领域级的监控软件,这些不同的监控软件造成了各种独立的告警,导致告警风暴。
④ 不支持对其他能力子域的系统接入,尤其涉及到业务链路级、接口级、方法级的数据自动获取,导致监控漏配、错配引起的准确率和召回率不达标。
⑤ 作为数据的接入接出的集散地,对数据的聚合和二次计算支撑不够,导致数据的资产能力大打折扣。
⑥ 对大规模的时间序列分析和根因定位存在功能缺失。
四、 面向终态的监控设计
在面向终态的监控设计过程中,需要更加友好的面对监控对象和监控使用者,因此和普通监控所不一样的,第三方的数据接入需要在服务目录的范畴。在面向终态的服务目录设计中,包括如下特性。
1、 提供可视化的服务内容,使用更为便捷,降低使用成本,提升用户人群的覆盖度,把监控视角提升至业务优先。
2、 将第三方数据统一以服务中介的方式进行进行接入,服务中介在于端到端的数据开箱即用方式,如外接接口管理平台,接口的新增、废除能够自动的进行统计、计算和分析。
3、 由服务中介指定相应的服务提供给监控平台用户,通过对数据标签的方式自动的进行关联,根据实时、近线、离线不同方式的处理,最终呈现给特定的标签用户。
4、 监控平台用户可自定义的接入可用的服务对象。
在数据的处理方面,更偏重于清洗和指标分层计算,在此之前,需要数据源的多样化匹配,支持kafka、clickhouse或victoriaMetrics等多数据源的接入,最终需实现实时消息、文件的接入和数据的实时聚合。在数据聚合的需求梳理中,需达到多个维度和指标对数据进行聚合。数据衍生是面向终态的最直接表现,需支持根据不同的指标进行运算,得到用户想要的多维复合数据。
其中,在清洗阶段,需要实时的接收数据,进行数据的处理、转换、清洗,任务一般基于storm或flink实现,经过清洗任务处理后的结构化数据通过
消息队列进行数据流转或回流。在指标计算阶段,对结构化数据进行相关指标的计算,需达到高吞吐量,标准SQL等特性,还需要加强时间窗口、去重等能力的匹配。根据标签数据和标签用户的不同特性,动态的对数据进行实时处理和离线更新。
在数据的回流输出方面,面向终态的监控平台,需要根据监控的目标不断的去回检当前系统状态,从而为面向终态执行决策的时候,提供部分的依据,因此模型管道的构建必不可少,这也是我们常说的异常检测的功能,下图为数据反馈图。
在异常检测方面,可以从告警分析和根因分析来落地。在告警分析方面,基于系统的面向终态需要实现,①对告警的时间顺序进行趋势分析;②对指标对比进行分析,降低指标预警的召回率;③对已知的告警进行标记,辅助优化模型,间接提升指标预警的准确率。在根因分析方面,通过数据的下钻和关联数据的收敛,根据最终的影响因素来对算法分析出的主因进行判断标记,通过主因判断的结果符合度指标来进行算法调优。
在基于面向终态的监控平台设计中,平台应有如下分层。①用户体验层;②服务能力层;③数据分析层;④数据加工层;⑤后台管理层。
五、 写在最后
面向终态继承了aiops的理念,通过运用大量的声明式api来提高“无条件”的极致用户体验,同时运用机器学习来加强了数据的输出和变现能力,这种设计方式将技术进行反向解耦,在服务能力的范围之内,将数据纳入到用户体验中,提升数据的反馈能力,拓展了监控平台的用户范围,更安全、稳定、高效、低成本的践行高效运维理念,也解决了运维数据运营中的一系列问题。在本篇中,主要描述了面向终态的设计方法,此为本系列的开篇,后续会对基于面向终态的监控平台进行详细的阐述。