嘉宾介绍
曾勇 阿里云MVP、Elastic开发工程师与布道师,在分布式搜索、高性能、高可用架构、自动化运维等方面积累了超过七年的经验。曾勇是Elasticsearch国内首批用户,自2010年起就开始接触Elasticsearch并投入到生产环境中使用,并编写过一系列的中文处理相关的插件。
智能运维从概念走向应用
人工智能是当前很火热的话题,无AI不科技。在运维领域如何同人工智能结合,业界也正在不断探索。理想的世界里,运维工程师可以悠闲的喝咖啡,所有的运维工作都由机器帮忙搞定。这只存在与概念层面,实际上,落地的应用还需要较长的时间。如何落地,在哪些运维的点上可以尝试人工智能,这就是我们今天讨论的重点。
运维的痛点
运维在一个公司里面人不多,但是事情又特别杂,涉及到很多方面,包括最基本的IT运维,服务器的运维,公司内网等基础设施的监控,安全等。今天我们重点聊运维监控这块的。
海量且复杂数据的挑战
如今需要我们管理的设备数量多,数据类型复杂,比如各种应用软件、OA系统、ERP系统,网络硬件、服务器、交换机,也包括考勤机或者是摄像头等传感设备。特别是在现在万物互联的时代,物联网行业一些设备量非常非大,比如弱电设备也会产生很多很多的数据,甚至电表,每天会上报各种各样的数据。举一个电信行业的用户案例,他们正在做新一代的面向水电表的物联网,家里的每一个水表,每一天都会产生海量的数据,归集到一个区域或一个时间段内,数据规模是非常非常大的,几十亿上百亿的数据量。
设备运行状态预测
另一个关键是做到设备运行状态的监控,能够预测到设备的异常。保证正常的为你的企业,为你的客户在服务,这个是运维很关心的一个点。我们收集到设备状态数据之后,可以通过多维度的报表,直观的的了解到设备的运行信息。在ELK的体系里,我们使用Kibana来实现可视化和业务告警。当设备出现异常的时候,我们需要第一时间发现,比如服务器CPU占用飙升30%,或者说磁盘有问题了,可以迅速的从这些海量指标里面定位出来,并辅助我们判断和解决问题。
合理方案的选择
要解决上述问题,必须先考虑一些关键点。我简单列了一些关键字,如下图所示。
第一个,数据接入的问题。各种各样的数据源,通过各种各样的渠道,接进来之后,海量的数据,怎么处理,怎么有效的处理,怎么实时的处理。
第二个,数据处理和分析的问题。数据拉进来之后要去分析,怎么把这个数据利用起来,发现里面的问题。
第三个,系统稳定性的问题。系统需要监控起来,所有的东西需要找到里面存在的一些问题,不能说等你的服务器已经宕机了,我的业务都已经挂掉了,这个时候再去发现问题。
第四个,一些衍生的需求。如可视化、告警灯。比如说我怎么去更方便的可视化去分析。做数据探索,去海量的数据里面去找到你感兴趣的东西。
Elastisearch:海量数据的实时分析
当然刚刚说的这些痛点,Elastic都可以帮你去解决,Elasticsearch比较擅长海量数据处理和实时分析。
监控指标的收集
运维主要几个任务,首先就是监控指标的收集,数据从各个渠道收集起来。Elastic提供了多种收集工具,包括Metricbeat、Filebeat、Auditbeat、Logstash来收集应用软件、云环境、安全、网络等系统的日志数据。
监控数据的存储
目前大部分的数据收集任务用Elastic都可以帮你去解决。然后第二个是存储,存储这一块也不想说太多,Elasticsearch目前在业界TB级别的一点问题没有,很多客户都是每天有海量的数据接进来,每天几百万,几千万都可以支撑,数据规模也相应的会去做一些扩容,这个是支持的。看一下告警,告警这个说实话,我们得到分析的结果之后我们可以去通知,这个说实话也很好做,我们自己也有一个高级引擎,后面有嘉宾同学会进行介绍。
监控数据的分析
重点介绍监控数据的分析。通用的做法是,第一步数据拉过来,Kibana配置Dashboard,然后投影到电视屏幕上。这个可以称为运维的1.0。从最开始的人肉运维,到自动化运维,再到现在的智能运维。其目的就是高效运维,以最少的时间最快的速度去发现问题,可视化如果仅仅停留在看得到这个层面,其实没意义。
上图所示一台服务器的CPU指标,仅仅CPU本身就会收集到这么多指标,比如CPU的空闲时间、使用负载,但是收集起来你会发现很多,几千个指标,或者把它缩一下变几百个,CPU这么复杂了,加上其他的一些业务数据的指标,各种各样的网络设备数据,几万个都是一个保守的估计,但这只是一台服务器。如果你有很多台服务器,如果说把他们去怎么分析。你可能把所有的服务器放到一起做了一个Group,这样其实是有很多噪声的。或者做了一个平均、最大值最小值,但是你只要做到一个最大值最小值或者是平均,它里面就会丢失一部分数据。设想,一平均之后,中间如果有异常数据就发现不了。看到一个整体趋势是可以的,但是某一台服务器就是有问题,发现不了的。
再举硬盘的例子,从指标里面可以反应出来硬盘性能的衰退,但常规指标粗线条是很难发现会有问题的,如果能分析到某一台服务器的,某一个硬盘的,某一堆硬盘里面的某一个硬盘它的健康状况什么样子的,那你就可以知道非常细腻度的监控,当它出问题的时间你可以第一时间发现它,可能还没有出现问题,但是快出问题了,把它找到,然后及时处理,这样的话可以第一时间把这个问降低到最低。接下来,说一下Elastic如何使用机器学习来帮助做运维检测。
Elastic中的机器学习
首先我们看一下监控数据吧,主要分为三大类,第一个就是日志loging,服务器里面,产生一个行为就会记录一条日志。第二类,tracing info更偏向于应用的分析,可能跟更详细的一些调用这种东西。第三个是指标信息,服务器的CPU、负载、百分比、占有情况等等这是第三类。他们都有一个共同点,都具有实时性。
实时性数据顾名思义,都是跟时间相关的,可以看到里面可以放在一个时间轴上面的。首先可以看到它是有规律的,随着时间的变化它是有一些前后的一个关联性的。基于时间的数据可以做预测,服务器指标以前的一个工作情况什么样子的,可以预测它明天,应该是一个什么样的工作情况,今后一段时间如果没有出什么问题的情况下,它应该就是怎么工作,它的指标应该是这么表现。
我们可以做一个关联,我们可以看到这是一个指标,表示每分钟的一个请求数,下面是另外一个指标,一个网站的一个状态码,可以看到,这个是两个指标,他们都是在一个时间轴上面,当某一个地方出问题的时候,比如说这个状态突然说以前都是200,上面是500了,是有问题了,这个时候我们发现另外一个指标也有关联性的一个改变,比如说KPS突然变这么高,他们就是有关联性的,可能是服务器突然被人大量并发的高峰期访问,或者说是恶意攻击,从而影响其他业务,是有一些关联性的,这是实时性的另外一个特点。
当然实时性的数据如果不做一些处理,数据的力度很细,比如每秒钟收集一条,10秒钟收集一条,数据量非常大,需要做一些组合可以看到到这个锯齿非常非常的频繁。然后做一些按时间,比如说15分钟做一组,把他们做一些预加工,做预聚合,它的曲线就会变得更加平滑,可以更好的去分析,这个是Bucket选择。然后我们可以看到三个不同的Bucket的一个分布选择,这是第一个是没有做任何的一个处理的,你看到原始数据非常非常密,基本上是看不出任何问题的,这个其实我们目前分析的方式也基本上是这样,一个图出来,各种线条都在一起,很密,我就知道它这里面都是比较平的一条曲线,没什么问题,看到起来很好。然后我再把它做一些组合之后会发现,其实里面有一个比较规律的一个波动的,然后在进一步做合并之后,再放大,曲线时间再放大会发现他们更加明显,可以看到这个时间点它的锯齿变化更加的不一样。这里面其实可能是存在潜在的一个异常,所以经过调整之后其实就可以发现里面存在的一些问题。第一个就是一个比较粗线条的一个分析,大家正在做的一个,大部分公司都是这种方式。
对实时性数据做Bucket是一种方式,再看看Elastic使用无监督学习怎么去做。它可以帮你去学习你的某一个指标,历史的一个行为是什么样子的,比如说服务器的CPU指标,过去是怎么工作的,可能就是这么一个行为,它可以自动帮你去学习,自动帮你去构建这么一个模型,但某一天这个行为出现变化的时候可以识别出来,然后自动告诉你这个时间点这个数据是不对的,你可以去有这么一个警告,发现这个地方可能会出现问题,做进一步的处理,这个就是我们的Elastic机器它可以帮你做的事情。
把序列化的指标特征化,模型化,可以让它24小时的在后台帮你去检测,服务器的每一个指标。当指标有几百上千万个指标,当有很多台服务器,每一个服务器的行为又是不一样的,可以把它理解为每一个服务器是独立的个体,它的服务器的性能不一样,就算是同一批机器它的性能都是不一样,它的磁盘也是不一样,磁盘的生产时间也不一样,只要是生产时间有一点点变化,最终的质量都不一样,生命周期也就不一样,所以说以他们每一个系列为单位,分别去检测他们的一个运行的指标,然后去看,是不是正常,当不正常的时候可以第一时间帮你告警,这是自动的,机器可以帮你去做这种它擅长做的事情,这就是我们可以利用机器学习帮你去解放你的运维。下面是几个Demo的截图。(在线Demo即将上线,敬请期待!)
阿里云MVP介绍
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖。点击了解更多产品信息
阿里云 MVP Meetup 第5期活动视频回顾。点击观看
加入钉钉技术讨论群
阿里云Elasticsearch已正式发布啦,Elastic开源官方联合开发,集成5.5商业版本XPack功能,欢迎开通使用。
点击了解更多产品信息