从科研角度谈,基于机器学习的智能运维
分类:网络运维

从科研角度谈“如何实现基于机器学习的智能运维”,科研

      清华大学计算机系副教授 裴丹于运维自动化专场发表了题为《基于机器学习的智能运维》的演讲,现场分享了基于机器学习的智能运维目前面临的挑战和解决思路。以下为演讲实录,今天大概内容包括智能运维背景介绍、如何从基于规则上升到基于学习

      首先会做一个背景的介绍;为什么清华大学的老师做的科研跟运维有那么多关系?智能运维现在已经有一个很清晰的趋势,从基于规则的智能运维自动化逐渐转为基于机器学习了。再介绍几个跟百度的运维部门搜索部门进行合作的案例;最后,还要讲一下挑战与思路。

一、智能运维背景介绍

      谈一下参加这次大会的感受,昨天各位讲师们的报告,特别是今天早上几位讲师的报告特别精彩,讲到了在生产一线过程中遇到的各种挑战以及大家的实践和经验,我们又加了运维的群,对于像我这样在科研领域做运维相关科研的工作者来说,感觉找到了组织。

      介绍一下我的经验,特别是跟海峰老师开场的时候,讲的一个概念是相关的。海峰老师提到说我们做运维很苦,正好我大概在去年这个时候,我在百度的运维部门,讲了一下做运维如何做得更高大上一些,我的题目叫做《我的运维之路》。我们先简单看一下,我个人学术上的官方简历。

      我读了博士,然后在AT&T研究院实习,AT&T研究院前身是贝尔实验室的一部分,这里面大概有200个博士,有C发明者、防火墙之父,当然我其实没有怎么见到过他们,但是办公室是在一起的。之后在里面做了大概6年时间,发了不少论文,得了一些奖,发表了23项运维相关的专利。然后回清华做了不少科研,这是我的官方简历。

      实际上我在做什么事情?我就是一个运维人员。在一个30万人的大公司里面做运维,当然主要是通过大数据分析的方法。我读博期间跟美国各种运维人员打交道了五年;在实习过程中,喜欢上了分析实际的运维数据;真正在那边工作的时候,基本上就是一个第五级的运维,做的事情是基于大数据技术管理网络和应用的性能,各种网络协议、IPTV、Video等等。

      回到清华做科研的时候,开设的也是网络性能管理/应用性能管理相关的课程,所有的科研都是跟运维相关的,在国内有一些合作者,包括百度的运维部门、搜索部门以及中石油数据中心等等。我可以认为自己是一个运维人员,很高兴在这里跟大家分享我们之前的一些经验。

      为什么说运维是可以做得很高大上的事情?这是一个会议叫SIGCOMM,网络里面最顶级的会议,如果计算机网络的事情是像电影一样,这就是奥斯卡,每年大概录用三四十篇论文,录用一篇,就跟中彩票一样。我们看它的Submission,就是这么多,跟我们运维相关的占了40%。

      再看评委会,我只列出了AT&T研究院里面的前实习人员和前员工的一些同事们,基本上现在都到大学里当教授了。所以说运维苦不苦,是不是可以做得更高大上一些,取决于怎么做。

      数据分析机器学习,这是很好的路线。再看评委会,我只列出了AT&T研究院里面的前实习人员和前员工的一些同事们,基本上现在都到大学里当教授了。所以说运维苦不苦,是不是可以做得更高大上一些,取决于怎么做。数据分析、机器学习,这是很好的路线。

      不光是最顶级的会议,我们还有一个专门做运维相关的会议。这个会议,就是这拨人里面,觉得SIGCOMM这个会一年30多篇,实在是收得太少了,我们再开一个会议,全部都是运维相关的,这是一个顶级的会议,是我科研领域一个主要的战场之一。

      铺垫一下,就是说运维是有很多可以钻研的地方,有很多科研问题。

      简单介绍一下我在清华大学的实验室,叫NetMan。我的网络管理实验室做的科研,基本上都是跟NPMAPM运维相关的。我们跟互联网公司做一些合作,主要做运维相关的自动化工作,跟SmoothAPP相关的运维工作,跟清华校园网WiFi做一些网络性能优化的工作。我们做了一个核心的基于云的运维算法平台,具体这些运维的应用,下面都有一个核心的算法,再下面还有一个大数据分析的平台,就是常用的各种开源工具。

      前面所讲的是背景部分。我想要表达的一点,工业界、学术界应该在运维领域里面能够密切合作,各取所需。工业界有很多实际问题,有很多的经验,也有实际的数据,学术界老师们有时间有算法有学生,大家一起结合,这样就会产生很好的效果。

      值得各位运维界同仁们关注的就是学术界的顶级会议,我比较推荐的是上面图中的这些会议,这些会基本上一年三五十篇论文的样子,简单浏览一下,跟大家做得工作是不是相关,浏览一下最新的会议论文集,看看有没有相关的,还是很有帮助的。美国的工业界,像谷歌Facebook都已经在这些会议上发表过一些论文,包括他们在工程上的一些实践。

二、从基于规则到基于学习

      简单介绍一下智能运维大概的历程,基于规则到基于机器学习

      我简单回顾一下,我们这个趋势,不光是说我们这个领域的趋势,整个人工智能领域发展的趋势。人工智能也是经历了起起伏伏,最近又非常火。基本历程,就是从基于专家库规则到逐渐变成机器学习,再到深度学习。

      我讲一下几年前基于专家库规则到机器学习的经历。

      我们在做降维分析的时候,需要一个规则集,什么事件导致另外一个事件,再导致额外顶级的事件,最后倒推回来,什么导致了这个事情。我们当时针对骨干网做的各种事件的关联分析,基本上是基于规则的。当时CDN的性能事件,这个事件导致这个事件,单独对它进行分析,如果这个事件发生,可以通过监测到的各种事件一直推到这儿。当时做出来的时候,起到了很好的效果,发表了论文,审稿评价也很高,也有专利,现在还在非常常规地使用,并且用得很好,效果很好。

      但是这里面有个问题,规则是由运维人员给出来的,为什么能够运行的很好?因为在网络骨干网上面情况不是那么复杂,网络协议一层接一层,事件比较少,所以比较容易把规则弄出来。

      我们跟百度进行合作的时候,发现不是那么好做。因为在互联网公司里面,大家都在讲微服务,模块特别多,规模很大,百度这边一百多个产品线,上万个微服务模块,上万台机器,每天上万个软件更新,想通过人把这些规则表达出来,运行到你的系统里,根本就不行,我们试了一下,很快就碰壁了。

      最后怎么办?我们采用了基于机器学习,把这些规则挖出来。我们在做的过程中不断总结,不断遇到新的问题,实现了基于规则的智能运维过渡到基于机器学习。

      机器学习本身已经有很多年了,有很多成熟的算法。要想把机器学习的应用做成功,要有数据,有标注数据,还要有工具(算法和系统),还要有应用。对于我们运维领域来说,这几点到底是怎么做的?

      第一点,是数据。互联网的应用天然就有海量日志作为特征数据,想各种办法做优化存储。在运行过程中遇到数据不够用还能按需自主生成,这是很好的。

      第二点,是过程反馈。在运维日常工作中还会产生各种标注数据,比如说工单系统,发生一次运维事件之后,具体负责诊断的人员会记录下过程,这个过程会被反馈到系统里面,我们可以从里面学到东西,反过来提升运维水平。

      第三点,就是应用。做出来的系统,我们运维人员就是用户,我们可以设计、部署、使用、并受益于智能运维系统,形成有效闭环。建模、测量、分析、决策、控制,很容易形成一个闭环。我们能够形成闭环,因为我们有这样的优势。

      总结一下,基于机器学习的智能运维具有得天独厚的基础,互联网应用天然有海量日志作为特征数据,运维日常工作本身就是产生标注数据的来源,拥有大量成熟的机器学习算法和开源系统,可以直接用于改善我们的应用,所以我个人有一个预测,智能运维在今后若干年会有飞速的发展(待续)。

      蓦然回首,自开号以来,本号已经创作430+篇文章,自媒体的红海时代已经全然来临(死伤无数),随着百家号、今日头条等知名媒体把推广重点放在娱乐八卦、人体艺术和小视频上之后,技术号生存空间变得更小。本号之所以一直坚持创作,其源动力基本来自几万粉丝精神的支持,如果觉得文章对大家有用,请大家不吝动动手指分享给更多读者(源动力)。也不知道什么时候会停笔,但不到万不得已相信会坚持写下去。

      利用周末时间(一般都是周末),对“Ceph技术架构、生态和特性详细对比分析”进行了第二版刷新,刷新内容包含Ceph架构,故障机制、后端对象存储演进、Ceph跟Glustre FS和华为分布式OceanStor 9000产品对比分析。感兴趣的读者可通过原文链接查看详情。

>>>推荐阅读

  • 从高性能计算(HPC)技术演变解析方案、生态和行业发展趋势

  • 存储性能瓶颈的背后,这篇文章带来的参考价值

  • 分布式、多活数据中心如何实现DNS域名解析和负载均衡

  • 传统企业存储厮杀过后,昨天的战场留下什么值得回忆

温馨提示:
请搜索“ICT_Architect”或“扫一扫”下面二维码关注公众号,获取更多精彩内容。

听说点赞和分享的朋友都已走上人生巅峰了

中国应用性能管理行业盛宴——2016中国应用性能管理大会(简称APMCon 2016)于8月18日至19日在北京新云南皇冠假日酒店隆重召开。APMCon由听云、极客邦和InfoQ联合主办的作为国内APM领域最具影响力的技术大会,首次举办的APMCon以“驱动应用架构优化与创新”为主题,致力于推动APM在国内的成长与发展。

清华大学计算机系副教授 裴丹于运维自动化专场发表了题为《基于机器学习的智能运维》的演讲,现场分享了基于机器学习的智能运维目前面临的挑战和解决思路。

以下为演讲实录:

我今天分享的题目是《基于机器学习的智能运维》,下面是今天这个报告的大概内容:

首先会做一个背景的介绍;为什么清华大学的老师做的科研跟运维有那么多关系?智能运维现在已经有一个很清晰的趋势,从基于规则的智能运维自动化逐渐转为基于机器学习了;再介绍几个跟百度的运维部门、搜索部门进行合作的案例;最后,还要讲一下挑战与思路。

一、背景介绍

谈一下参加这次大会的感受,昨天各位讲师们的报告,特别是今天早上几位讲师的报告特别精彩,讲到了在生产一线过程中遇到的各种挑战以及大家的实践和经验,我们又加了运维的群,对于像我这样在科研领域做运维相关科研的工作者来说,感觉找到了组织。介绍一下我的经验,特别是跟海峰老师开场的时候,讲的一个概念是相关的。海峰老师提到说我们做运维很苦,正好我大概在去年这个时候,我在百度的运维部门,讲了一下做运维如何做得更高大上一些,我的题目叫做《我的运维之路》。我们先简单看一下,我个人学术上的官方简历。

我读了博士,然后在AT&T研究院实习,AT&T研究院前身是贝尔实验室的一部分,这里面大概有200个博士,有C++发明者、防火墙之父,当然我其实没有怎么见到过他们,但是办公室是在一起的。之后在里面做了大概6年时间,发了不少论文,得了一些奖,发表了23项运维相关的专利。然后,回清华做了不少科研,这是我的官方简历。

实际上我在做什么事情?我就是一个运维人员。在一个30万人的大公司里面做运维,当然主要是通过大数据分析的方法。我读博期间跟美国各种运维人员打交道了五年;在实习过程中,喜欢上了分析实际的运维数据;真正在那边工作的时候,基本上就是一个第五级的运维,做的事情是基于大数据技术管理网络和应用的性能,各种网络协议、IPTV、Video等等;回到清华做科研的时候,开设的也是网络性能管理/应用性能管理相关的课程,所有的科研都是跟运维相关的,在国内有一些合作者,包括百度的运维部门、搜索部门以及中石油数据中心等等。我可以认为自己是一个运维人员,很高兴在这里跟大家分享我们之前的一些经验。

为什么说运维是可以做得很高大上的事情?这是一个会议叫SIGCOMM,网络里面最顶级的会议,如果计算机网络的事情是像电影一样,这就是奥斯卡,每年大概录用三四十篇论文,录用一篇,就跟中彩票一样。我们看它的submission,就是这么多,跟我们运维相关的占了40%。

再看评委会,我只列出了AT&T研究院里面的前实习人员和前员工的一些同事们,基本上现在都到大学里当教授了。所以说运维苦不苦,是不是可以做得更高大上一些,取决于怎么做。数据分析、机器学习,这是很好的路线。再看评委会,我只列出了AT&T研究院里面的前实习人员和前员工的一些同事们,基本上现在都到大学里当教授了。所以说运维苦不苦,是不是可以做得更高大上一些,取决于怎么做。数据分析、机器学习,这是很好的路线。

不光是最顶级的会议,我们还有一个专门做运维相关的会议。这个会议,就是这拨人里面,觉得SIGCOMM这个会一年30多篇,实在是收得太少了,我们再开一个会议,全部都是运维相关的,这是一个顶级的会议,是我科研领域一个主要的战场之一。

铺垫一下,就是说运维是有很多可以钻研的地方,有很多科研问题。

简单介绍一下我在清华大学的实验室,叫NetMan。我的网络管理实验室做的科研,基本上都是跟NPM、APM运维相关的。我们跟互联网公司做一些合作,主要做运维相关的自动化工作,跟SmoothAPP相关的运维工作,跟清华校园网WiFi做一些网络性能优化的工作。我们做了一个核心的基于云的运维算法平台,具体这些运维的应用,下面都有一个核心的算法,再下面还有一个大数据分析的平台,就是常用的各种开源工具。

前面所讲的是背景部分。我想要表达的一点,工业界、学术界应该在运维领域里面能够密切合作,各取所需。工业界有很多实际问题,有很多的经验,也有实际的数据,学术界老师们有时间,有算法,有学生,大家一起结合,这样就会产生很好的效果。

值得各位运维界同仁们关注的就是学术界的顶级会议,我比较推荐的是上面图中的这些会议,这些会基本上一年三五十篇论文的样子,简单浏览一下,跟大家做得工作是不是相关,浏览一下最新的会议论文集,看看有没有相关的,还是很有帮助的。美国的工业界,像谷歌、Facebook都已经在这些会议上发表过一些论文,包括他们在工程上的一些实践。

二、智能运维:从基于规则到基于学习

简单介绍一下智能运维大概的历程,基于规则到基于机器学习。我简单回顾一下,我们这个趋势,不光是说我们这个领域的趋势,整个人工智能领域发展的趋势。人工智能也是经历了起起伏伏,最近又非常火。基本历程,就是从基于专家库规则到逐渐变成机器学习,再到深度学习。

我讲一下几年前基于专家库规则到机器学习的经历。我们在做降维分析的时候,需要一个规则集,什么事件导致另外一个事件,再导致额外顶级的事件,最后倒推回来,什么导致了这个事情。我们当时针对骨干网做的各种事件的关联分析,基本上是基于规则的。当时CDN的性能事件,这个事件导致这个事件,单独对它进行分析,如果这个事件发生,可以通过监测到的各种事件一直推到这儿。当时做出来的时候,起到了很好的效果,发表了论文,审稿评价也很高,也有专利,现在还在非常常规地使用,并且用得很好,效果很好。但是这里面有个问题,规则是由运维人员给出来的,为什么能够运行的很好?因为在网络骨干网上面情况不是那么复杂,网络协议一层接一层,事件比较少,所以比较容易把规则弄出来。

我们跟百度进行合作的时候,发现不是那么好做。因为在互联网公司里面,大家都在讲微服务,模块特别多,规模很大,百度这边一百多个产品线,上万个微服务模块,上万台机器,每天上万个软件更新,想通过人把这些规则表达出来,运行到你的系统里,根本就不行。我们试了一下,很快就碰壁了。最后怎么办?我们采用了基于机器学习,把这些规则挖出来。我们在做的过程中不断总结,不断遇到新的问题,实现了基于规则的智能运维过渡到基于机器学习。

机器学习本身已经有很多年了,有很多成熟的算法。要想把机器学习的应用做成功,要有数据,有标注数据,还要有工具(算法和系统),还要有应用。

对于我们运维领域来说,这几点到底是怎么做的?

第一点是数据,互联网的应用天然就有海量日志作为特征数据,想各种办法做优化存储。在运行过程中遇到数据不够用还能按需自主生成,这是很好的。

第二点,在运维日常工作中还会产生各种标注数据,比如说工单系统,发生一次运维事件之后,具体负责诊断的人员会记录下过程,这个过程会被反馈到系统里面,我们可以从里面学到东西,反过来提升运维水平。

第三点就是应用,做出来的系统,我们运维人员就是用户,我们可以设计、部署、使用、并受益于智能运维系统,形成有效闭环。建模、测量、分析、决策、控制,很容易形成一个闭环。我们能够形成闭环,因为我们有这样的优势。

总结一下,基于机器学习的智能运维具有得天独厚的基础,互联网应用天然有海量日志作为特征数据,运维日常工作本身就是产生标注数据的来源,拥有大量成熟的机器学习算法和开源系统,可以直接用于改善我们的应用,所以我个人有一个预测,智能运维在今后若干年会有飞速的发展。

三、百度案例

下面讲一下实际的案例,这边有三个案例:

第一个场景,横轴是时间,纵轴是百度的搜索流量,大概是一天几亿条的级别,随着时间的变化,每天早上到中午上升,到下午到晚上下去,我们要在这个曲线里面找到它的异常点,要在这样一个本身就在变化的曲线里面,能够自动化的找到它的坑,并且进行告警。那么多算法,如何挑选算法?如何把阈值自动设出来?这是第一个场景。

第二个场景,我们要秒级。对于搜索引擎来说,就是要1秒的指标,这个时候有30%超过1秒,我们的目标是要降到20%及以下,如何找到具体的优化方法把它降下来?我们有很多优化工具,但是不知道到底用哪个,因为数据太复杂了,这是第二个应用场景。

第三个场景,自动关联KPI异常与版本上线。上线的过程中,随时都有可能发生问题,发生问题的时候,如何迅速判断出来是你这次上线导致发生的问题?有可能是你上线导致的,也有可能不是,那么多因素,刚才说了几十万台机器,你怎么判断出来?这是百度实际搜索广告的收入,我们看到有一个上线事件,收入在上线之后掉下来了。

下面这个是我们一个学生在百度实习的时候做出来的一个方案,基于机器学习的KPI自动化异常检测。

横轴是时间,纵轴是流量,要找到异常。我们要迅速识别出来,并且准确识别出来,帮助我们迅速进行诊断和修复,进一步阻止潜在风险。

我们学术界,包括其他的领域,包括股票市场,已经研究几十年了,如何根据持续的曲线预测到下一个值是多少?有很多算法。我们的运维人员,就是我们的领域专家,会对自己检测的KPI进行负责,但是我们有海量的数据,这KPI又是千变万化各种各样的,三个曲线就很不一样,如何在这些具体的KPI曲线里取得良好的匹配?这是非常难的一件事情。

我们看看为什么是这样的?有一个运维人员负责检测这样的曲线,假如说要试用一下算法,学术界的常规算法,要跟算法开发人员进行一些描述。算法开发人员说,你看我这儿有三个参数,把你的异常按照我的三个参数描述一下,运维人员肯定不干这个事情。开发人员还不了解KPI的专业知识,就想差不多做一做吧,做完了之后说你看看效果怎么样?往往效果差强人意,再来迭代一下,可能几个月就过去了。

运维人员难以事先给出准确、量化的异常定义;对于开发人员来说,选择和综合不同的检测器需要很多人力;检测器算法复杂,参数调节不直观,这些都是存在的问题。

所以我们方法的主要思想是,做一个机器学习的工具。我们跟着运维人员学,做一个案例学一个,把他的知识学下来,不需要挑具体的检测算法,把这个事情做出来,根据历史的数据以及它的异常学到这个东西。

运维人员需要做什么事情?我看着这些KPI的曲线,这段是异常,标注出来,就有了标注数据。本身就是有特征数据的,提供一下,说你这个小徒弟,你要想把它做好,我有一个要求,准确率要超过80%,小徒弟就拼命的跟师傅学。

具体做的时候,比如说KPI的具体曲线,假如说这里有一个异常点,我们把能拿到的理论界上,学术界上的各种算法都已经实现了,它还有各种参数,把参数空间扫一遍,大概100多种,用集体的智慧把KPI到底是不是异常,通过跟运维人员去学,把这个学出来。为什么能够工作?就是因为它的基本工作原理,就是我会学历史信息,学到了之后生成一些信号,对于同样的异常会有预测值,红色是检测出来的信号。检测出来的信号略有不同,但是我们觉得集体的智慧,能够最后给出一个非常好的效果,这就是一个基本的思路。

如何把它转化成机器学习的问题?我们有特征数据、有标注,想要的就是它是异常还是非异常,就是一个简单的监督机器学习分类的问题。运维人员进行标注,产生各种特征数据,这就是刚才100多种检测器给出的特征数据,然后进行分类,效果还是比较理想的。

但是,还是有很多实际的挑战,我们简单提一个挑战。第一个挑战,我们运维人员需要标注,我得花多长时间去标注?在实际运维过程中,那些真正的异常并没有那么多,本身数量相对比较少。如果能做出一些比较高效的标记工具,是能够很好的帮助我们的。如果把这个标注工具像做一个互联网产品一样,做得非常好,能够节省标注人员很多的时间。我们做了很多工作,鼠标加键盘,浏览同比、环比的数据,上面有放大缩小,想标注一个数据,拿着鼠标拖一下就OK了。一个月里面的异常数据,最后由运维人员实际进行标注,大概一个月也就花五六分钟的时间,就搞定了。

还有很多其他的挑战,比如说历史数据中异常种类比较少,类别不均衡问题,还有冗余和无关特征等。

下面是一个整体的设计。

那么,拿实际运维的数据进行检测的时候效果怎么样呢?

这里拿了四组数据,三组是百度的,一组是清华校园网的。一般的操作,分别对这些数据配一组阈值。我们不管这个数据是什么样的,就是用一种算法把它搞定,就拿刚才给出的运维小徒弟这样的算法,把100多种其他的算法都跑了一遍,比较了一下,在四组数据里面,我们算法的准确率不是第一就是第二,而且我们的好处是不用调参数。超过我们这个算法,普通的可能要把100多种试一下,我们这个不用试,直接就出来。

为了让运维更高效,可以让告警工作更智能,无需人工选择繁杂的检测器,无需调参,把它做得像一个互联网产品一样好。这是第一个案例,关于智能告警的。理论上学术界有很多漂亮的算法,如何在实际中落地的问题,在这个过程中我们使用的是机器学习的方案。

我们看一下第二个案例,刚才说的秒级。先看一个概念,搜索响应时间:

搜索响应时间,这个就是首屏时间了。对于综合搜索来说,用户在浏览器上输入一个关键字,点一下按纽,直到首屏搜索结果返回来,当然这里面有一些过程。

这个为什么很重要?这就是钱。对于亚马逊来说,如果响应时间增加100毫秒,销量降低1%。对于谷歌来说,每增加100毫秒到400毫秒搜索,用户数就会下降0.2%到0.6%,所以非常重要。

看一下在实际中搜索响应时间是什么样的?

横轴是搜索响应时间,纵轴是CDF。70%的搜索响应时间是低于1秒,是符合要求的。30%的时间是高于1秒的,是不达标的。那怎么办呢?大于1秒的搜索原因到底是什么?如何改进?这里面也是一个机器学习的问题。各种日志非常多,答案就藏在日志里面,问题是如何拿到日志分析出来。我们看一下日志的形式:

对于用户每一次搜索,都有他来自于哪个运营商,浏览器内核是什么,返回结果里面图片有多少,返回结果有没有广告,后台负载如何等信息。这次响应,它的响应时间是多少,大于1秒就是不理想,小于1秒就是比较理想,我们有足够多的数据,一天上亿,还有标注,这个标注比较简单了。

本文由威尼斯手机娱乐官网发布于网络运维,转载请注明出处:从科研角度谈,基于机器学习的智能运维

上一篇:十分详细,阿里云服务器配置步骤 下一篇:没有了
猜你喜欢
热门排行
精彩图文