红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

华为云 AIOps 实践全面解析

  • 2018-08-30
  • 本文字数:3178 字

    阅读完需:约 10 分钟

在如今的云计算时代,计算的云化和分布式应用给运维工作带来了很大的挑战,让人海战术在运维面前失灵,所以基于算法和机器学习的智能运维(AIOps) 必将是业务运维场景下的大势所趋。业界有个说法,公有云最后的竞争是基于运维能力的综合竞争。现在各大公有云服务商也都在积极探索 AIOps,此次我们采访了华为云应用运维域专家,为我们揭秘华为云的智能运维实践。

华为云的运维技术演进

华为云很早就在实践智能运维了,包括最早的 IaaS 运维,以及近几年的 PaaS 运维、服务洞察。只是之前的叫法不是现在谈论的“智能运维”,而是智能监控、应用分析、智能分析、自动诊断与调优、自动化运维等,华为云的 AIOps 在 SRE 和云服务中都有应用和实践。

前几年,华为云主要聚焦在企业云、私有云、混合云等建设,运维能力建设围绕数据中心,在统一运维架构、运维研发化的基础上,重点发展运维的标准化、自动化和智能化。

2017 年华为 Cloud BU 成立,正式进入公有云市场。在这个阶段,SRE 在统一运维架构基础上,整合了各种运维工具,形成了公有云管理面的统一运维。与此同时 APM、AOM、CES 等云服务直接面向云租户提供应用运维能力。

华为云专家认为,传统运维和 AIOps 是紧密联系的,在数据分析层面二者也有些重叠区域,并且 AIOps 也依赖传统运维的数据基础、计算处理等。二者之间的区别主要体现在数据规模和实时性上。当云实体的规模扩大、应用栈的多样化、应用架构的容器化、微服务化后,运维对用户体验管理和业务高可用性越来越不可知性。而云服务对监测的实时性、反馈控制的及时性、故障预测、故障自愈等要求也是 AIOps 所擅长的。

如何使用 AI 利器

在华为云专家看来,针对不同的产品或者项目,构建 AIOps 所依赖的关键技术有所不同,比如企业资源故障预测项目与公有云上的应用性能监测服务就有比较大的区别。以广义的 APM 为 IT 运维的范围,一般涉及到以下关键点:

  • 监测对象的完整建模:各层物理实体、虚拟实体与应用服务的映射关系;
  • 监测数据的采集与预处理:比如元数据是否完备,海量数据的高效访问与扩展等;
  • 子领域的算法选择:合理划分出问题域的边界,结合领域知识筛选或设计出合适的算法,并予与验证。

在华为云的实践中,AI 技术主要应用在以下几个方面:

  • 预测的智能化
  • 诊断的智能化
  • 自愈的智能化
  • Agent 的智能化

上面几个方面涵盖了运维闭环模型:监测感知 – 分析洞察 – 优化控制。

以传统运维中最常见的挑战——告警风暴——为例,静态阈值、多段式组合阈值、基线化阈值等基于统计计算的方法都难以满足应用运维的要求了。另一方面,云化后的应用所涉及计算节点,服务 endpoint、指标等更多,不可能完全依靠人工来设置。这时候基于动态阈值或时序数据行为模式分析的 AI 方法就派上用场了。

所以 AI 技术首先适合用于复杂的场景中,尤其是各种可能组合数量远远超越了人力所能企及的范围,还比如复合因素下的趋势预测(磁盘寿命、性能指标、容量)、故障定界定位、根因分析等。

其次 AI 技术在一些时效性要求高的场景中得到应用,比如基于指标、日志、事件的告警。应用或者系统出现异常后,是需要第一时间通知到运维值守人员的。还比如云服务的弹性伸缩 (auto-scaling),是需要根据一些监测指标、服务模型、规则以及算法智能地及时做出适当调整动作。

除了中心化的 AI 技术应用外,数据采集端侧(Agent)的智能化也是一个重要发力领域,也包括 IoT 场景下的边缘节点(edge node)。在万物感知、万物互联、万物智能的趋势下,我们可以把训练好的模型发放到需要的 Agent 端。Agent 智能化可以解决端侧更高的响应实时性要求,减少数据上传的网络带宽消耗、存储成本、计算成本等。

下图是华为云面向租户的立体运维平台,实际上是一个基于应用运维生态的大解决方案。这种统一、开放的云运维平台可以支撑华为云的底座运维、上百种云服务的 SLA 保障和运维,帮助客户监测管理部署在华为公有云上的业务应用。

在运维工具和平台的构建过程中,华为云大量采用了开源项目,比如 ELK、调用链有关的 PinPoint、Zipkin、OpenTracing 等规范、StatsD 和 Prometheus 等数据接口规范、Spark、TensorFlow、MXNet 等。

数据的收集与处理

大数据是 AI 的黑土地,前提是数据量要足够多。华为云针对运维目的,主要收集下面这些性能数据:

  • 指标数据 (metrics):既有 IaaS 层资源指标,也有 PaaS 层应用资源指标,客户所用云服务业务指标、客户业务自定义指标 (由客户根据自身需求主动上报)。
  • 日志数据 (logs):客户指定的业务和各种中间件的运行日志
  • 调用链数据 (traces):客户通过非侵入式方法获得的调用链数据,或者客户开发应用在代码中引入 SDK 或者直接上报的调用链数据。
  • 事件及告警 (events&alerts):客户应用主动上报的各种事件和直接告警信息,还有根据预定义规则产生的事件和告警。
  • 网络包数据 (packets):主要是虚拟网络、容器网络中面向应用的网络性能数据。

这些数据根据自身特点,选择不同的存储方式,比如 Cassandra、HDFS、ElasticSearch、GaussDB 等。具体处理主要包括:

  • 流式计算:主要用于指标、日志的告警,调用链分析;
  • 离线计算:特定时间周期内的聚合计算、关联分析、模型训练等;
  • 内存计算:为部分实时性要求高的算法所用。

区别于以前的运维,当前把很多指标数据中的一些维度属性和 IaaS、PaaS 层的基础信息结合起来形成面向应用的元数据集,和传统的 CMDB 有些类似,但粒度更细。其目的是为面向应用的数据分析提供各种可能的“关系网”。

AIOps 落地之难点

AIOps 面临的技术挑战主要有大量数据的获取、结合专业领域知识的算法验证、多种算法组合应用、新方法的探索以及服务化的工程化难度。

有了数据后,针对特定问题域去验证或者创新算法就需要领域专家和算法专家通力合作,找到合适的方法或者方法组合是很有挑战性的。华为云在弹性伸缩算法、事务黑盒分析、基于异常检测的智能告警和调用链洞察分析等方面采用机器学习进行了探索。

  • 面向应用 SLA 实现容器的弹性伸缩,除了支持指标预定义条件的 scaling 外,还研究实现了基于强化机器学习算法的 Auto-Scaling,为复杂的大规模应用提供了更智能选择。
  • 在利用网络包分析推导应用调用关系及性能的 BlackBox 分析领域,经过理论分析和原型推导验证,华为云尝试过很多创新,最后利用 Hierarchical Clustering 实现了服务间的因果路径推导,准确率基本达到了 90~95% 以上。分析结果以传统应用拓扑数据格式输出,展示效果近似于 Whitebox 方法得到的应用拓扑,可以感知整个应用的性能态势和识别性能瓶颈,对一些拥有 legacy IT 资产的客户监测需求特别适用。
  • 调用链是云上应用性能诊断的重要一环。从调用链中先解析 feature,利用聚类方法发现模式,针对每类事务做分钟级聚合,结合移位环算法实现 10 分钟的统计聚合,最后实现对事务的“好”与“坏”的智能判断。Dashboard 上采用 heat map 和 histogram 形式予以展示和引导,提供与人友好的应用性能直观洞察能力。

AIOps:让 AI 成为得力的助手

尽管在一些子领域或者单点技术上 AIOps 获得了一些进展,运维域 AIOps 还有很大的空间有待发展,离真正做到无人值守、NoOps 还有很大的现实差距。比如复杂大系统中智能 RCA 分析、可信自愈能力、面向机器理解的无监督学习、智能化下沉到端侧等都有待业界共同努力。

华为云专家认为,IT 运维是个很大的范畴,完全不用人工运维,即无人值守只会存在某些特定的小场景下。而从整个系统来看,一定需要人来做更高阶的工作,参与者也不会只限于操作者或者管理员,还会涉及 DevOps、业务主管等。这是一个融合的世界,真正的有机系统,非黑即白的界线会越来越模糊,未来世界也一定是人主导,而不会是机器主宰的。在应用运维领域,人不会被 AI 简单取代,而是利用 AI 辅助人类做那些自己不擅长或者不愿意做的事情。

感谢张婵对本文的策划和审校。

2018-08-30 18:203273
用户头像

发布了 37 篇内容, 共 80630 次阅读, 收获喜欢 34 次。

关注

评论

发布
暂无评论
发现更多内容

Ubuntu 20.04上安装和配置MySql5.7

渔戈

ubuntu 开发工具 10月月更

Linux基础命令

渔戈

Linux ubuntu 10月月更

苏州太仓| 第六届“创赢太仓”全球创业大赛博士后专场项目征集公告

科兴未来News

生物医药 双创大赛承办 苏州 医疗器械 博士后

学习线程池原理从手写一个线程池开始

JAVA旭阳

Java 线程池 10月月更

“程”风破浪的开发者|走近 testflight 上架

No Silver Bullet

学习方法 10月月更 “程”风破浪的开发者 testflight iOS上架

Docker | Compose创建mysql容器

甜点cc

MySQL Docker 10月月更

spring整合mybatis、springMVC(总结)

Studying_swz

spring 10月月更

Pycharm配置远程解释器并自动上传代码

渔戈

pycharm 开发工具 10月月更

【一Go到底】第二十二天---函数参数传递方式、变量作用域

指剑

Go golang 10月月更

python爬虫--网络歌曲

木偶

Python 爬虫 10月月更

Vue组件入门(十二)具名插槽

Augus

Vue 10月月更

Spring Boot概述(一)

Studying_swz

10月月更

node.js

急需上岸的小谢

10月月更

在平面国生活,会是怎样的体验?

脑极体

人工智能

可靠消息最终一致性分布式事务

C++后台开发

数据库 分布式 后端开发 linux开发 C++开发

Go语言入门—05数组

良猿

Go golang 后端 10月月更

正则表达式入门与进阶

Studying_swz

正则表达式 10月月更

Spring Boot「11」查看所有托管的 Bean

Samson

Java spring 学习笔记 spring-boot 10月月更

Flex布局教程:语法篇

木偶

css3 前端 10月月更

ScheduledThreadPoolExecutor踩过最痛的坑

JAVA旭阳

Java 线程池 10月月更

科兴未来-江苏盐城|第六届绿巢环保创业大赛火热启动

科兴未来News

新能源 双创 低碳环保

程”风破浪的开发者|说说我的学习方法

来碗老郭

学习方法 “程”风破浪的开发者

Docker | 网络及原理探究

甜点cc

Docker 运维 10月月更

【kubernetes技术专题】Kubernetes架构分析介绍篇(进阶篇)

洛神灬殇

Kubernetes 10月月更

【Java深入学习】一个经典问题-消费者和生产者问题-下

Geek_65222d

10月月更

消息中间件:概念&应用

agnostic

消息中间件

Linux 驱动开发:USB无线wifi驱动开发(MT7601)、完成WIFI管理工具安装

DS小龙哥

10月月更

spring事务失效的情况

急需上岸的小谢

10月月更

一文全貌了解线程池的正确使用姿势

JAVA旭阳

Java 线程池 10月月更

日志的艺术

俞凡

架构

Excel 文件的读取

攻城狮Wayne

学习方法 Python Monad Excel数据分析

华为云AIOps实践全面解析_DevOps & 平台工程_华为云_InfoQ精选文章