青铜到王者:AIOps 平台在腾讯的升级之路

梁定安(大梁),运维技术总监,复旦大学客座 DevOps 讲师。多年运维、运营开发和 DevOps 的工作经验,曾负责 Qzone、相册等 SNG 社交平台类业务的运维规划与管理,经历了 SNG 运维标准化、自动化、智能化建设的全程。

前言

提起腾讯的运维团队,第一个让人联想起来的名词当属“海量”,早在2004年腾讯前 CTO 张志东先生就提出了一套技术运营的方法论“海量运营之道”。

在海量运营方法论的指导下,运维团队构建了体系化的运维能力,为众多产品保驾护航,为公司的精品战略提供了强大的运维支持。

腾讯 SNG 的一体化智能运维(AIOps)平台——织云,作为支撑 QQ、QQ 空间等众多社交网络产品的运维平台,伴随着腾讯的社交业务走过了互联网门户时代、WEB2.0 时代、移动互联网时代,经历过不同形态的产品和技术的挑战。

织云平台从最初管理着几千台的设备规模到如今超过20万台的设备规模,运维平台的技术演进的全过程,是传统运维技术升级为智能化运维的典范。

构建通用的运维 PaaS 平台能力

腾讯的智能化运维技术并非是一蹴而就的,在运维技术和 AI 技术结合之前,还有很多日常运维的问题需要解决。保障业务的质量和提高运维的效率,是传统运维团队迫在眉睫要解决的难题。在腾讯的运维实践中,我们提出面向业务价值的运维理念,相关运维体系的建设都围绕着业务价值开展。

构建面向业务价值的运维体系,首先要做的一点便是识别运维对象,为了更好地对运维对象进行分类管理,习惯性地将运维对象按架构分层的划分为网络、设备、系统、组件、业务、用户,层级化的抽象管理让硬件运维对象和应用运维对象更清晰化。

(图:运维对象的层次划分)

不同的运维对象均包含配置属性、业务属性、监控属性、工具关联属性,各属性随着运维对象的生命周期各阶段的变化而发生变化。

(图:运维对象模型)

通过对运维对象的识别、抽象、标准化、配置化,让 CMDB 能够把运维对象记录、消费、更新等动作模型化,从而构建起运维的线上经验库,让运维的操作能够更好地指导运维或运维工具操作。所有运维对象需要与业务模型建立关联关系,让运维对象之间的关联分析提供了数据支撑。

(图 织云CMDB模型)

将运维对象抽象化、配置化、模型化后,在设计 CMDB 时,还需要解决一个很重要的场景。让 CMDB 的数据保持与运维工具、监控系统、生产环境的一致性,成为 CMDB 应用好坏的关键。

我们给出的解决方案是,从运维对象的全生命周期开始纳管,在生命周期的不同阶段,都有标准的工具或流程来完成该阶段需要的运维操作。

通过控制 CMDB 数据的读写场景,保证了 CMDB 与生产环境的数据一致性,同时也让运维平台的操作可追溯、可审计,让运维变更操作联动监控告警有了数据的基础。

(图 运维对象生命周期管理)

有了强大的 CMDB 配置数据的支撑,紧接着要解决的便是运维工具对运维对象管理操作的问题。织云对所有的运维管控操作都抽象为“资源-传输-执行”的过程,并以此设计出相关工具平台。

(图 运维管控操作的抽象)

一体化智能运维(AIOps)平台将运维的原子操作工具化,并提供管理纬度的支持,如版本化、权限化、定时任务、关联运维对象等。通过对原子工具的编排,实现工具链的能力实现工具与工具之间的串行调用,完成多步骤工具调用,以支持复杂运维场景的多个工具执行。

(图 场景化工具链与工具编排)

运维自动化在此被抽象为以 CMDB 为核心数据基础,以工具链为场景驱动。对于运维过程中常见的发布、变更、批量操作的场景,通过对工具的编排,将频繁的运维操作转换成场景化的工具链,从而实现运维操作的统一化与标准化,以及基于规则的运维自动化。

这样不仅能降低运维操作对运维经验的依赖,通过工具链的规范化也能极大降低运维操作风险。

我们提供抽象的原子工具与脚手架,让运维可以灵活组装出各自企业的标准化工具与流程,从千人一面的 PaaS能力,支撑千人千面的业务运维场景。

(图:千人一面的运维 PaaS 方案)

建立立体化监控体系

运维在腾讯被称为技术运营,顾名思义除了维护的工作之外,运维团队还承担着技术数据的使用与挖掘的职责。而技术数据最直接的使用场景,便是对业务质量的监控和告警。

在构建立体化监控的过程中,收集数据并不是最终的目标,挖掘数据的价值才是体现运维价值所在,因此腾讯运维对业务质量保障的定义分成三纬度:

  • 监控——覆盖率、状态反馈、指标度量。监控要争取做到无死角全覆盖,业务出现了什么问题都能发现,有了监控的反馈,可以看到实时监控的状态,同时,当指标发生变化的时候也需要看到一些反馈。
  • 告警——时效性、准确性、关联性、触及率。业务越来越复杂,层次越来越多,每一个监控点都会产生数据指标、状态异常,会造成越来越多的告警。有效的告警分级、追踪、关联、收敛、回溯,是质量建设的重要一环。
  • 运营——RCA、事件管理、统计报表与考核。问题再三出现、必须从根源优化。通过事件管理机制保证 RCA 可以落地,最后通过报表和考核去给运维赋予权利推动相关优化活动的开展,包括架构和代码的优化等等。

(图 质量保障的三个纬度)

按照 CMDB 管理运维对象的思路,在质量保障场景,构建立体化的监控体系需要明确各个架构层级中需要被监控的运维对象,以及该运维对象所产生的监控数据在运维监控体系的作用。

在分布式服务、高可用架构等技术作用下,业务架构日益完善,对运维监控而言,要“全、准、快”实现发现异常、分析异常、定位异常的能力,就必须有序的使用监控数据。在建设监控能力时,我们把指标划分成两大类:

  • 低层次指标。公共的、基础设施等在业务逻辑之下的指标称之为低层次的指标,网络、硬件、虚拟化等。
  • 高层次指标。高层次的指标要能更直接的反馈业务可用性的情况,如成功率、延时、请求率等。

越低层次的指标会给让监控系统或者是告警带来的噪音越大的,在规划监控处理或者优化监控策略时,要尽量把低层次的指标交给自动化工具或用高层次指标收敛掉。尽量以高层次的指标来度量业务质量,提升指标告警与业务质量的关联性。因为这才是最核心需要关注的,也是最能反馈业务可用性的。

如果一个公司用低层次指标来代替高层次的指标的作用,那质量是很难管理好的。高层次的指标,要能够实时反馈业务的真实状况。在海量规模的业务运维场景下,靠人没办法看到单机的层面,必须要看到集群的层面。这就是面向业务的运维思路与传统的运维思路的显著差异。

一体化智能运维(AIOps)平台的立体化监控体系,实现统一监控告警平台,提供各层级监控能力。有效结合 CMDB 中运维对象的关联关系,以面向业务的视角,将低层次的指标收敛为高层次的指标,实现技术运营数据的价值挖掘。

(图 立体化监控体系)

智能运维的场景探索与实践

在构建了质量与效率的运维体系后,腾讯运维开始探索 AI 技术在运维领域的应用。使用 AIOps 的技术来解决具体的运维难题,首先我们要了解 AI 的工作机制,AI最为人熟知的就是可以从大量的输入中总结出能准确预测结果的规律或模型(算法)。

通过这些规律或算法,可以利用AI技术来预测一些数值型模型、布尔型模型、概率型模型。

显而易见,AI技术在运维领域的应用首要的条件是需要有大量的数据供机器来学习(有监督或无监督学习),以找到一些数据的规律或模型。

但在实施 AIOps 时,我们遇到了一个难题,由于立体化监控体系中,各监控系统的建设周期不同,各业务、各监控对象的数据格式不一,造成不同的运维的监控数据独立存在于各个监控系统中,造成严重的数据孤岛。

因此,行之有效的运维数据治理方案成为了迫切的需求。

一体化智能运维(AIOps)平台的运维数据银行承担了将运维数据集中化收集和处理的平台化能力,为异构的运维监控数据,提供了通用的流式数据处理分析的运维大数据解决方案。

我们希望解决传统运维数据处理的难题,“人能做而不愿意做的事,和人愿意做而做不到的事”,这便是数据清洗和数据价值挖掘,前者涉及大量的数据格式化的处理工作,后者则依赖对数据分析的经验。

为此,数据银行提供了对运维数据的通用处理手段,如正则解析、数据翻译、数据统计、数值计算等数据处理逻辑,同时还直接接入自定义插件的灵活能力,提升了平台对不同数据源的兼容性。

数据银行针对运维常见的基于时间序列的数据模型,内嵌了如 OLAP 多维数据下钻分析、高斯分布分析、聚类分析等数据价值挖掘的能力,丰富运维团队对监控数据的分析手段。

(图 织云数据银行平台)

在数据银行平台能力的支持下,运维团队将海量的监控数据集中存储与分析,大量的监控数据也带来了很多问题,如误告警、阀值配置难等。

我们急需智能化的数据分析方案代替传统的数据分析方案,为此,织云 monitor(以下简称 monitor)应运而生,这是一个针对时间序列类型的数据分析智能监控系统。

通过学习经典 AI 算法,我们发现要处理好时序数据,让监控系统能精准的检测异常,必须要解决一些监控数据问题,如非正态分布的数据、纵向周期波动的数据等,它们对时间序列数据的异常检测的准确性造成了干扰。

monitor 通过对300万条/秒的时序数据的反复训练,找到了一个有效的算法组合方案,利用统计算法(3-Sigma)+无监督算法(孤立森林),快速在海量的监控数据中找出正样本,然后通过有监督学习的方法,对样本数据进行人工打标注。

此方法利用人工标识出的结果和计算出的特征训练模型,通过模型判定快速识别时序数据的异常。monitor 实现了对大量的监控指标无阀值的秒级监控能力。

(图 时间序列异常检测的技术框架)

上图为时间序列异常检测的技术框架,作为时间序列的异常检测模型,整体框架分成三大板块,第一个是离线训练板块,第二个是在线预测板块,第三个是 AB test 调优板块。

  • 在离线板块,统计判别和无监督算法输出疑似异常,然后人工进行审核,加入正负样本库,通过提取时间序列的特征,加入有监督算法进行离线训练并且输出模型;
  • 在线板块,通过加载离线训练好的模型,并且使用有监督学习算法进行实时预测,就是判断正负样本。这里,我们也会进行人工校正的过程,把误告的样本加入样本库;AB test 模块是作为调优的工具,一旦有某个流量的模型效果好,就会全网发布,实时预测。

monitor 利用人工标识出的结果和计算出的特征训练模型,通过模型判定快速识别时序数据的异常,实现了对大量的监控指标无阀值的秒级监控能力,适用于数据量级大、监控曲线各异、数据政府样板不平衡的场景。

AI 与运维的场景结合还有很多,如使用决策树算法来尝试解决告警根因分析的场景问题,使用 Apriori 算法或 FP-Growth 算法来尝试解决告警收敛的问题,使用 NLP 来解决快速发现用户投诉的问题,使用强化学习来尝试解决应用性能参数调优的问题等等。

一体化智能运维(AIOps)平台在支撑腾讯海量业务的运维场景时,AIOps 技术让监控数据更精准的发现和定位问题,并结合自动化运维的能力,在基于规则的运维场景下,可以实现无人运维的高效能力。

一体化智能运维(AIOps)平台的 CMDB、自动化运维、立体化监控和数据银行的运维 PaaS 化能力,不断从腾讯自身海量的运维场景中提炼场景化的运维工具和数据模型,让腾讯的标准化运维方案可适用于广大传统企业。

(图 时间序列异常检测的技术框架)

写在最后

AI 与运维技术的结合,让很多传统运维无法解决的难题有了新的解决思路与方案。

AIOps 的浪潮势必加速智能化运维在企业的落地,与此同时,腾讯 SNG 精心打造的织云希望将腾讯多年来积累的运维方法论、技术、数据模型等运维能力交给广大腾讯云的客户,携手更多企业的运维团队一起加入面向业务价值的运维行列。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2018-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ThoughtWorks

一个AR Tech Radar的诞生

技术雷达是ThoughtWorks每年出品两期的技术趋势报告,一般来说大家看到的雷达都是文档形式,其中有一张技术全景图,以及每个技术点的成熟度分析。而AR技术雷...

11110
来自专栏全栈工程师成长之路

程序员最佳学习方法(干货总结)

20970
来自专栏磐创AI技术团队的专栏

入门 | 知识图谱简介

34260
来自专栏ATYUN订阅号

谷歌采用神经网络驱动机器翻译,可离线翻译59种语言

谷歌的在线翻译自2016年以来一直由神经机器翻译(NMT)驱动,今天,该公司推出了其神经网络驱动的方法,以便谷歌翻译的iOS和安卓应用用户能够更准确地实现59种...

12920
来自专栏CDA数据分析师

数据科学家:那些年,我都学过哪些编程语言…

我们对事物的看法各不相同,有时他人特别喜欢的语言可能会成为另一个人的的噩梦。而我个人的噩梦是用C语言进行日常的编程工作。

17720
来自专栏华章科技

pandas创始人手把手教你利用Python进行数据分析(思维导图)

针对这两类人员的需求,近期出版上市的《利用Python进行数据分析》第2版是很好的选择。下面我们结合本书内容,大致介绍下如何利用Python进行数据分析。

20130
来自专栏织云平台团队的专栏

青铜到王者:AIOps 平台在腾讯的升级之路

在海量运营方法论的指导下,运维团队构建了体系化的运维能力,为众多产品保驾护航。

4.4K110
来自专栏机器学习AI算法工程

机器学习编程语言之争,Python夺魁

究竟哪种语言最适合机器学习成为争论不休的话题。近日,密西根州立大学的博士生 Sebastian Raschka 再次发起了机器学习编程语言之争(http://s...

350120
来自专栏ThoughtWorks

Architectural fitness function,架构你好我也好 | 雷达哔哔哔

ThoughtWorks每年都会出品两期技术雷达,这是一份关于科技行业的技术趋势报告,在四个象限:技术、平台、工具以及语言和框架对每一个条目(Blip)做采用、...

8010
来自专栏nimomeng的自我进阶

《设计原本》读书笔记

两人互动产生的思想是原来的两倍,原创性思想也是原来的两倍,同时也增加了快乐,导致试验对象去尝试更困难的任务。

21510

扫码关注云+社区

领取腾讯云代金券