十万服务器秒级管控 腾讯云如何将 AIOps 用于日常管理?

  • 梁定安

2018 年 3 月 25 日

话题:DevOps语言 & 开发架构文化 & 方法腾讯云AI

AIOps,是指基于算法的 IT 运维(Algorithmic IT Operations),由 Gartner 定义的新类别,源自业界之前所说的 ITOA(IT Operations and Analytics)。我们已经到达了这样的一个时代,数据科学和算法正在被用于自动化传统的 IT 运维任务和流程。算法被集成到工具里,帮助企业进一步简化运维工作,把人们从耗时又容易出错的流程中解放出来。

在过去的几年间,Docker、OpenStack、Puppet 等新技术不断涌现和流行,以及 CI/CD、DevOps 等理念的落地生根,利用智能化运维手段帮助提升了运维的效率,减少因人工和流程操作而引起的运维故障成为企业破局自动化运维束缚的最佳途径,“AIOps”(Algorithmic IT Operations)由此应运而生。

腾讯云基于海量的网络业务,在互联网门户时代、WEB2.0 时代、移动互联网时代的历史变迁当中,历经不同形态产品的技术挑战,逐步积累沉淀了一套成熟的智能运维体系和运维策略,实现了超过 20 万台的设备规模的秒级管控。

本文将结合腾讯云织云体系的构建历程,详细讲解腾讯云是如何通过整合数据的智能存储和分析,对 IT 系统中各个环节的问题进行快速定位、故障排除和预测,为其他企业的 AIOps 落地实践提供一些方法、思路和解决方案。

2 腾讯云自动化运维体系及其构建思路

腾讯云的智能化运维体系并非是一蹴而就,AIOps 涉及的技术,从 AI 的角度,主要包括机器学习算法,以及大数据相关的技术,从 Ops 的角度,主要是运维自动化与运维监控的相关技术。因此,AIOps 一定是建立在高度完善的运维自动化基础之上的,只有 AI 没有 Ops,谈不上 AIOps。在谈 AIOps 之前,我们先来看看腾讯云自动化运维体系的整体运维框架。

运维对象识别

构建面向业务价值的运维体系,首先要做的一点便是识别运维对象,为了更好的对运维对象进行分类管理,腾讯云将运维对象按架构分层,划分为网络、设备、系统、组件、业务、用户六大层。

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

如图为运维对象的层次划分结构,从下往上看,最底层为网络资源层,这一层主要包括资源监控、云端资源、交换机和负载均衡;其上是设备资源层,主要负责主机监控、运营状态监控与资源池管理,再上层为系统资源层,这里面主要是用户 / 密码管理、系统初始化、OS/ 内核以及基础的 agent;业务层和资源层之间划分了 API 接口层、逻辑层以及数据层,主要做组件的选型、监控、包管理、配置管理;业务层包含业务架构、分布、容灾和监控;最上层是用户端适配,包括手机型号、调度方法和监控等模块,层级化的抽象管理能够让硬件运维对象和应用运维对象更清晰化。

(图 运维对象模型)

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

CMDB 配置管理

通过对运维对象的识别、抽象、标准化、配置化之后,CMDB 能够更便捷地将运维对象的记录、消费、更新等动作模型化,从而构建起运维的线上经验库,让运维的操作模式统一。腾讯织云 CMDB 将所有运维对象与业务模型建立关联关系,为运维对象之间的关联分析提供了数据支撑。

(图 织云 CMDB 模型)

图上为腾讯织云 CMDB 管理模型,分为标准模型和自定义逻辑 CI,标准模型里面包含业务树、服务器、网络设置、IDC、专线 / 出口以及应用程序等模块,主要做基础的数据库配置管理;自义逻辑 CI 提供标准组件 CI 以及用户自定义 CI,用户可根据业务需求进行自定义参数设置。

运维对象管理

运维对象抽象化、配置化、模型化后,在设计 CMDB 时,还需要解决一个非常重要的场景:让 CMDB 的数据与运维工具、监控系统以及生产环境保持一致性,这一点决定了 CMDB 应用是否真正便捷。

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

在一致性环境保障方面,织云给出的解决方案是,从运维对象的全生命周期开始纳管,在入库、初始化、变更、运营、下线等运维生命周期的不同阶段,提供标准的工具或流程来完成该阶段需要的运维操作。同时,通过控制 CMDB 数据的读写场景,保证 CMDB 与生产环境的数据一致性,让运维平台的操作可追溯、可审计,此时,运维变更操作与监控告警之间的联动便有了数据基础。

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

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

织云工具平台将运维的原子操作工具化,并提供如版本化、权限化、定时任务、关联运维对象等不同管理纬度的支持。通过对原子工具的编排,实现工具与工具之间的串行调用,以支持复杂运维场景下的多个工具执行。

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

运维 PaaS 的标准化与多样化

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

这样不仅能降低运维操作对运维经验的依赖,通过工具链的规范化也能极大降低运维操作风险。并且织云提供抽象的原子工具与脚手架,让运维可以灵活组装出各自企业的标准化工具与流程,从千人一面的 PaaS 能力,支撑千人千面的业务运维场景。

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

织云立体化监控方案

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

  • 监控——覆盖率、状态反馈、指标度量。监控要做到 360 度无死角,业务出现了什么问题都能发现,有了监控的反馈,可以看到实时监控的状态,同时,当指标发生变化的时候也需要看到一些反馈。

  • 告警——时效性、准确性、触及率。业务越来越复杂,层次越来越多,每一个监控点都会产生数据指标、状态异常,会收到越来越多的告警。未看到或者看到未处理都需要承担责任,因为收到的并非都是误告警。最重要还要有触及率,告警由谁发布与处理?

  • 运营——RCA、事件管理、统计报表与考核。问题再三出现、必须从根源优化。通过事件管理机制保证 RCA 可以落地,最后通过报表和考核去给运维赋予权利推动相关优化活动的开展,包括架构和代码的优化等等。

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

按照 CMDB 管理运维对象的思路,在质量保障场景,构建立体化的监控体系需要明确各个架构层级中被监控的运维对象,以及该运维对象产生的监控数据在运维监控体系的作用。在分布式服务、高可用架构等技术作用下,业务架构日益完善,对运维监控而言,要“全、准、快”实现发现异常、分析异常、定位异常的能力,就必须有序的使用监控数据。

在建设监控能力时,织云监控系统将监控指标划分成两大类:

  • 低层次指标。公共的、基础设施等在业务逻辑之下的指标称之为低层次的指标,网络、硬件、虚拟化等。

  • 高层次指标。高层次的指标要能更直接的反馈业务可用性的情况,如成功率、延时、请求率等。

如果一个公司用低层次指标来代替高层次的指标的作用,那么质量管理容易变得复杂而混乱。因此,在规划监控处理或者优化监控策略时,织云监控体系尽量将低层次的指标交给自动化工具或用高层次指标收敛掉。而在度量业务质量时,多以高层次的指标来衡量,提升指标告警与业务质量的关联性。因为高层次指标往往是最核心最需要被关注的,也最能反馈业务可用性。

(图 织云立体化监控体系)

高层次的指标,要能够实时反馈业务的真实状况。在海量规模的业务运维场景下,只需观测到整个集群的运维状况而不必深入单机层面,这就是面向业务的运维思路与传统的运维思路的最显著差异。

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

在构建了高效的自动化运维体系后,腾讯云开始探索 AI 技术在运维领域的落地实践。使用 AIOps 的技术来解决具体的运维难题,首先需要了解 AI 的工作机制,AI 最为人熟知的就是可以从大量的输入中,总结出能准确预测结果的规律或模型(算法)。通过这些规律或算法,可以利用 AI 技术来预测一些运维当中的数值型模型、布尔型模型、概率型模型,从而精简运维流程,提高运维效率。

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

构建数据统一管理平台

腾讯云在实施 AIOps 过程中,由于立体化监控体系中各监控系统的建设周期不同,各业务与监控对象的数据格式不一,不同的运维监控数据独立存在于各个监控系统中,造成严重的数据孤岛。因此,在将机器学习和训练模型运用到织云系统之前,腾讯云首先构建了一套行之有效的运维数据治理方案——织云运维数据银行。

下图为织云数据银行架构图,异构数据源通过数据银行的接入服务进入消息列队,在流处理平台进行数据的统计、翻译、计算等操作,在这个过程中如果发现异常则通过告警策略分发至统一告警平台进行告警处理。

(图 织云数据银行平台)

织云的运维数据银行提供了将运维数据集中化收集和处理的平台化能力,为异构的运维监控数据,提供了通用的流式数据处理分析方案,如正则解析、数据翻译、数据统计、数值计算等数据处理逻辑。考虑到平台对不同数据源的兼容性,数据银行同时提供了直接接入自定义插件的灵活能力。

针对运维常见的基于时间序列的数据模型,数据银行内嵌如 OLAP 多维数据下钻分析、高斯分布分析、聚类分析、GBDT 等数据价值挖掘的能力,丰富运维团队对监控数据的分析手段。在数据银行平台的支持下,腾讯云运维团队实现了海量的监控数据集中存储与分析。

Monitor 时序数据智能监控系统

大量的监控数据经常会遇到诸如误告警、阀值配置难等问题,通过学习经典 AI 算法,我们发现要处理好时序数据,让监控系统能精准的检测异常,必须要解决一些监控数据问题,如非正态分布的数据、纵向周期波动的数据等,因为它们对时间序列数据的异常检测的准确性造成了强烈干扰,腾讯织云 Monitor 系统为此而生。

Monitor 是腾讯云基于时序数据的智能监控系统,通过对 200 万 / 分的时序数据的反复训练,织云 Monitor 找到了一个有效的算法组合方案,利用统计算法(3-Sigma)+ 无监督算法(孤立森林),快速在海量的监控数据中找出正样本,通过有监督学习的方法,对样本数据进行人工打标注。

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

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

  • 在离线板块,统计判别和无监督算法输出疑似异常,然后人工进行审核,加入正负样本库,通过提取时间序列的特征,加入有监督算法进行离线训练并且输出模型;

  • 在线板块,通过加载离线训练好的模型,并且使用有监督学习算法进行实时预测,就是判断正负样本。这里,我们也会进行人工校正的过程,把误告的样本加入样本库;

  • AB test 模块是作为调优的工具,一旦有某个流量的模型效果好,就会全网发布,实时预测。

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

织云一体化运维解决方案

除了上述数据银行的大数据智能监控系统,腾讯云在 AIOps 上的运维实践还有很多,包括使用决策树算法来尝试解决告警根因分析的场景问题,使用 Apriori 算法或 FP-Growth 算法来尝试解决告警收敛的问题,使用 NLP 来解决快速发现用户投诉的问题,使用强化学习来尝试解决应用性能参数调优的问题……由于篇幅有限,本文不在此一一详述。

(图 织云一体化运维解决方案)

总的来说,海量业务的运维场景下,AIOps 技术能够让监控数据更精准的发现和定位问题,并结合自动化运维的能力,提供无人运维的高效解决方案。腾讯云的 AIOps 落地实践,坚持以业务驱动为原则,基于不同场景下的运维诉求,通过智能化的手段,完成海量网络架构的智能监控与处理。

除了对自身海量业务的支持,腾讯云以开放和互助的心态,基于多年的网络体系运维经验,向业界输出一套完整的智能运维方法论、技术体系和数据模型,通过这些工具和思路,企业可以基于自身业务特点和诉求,构建一套行之有效的 AIOps 体系。本文以某金融企业为例,简单讲述腾讯织云解决方案在企业智能化运维改造方面的落地实践,希望为大家提供参考借鉴。

企业运维痛点

金融企业采用的 IT 资源管理系统多数较为原始,如使用原始的 Excel 管理数据、业务侧缺乏统一的规划与管理等,随着资本市场的兴起与繁荣,旧的 IT 基础设施和设计理念已远远不足以支撑企业海量的用户交易与结算服务监控,企业亟需一种高效的、智能的运维手段提升整体运营效率。

  • 采用原始的 EXCEL 管理,该方式主要带给客户如下弊端:

    • 无法直观且有效的反映出每一个具化的资源对象的生命周期与运营状态

    • 原始数据的修改完全依赖人工触发修改,数据的有效性与准确性难于保证,同时带来较繁琐的数据核查工作

    • IT 资源的整体与局部利用率未能清晰的展示出,IT 资源成本一直居高不下

  • IAAS 层的服务器、网络设备、缺乏有效的统一监控、告警与自动化能力的支撑;

    • 1000+ 服务器利用率的度量与监控

    • 交换机、路由器等网络设备的运营质量与容量

  • 全球化业务环境与运营支撑环境的网络专线与公网出口的纳管、流量分析、监控等;

  • 用于业务支撑的众多的外网域名的服务质量度量;

  • 私有云与公有云的统一运维管理

  • 业务侧的运维缺乏有效的管理与规划。

织云系统智能化运维解决方案

根据该企业的痛点和诉求,腾讯云规划并建立起整体 IT 运营生态,采用领先的 AIOps 理念,通过替换原有资源管理方式、细化监控对象数据粒度、捕获网络内的相关信息、度量域名的公网访问质量、划分三级功能模块所属信息等手段,完成了该交易所的业务功能模块梳理,建立起完善的权限管控机制,标准化应用服务版本管理和运维操作规范。 具体落地思路如下:

1、用 CMDB 替换原始的 Excel 管理资源

EXCEL 管理资源方式不仅效率底下,且无法直观、有效反映出每一个具化的资源对象的生命周期与运营状态。腾讯云通过先配置在纳管的理念将资源统一管理,每种资源具有自己的可度量可运营的管理模型。

 CMDB 中统一描述对象的类别、数量、关系 (对象与对象间的关系)、状态等,并且通过与监控平台实时联动保障了每个对象的服务质量的可控与可度量。

通过该管理模型,实现硬件与业务的关联,并将配置信息运用在多样化的运维场景。如运维可以清晰的获知某台物理服务器,资源存放在某个 IDC 中、存放在该 IDC 的某个机架上、接入在某台交换机上的某个端口上、在业务规划态该服务器分配给某个业务、在业务运营态该服务器的实际负载是多少、触发服务器告警的条件是什么等资源的具体信息。

2、细化监控对象的数据粒度

对于金融企业的服务器与网络设备资源,织云基于服务器的 agent 数据上报、网络设备的 SNMP 与 syslog 分析等,精准的度量出每一个资源对象的状态、负载、服务质量等数据。例如对于交易所的网络设备监控,细化如下三个维度:

  • 网络设备的物理端口的监控与告警;

  • 网络设备的逻辑端口 (物理端口的逻辑组合) 的监控与告警;

  • 网络设备的 syslog(设备运行日志) 的监控与告警;

  • 网络设备的监控与业务、主机的监控关联。

3、基于 Xflow 协议捕获网络会话信息

对于金融企业的网络出口与网络专线资源,织云基于设备厂商的 Xflow 协议可以捕获到网络内的相关会话信息 (ip+ 端口维度),并对于每个会话进行量化的分析与展示,帮助交易所解决运维高频场景的问题包括:

  • 某条专线当前利用率多少?

  • 在已经使用的流量中,具体是那个业务或者那个 ip 使用了多少带宽资源?

  • 这些所消耗的带宽是基于什么协议与方向?

  • 专线的丢包率与时延是怎么样的?

  • 专线下联的服务器与业务是哪些?

4、度量域名的公网访问质量

对于金融企业众多的业务支撑域名,织云通过分布在全国各地域不同运营商处 170 个拨测点的实时拨测,精准的度量出域名的公网访问质量。

5、划分三级功能模块所属信息

结合腾讯内部运维最佳实践,聚焦三级功能模块所属设备、包、任务、监控等信息,最佳效率提升运维管理。如从业务模块的视角出发度量与管理资源、权限及动作。

6、业务指标的智能监控

为了保障业务的质量,运维需要对业务、应用程序和基础设施等进行监控和度量,其中涉及的指标量巨大,利用阀值管理指标的传统监控方法需要大量人工操作。针对监控涉及众多指标的运维场景,织云提供了更智能的解决方案:

  • 动态阀值替代静态阀值

  • 告警数据的智能收敛

  • 告警数据的关联分析

  • 告警数据联动运维工作完成故障自愈

  • 数据的 AI 有监督模型训练方案

通过系列实战落地改造,织云系统帮助该集团基于自身诉求,建立了覆盖硬件性能、专线 / 出口、专线、域名流量分析的 IAAS 层健康监控等适合业务发展的完善的金融 DevOps 运维体系,从而推进了整个业务的运营监控质量,提升企业 IT 运营对于业务促进的整体效果。

梁定安(大梁),腾讯 SNG 运维技术总监,腾讯云织云产品负责人,腾讯云布道师、复旦大学客座 DevOps 讲师。多年运维、运营开发和 DevOps 的工作经验,曾负责 Qzone、相册等 SNG 社交平台类业务的运维规划与管理,经历了 SNG 运维标准化、自动化、智能化建设的全程。目前正致力于腾讯云企业级运维方案织云的产品化工作,积极探索新技术在运维领域的应用,为行业输出自动化与智能化的运维能力。

DevOps语言 & 开发架构文化 & 方法腾讯云AI