嘉宾介绍
曾勇 阿里云 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 功能, 欢迎开通使用.
点击了解更多产品信息
来源: https://yq.aliyun.com/articles/413602