以下内容根据日志易创始人 & CEO 陈军在 WOT 全球人工智能技术峰会上的演讲整理而成,全文大约7000字,阅读时长10分钟。

大家好,今天我演讲的主题是《海量日志分析与智能运维》,演讲的内容主要包括以下三点:

1、智能日志中心介绍。这部分会简要介绍日志易开发的智能运维日志管理平台的相关信息;

2、围绕日志的 AIOps 场景与算法原理介绍。这部分是以关联分析等日志应用场景为切入点,讲解怎样使用机器学习或人工智能算法实现智能日志分析;

3、日志分析实践与案例。这里会介绍一些日志易基于日志进行智能运维的案例。

1智能日志中心介绍

1.1 AIOps 五等级

要说智能日志中心,首先要了解什么是智能运维。目前业界对智能运维的运用,主要分这么五个等级。

一级是最容易的,只要你有个想法试试就行,到网管监控系统里,拿一个监控指标的曲线下来,就可以尝试异常检测。一级还没有成熟的单点应用,当有了一个成熟的单点应用,就算是达到二级了。二级必须要有一定的基础设施建设作为前提。当单场景模块能够串联起来,形成流程化 AI 运维,也就达到了三级的层次。

目前业界基本上处于从一二级,往二三级努力的阶段,四、五级别的还比较远。

大家都知道,现在 AI 应用得最好、技术最成熟,能被广泛应用的基本上仅有两个模块——语音识别和人脸识别。语音及人脸识别能够快速得以发展,主要因为国内市场的需求,及国内大人口基数下广泛的数据资源。

运维领域数据较少,且信息比较碎片化,这使得 AIOps 发展缓慢。日志易五年前开始做日志分析的时候,主要也是得益于海量的日志数据,在机器学习及人工智能算法的应用下,得以实现智能日志分析。目前日志易智能日志中心处于 AIOps 五等级的二级到三级之间。

1.2 智能日志中心介绍

为了帮助大家实现更高级的 AIOps 能力。日志易打造了一个智能日志中心。

这是智能日志中心的全景架构图。

我们都知道,做 AI最重要的是数据。所以首先,我们要具备尽量多类型的数据采集、处理及分析能力。日志易支持 Linux、Windows、AIX、HPUX 等各种平台的数据采集,也能采集 ODBC、Syslog、APM的数据,甚至手机 App 埋点数据。然后配合一些 CMDB 数据,流程工单数据,非常方便地实现业务运维层面的关联分析。

在采集之后,我们有数十种 ETL 方法来对日志进行规范化处理。日志本身是非结构化的,而日志分析需要格式化的数据,ETL 做好了,后续的分析才容易展开。这个环节,会涉及到一些数据脱敏及业务日志串联,对于一些时间戳设计不合理的日志,日志易会自动对其进行补全,以便后续分析工作的展开。

在对数据进行搜索时,业界主流开源解决方案是 ES。然而,由于 ES 开源引擎是一个通用的搜索引擎,难以满足日志处理的一些特殊需求,且使用 Java 开发,内存消耗及性能上存在很大优化空间,在面临海量日志数据时,ES 往往显得力不从心。基于以上原因,日志易自己开发了比通用引擎快 5 倍以上的 Beaver 搜索引擎,保证了海量数据的实时存取。我们还有上百个 SPL 指令进行统计分析,有多种不同场景定制的 AI 算法。搜索引擎可以说是 AIOps 的大脑。

我们有日志易智能日志中心,也有基于日志开发的智能运维应用 Lynxee、大屏 Galaxee、数据工厂。安全审计、业务关联分析等解决方案,也是基于智能日志中心实现的。智能日志中心可以与大屏展示、告警推送、按需调用脚本执行、公开的数据 API 和第三方平台对接,这一部分可以说是 AIOps 的手。

以上这些合在一起,就是整个智能日志中心,我们也可以把它看作 AIOps 的中控(或者中台)。

日志易有上百种不同类型数据的采集分析方案,可以直接导入安装使用,如思科、F5、天融信等各种网络设备日志,Oracle、MySQL 等数据库日志,Nginx、Apache 等中间件日志等。这些内置数据采集分析方案,可以大大节省数据采集处理的时间。

我们在实践中发现,做一个运维数据中心,70% 以上的时间是在做数据采集和处理。真正处理好了以后的分析过程还是很快的。这和 AI 界说人工智能 80% 工作是数据清洗,是比较吻合的。

2围绕日志的AIOps场景与算法原理介绍

2.1 AIOps 场景

说到 AIOps 的场景,我们可以从成本、质量、效率三个方面做出规划。

以质量保障而言,以往的异常检测,需要运维工程师基于自己的经验做出判断和分析,我们要做的,是借助机器学习及人工智能算法来实现这一目的。故障的发生都是有先兆的,可能表现为延时逐渐增大,响应逐渐变慢等。我们可以基于这些先兆及历史数据做出模型,对即将发生的异常做出预判。

成本管理和效率提升要面临的情况更加复杂。成本管理面临成本优化、资源优化、容量规划、性能优化等复杂场景。效率提升涉及复杂度较高的智能变更、智能问答、智能决策、容量预测等,以双十一容量预测为例,要基于历史数据预估用户访问量,同时结合业务(如促销等活动带来的增量)等因素综合分析。纵然如此,预估也往往会和现实存在较大出入。

就目前的阶段,质量保障还是最关键、性价比最高的,是可以首先实现智能化的部分。我们的智能日志中心,目前主要关注的也是这个方向。

具体来说,在质量保障上,运维人员希望做到的,就是尽早告警、尽快定位、尽快修复。表现在“日志 + 算法“的 AIOps 实践上,就是三步:

1、快速发现故障:即基于多种算法进行异常预测;

2、问题归因定位:即通过日志模式洞察罕见报错信息;

3、辅助修复决策:即通过多方位展现系统状态加速决策。

2.2 AIOps 之快速发现故障

快速发现故障即尽快告警。

告警的本质,是告诉运维人员两件事情:第一,有问题了;第二,问题有多严重。

我们从日志直接产生告警,或者经过统计分析变成时序指标,再监控告警。最后,通过整合告警的优先级和重要程度,拟合出来一个服务的健康度,让用户对系统状态一目了然。

一般而言,监控系统会有两种告警:一种是匹配关键字,一种是采样指标的阈值对比。匹配关键字的严重性,就是匹配 warning、critical 等;阈值的严重性,就是定义多个阈值区间,比如 CPU 大于 80% 发中危告警、大于 120% 发高危告警。在智能日志中心,这两种告警都支持。

从日志、时序指标的监控告警,到服务健康度、故障定位,日志易有一整套监控流程,这是智能日志中心的重要组成部分,位于引擎的上层。告警这部分还是以质量保障和 AI 算法为主。

2.3 AIOps 之问题归因定位

下面先说说问题的定位。

2.3.1 指标异常检测

《 SRE:谷歌运维解密》是这几年很火的书了,里面有个概念值得推荐,就是所谓“黄金指标”。不管是主机设备层面,还是应用服务层面,或者集群、端到端等等,都可以从延迟、流量、错误和饱和度四个最关键的角度,来衡量它的健康状态。

在日志易中,我们可以通过 SPL 语句,快速从不同的日志数据,转换成为对应的指标数据。只需要更换红字这段过滤条件,就可以做到全面的指标数据覆盖。

既然有了指标数据,下一步要考虑的就是如何智能地检测指标,以便根据历史情况,智能地发现问题了。

因为指标的千差万别,很难有一种单一的普适算法。所以日志易针对不同场景需求,启用不同的算法。下面稍微介绍部分算法的原理。

CVAE 算法

第一个是 CVAE 算法,我们都知道 VAE 是深度学习里最常用的一种,一般你在网上搜这个算法解释,都是怎么做图像识别。

指标就是一个很简单的曲线,所以我们把曲线按照滑动窗口的形式,切割成一段一段的小曲线,合在一起,就成了一个特征矩阵了,然后进入多层的编码解码,反复迭代,得到最好的模型。

为了提高效果,在训练数据上,还可以主动添加一些噪声误差。

然后实际检测的时候,我们就把测试数据经过编解码得出来的最后一小段模拟曲线的分布,和实际数据作对比,是不是发生了严重偏离。因为模拟曲线是正态分布的,所以这个偏离就是 3sigma。

这个算法,很适合做强周期性的指标检测。一般来说,由大量人群行为产生的数据,比如业务访问量,就特别适合。

我们在这块还有一个创新:加强了时间特征上的处理。我们知道,人的行为肯定是有大小周期的,今天和昨天、本周一和上周一、每个月一号、每年春节、每年 618、双十一等,都是在算法上会重点加强学习的行为。

iForest 算法

第二个是 iForest 算法,这是一个专门用来做异常检测的随机森林算法变种。

它适合一些和时间没有强相关性的指标,比如主机的 CPU、内存等,数据本身离散度较大,没有什么规律,可能主要关心的就是它不要出现太明显的偏离。

这种指标比较多,要求算法检测速度够快。

KDE 算法

第三个是 KDE 算法,这个算法针对的是一类特殊的场景。我们知道,有些服务并不是 7x24 小时运行的。比如股票市场,每天 9 点开盘,15 点收盘。在闭市的时候,证券公司相关系统的业务指标完全是零。闭市和开市两个阶段,泾渭分明。普通算法在这两个跃迁的时刻几乎肯定是要误报的。

同理,还有很多理财之类的金融场景,在周末两天也是一个道理。

所以我们按照天的维度,对每天的每个时间点都选取它周围的若干个点,形成一个集合,进行核密度分析,然后一天的所有点合起来,得到最终的 KDE 模型。这个模型有点类似于在 3D 地图上,无数个正态分布堆在一起形成的山峦。那么检测的时候,对应时间过来的值,如果出现在平原地带,就是明显的异常了。

GRBT 算法

最后一个是 GRBT 算法,我们会同时提取时序数据的统计学特征,以及它的时间戳特征。它的用途场景与 KDE 和 iForest 相比,有更广泛的普适性,突变的和业务的都能用。

可以看到这个算法原理,和前面 iForest 比较像,因为都是决策树森林。不过 iForest 是每次部分抽样迭代,而 Boosting 是每次根据上一次迭代的结果来重新选取分界点。

但是这是一个有监督学习的算法,所以想用好,需要训练样本里有一定的异常点标注。

有这么多不同的算法针对不同的场景,运维人员根据实际的区别,选用不同的算法,就可以达到比较好的算法覆盖了。

我们后续也会继续研究指标数据的类型自动判断,尽量减少运维配置选取算法的工作量。

2.3.2 日志异常检测

除了指标的异常,还有就是日志的异常。

前面提到,最常见的日志告警就是关键字匹配。不过我们也知道,大多数系统的研发,不会把日志写的那么完美。

2016 年,中科院《软件学报》发过一篇国防科大的《大规模软件系统日志研究综述》,里面引用了不少国内外的调查分析。其中有几条数据蛮有趣的:

  • 日志代码的更新频率比其他代码要快约 1 倍;

  • 约四分之一的日志修改是把新的程序变量写入日志;

  • 约一半的日志修改是对日志消息静态文本的修改。

这些研究一般都是基于大型分布式项目,比如 Hadoop、OpenStack 等。企业内部的系统开发,应该情况会比这些著名的项目要严重的多。所以,大家输出日志的时候,很难做到完美规范。日志格式经常在变动……

所以,依赖关键字或者固定的某种正则表达式提取,在长期运行的场景下,是不足以做到日志异常检测的。这时就需要 AI 算法来帮忙。

层次聚类得到日志模式

我们这里的思路,是采用层次聚类。

先对日志进行最基础的分词和类型判断,然后聚类合并。聚类可以用最长子串,也可以用文本频率等等。聚类里,不同的部分就用通配符替换掉。最后类似这张示意图,把 8 条日志,先合并成 4 个日志格式,再合并成 2 个,最后合并成 1 个。

这就是一个树。在研究领域,我们一般把这种日志格式的树状结构,叫模式树。

当然我们实践的时候,不用真的算到最顶端,一般来说,模式数量收敛速度差不多了,或者模式里的通配符数量差不多了,就可以停下来了。

日志模式的用法

得到日志模式,具体怎么用呢?一般来说,有两种用法。

一种是故障定位的时候。比如我们查错误日志,单纯用关键词,可能出来几百上千条。你要一个一个看过去,翻好几页,耗时就比较长了。如果内容字很多,还可能看漏了。

使用模式树的信息,直接查看匹配关键字的日志的模式情况,可能就只有那么三五条信息,一眼就可以看完,很快就可以知道问题在哪,就可以进行下一步了。

另一个用途,就是把学习得到的模式,加载到日志采集的实时处理流程里,进行异常检测,提前发现问题。这时候,我们除了模式,还可以检测参数,检测占比。

左侧是一个最简单的示例,3 条日志,得到的模式是 * are <NUM>,然后我们同时可以检测符合这个模式的日志,第一位只能是 we 或 you,第三位只能落在平均值为93.3、标准差为 9.4 的正态分布区间内。

然后日志采集进来,先检测一下这个模式是不是合法的。如果合法,再检测一下各个参数位置的取值是不是合法的。如果依然合法,再检测一下这段时间这个模式的日志数量,和之前相比是不是正常的。

这么三层检测下来,相当于把模式异常、数值异常、时序指标异常融合到了一起。

这张截图就是日志异常检测的一个历史列表。可以看到,哪怕在 INFO 级别,也是可能出现你从来没见过的古怪日志的,这就需要密切关注了。

当然,因为日志量特别大,所以他的训练样本很容易错过一些正常情况,所以上线初期,我们需要一些迭代以及标注的优化过程。把初始样本不断丰富起来。

前面说了很多 AI 算法:如何来发现异常,定位异常。但是很可惜,定位异常这件事情,目前很难做到能找出非常理想的根因的程度。一般的做法,是依赖于云平台、容器平台的指标采集,做到定位出某台机器有问题,具体还是要登陆机器分析。

我们从日志的角度,可以定位到某台机器的一段日志有问题,但是也不算找到 100% 的根因了,还需要后续查询分析。

所以,做一个智能日志中心,我们也还需要提供更全面的统计分析和快速查询的能力,来完成对全局的、细节的运行状态的观测,以及对变化的即时捕捉。

3日志分析实践与案例

3.1 业务交易的实时统计分析

对应前面说的 VAE 算法,我们说他最适合的就是监控业务交易量这类指标。

我们可以通过仪表盘的可视化效果,对业务交易量的各个不同维度,进行非常细致的统计分析。这样有什么变动的时候,一眼就能看到。

当然,由于交易分析的常见维度比较少和明确,后续也可以通过决策树算法,来自动定位哪些维度的异常更明显地造成了变化,比如某个省某个运营商某个手机型号访问特别慢之类。

从实践来说,这种基于性能优化目的的根因分析,即使分析出来,后续的优化成本也比较高,很可能从性价比考虑,会放弃掉。

交易量指标还是像这样用来做实时统计和监控比较多。

3.2 业务监控-多层业务指标钻取

如果是业务结构比较复杂的场景,可能单看最终用户层面的交易维度不足以定位故障。我们还需要从内部的业务流转关系来调查问题。这时候,就可以使用拓扑图来观测系统运行状态。

在运行状态出异常的时候,通过钻取跳转,把每层的情况和调查路径串联起来。哪怕很基础的运维人员,也可以熟练地按照高级工程师定义好的路径排查问题。

3.3 业务监控-调用链展示分析

业务分析的另一个层面,是针对用户访问的个案分析。类似现在很流行的 Tracing 调用链系统。

对于智能日志中心来说,Tracing 数据也是能很好支持的。在这个基础上,可以做到很好的展示。日志易提供了标准的调用链表格,还提供了循序图分析。这是业界比较少见的方式,但对研发人员很友好,因为系统设计的时候,循序图是研发人员很熟悉的方式。

3.4 用户端监控- DNS/CDN 日志分析

除了系统内部,还可以从 DNS 和 CDN 厂商获取日志,甚至包括收集自己的手机 App 日志,来了解、监控端到端的情况。

以上截图,展示了 10TB 级别日志量的实时返回码趋势分析、各站点缓存命中率分析、各站点响应时长分析、流量峰值分析,以及用户行为轨迹分析、高频请求客户分析、热门站点分析、域名与运营商关系分析等。此外,基于这些日志可以实现性能监控、故障排查等,也可以跟第三方厂商的计费做二次核算。

以上就是本次《海量日志分析与智能运维》的全部内容,谢谢大家。

WOT演讲回顾——海量日志分析与智能运维相关推荐

  1. 嘉年华专访 | 国际上智能运维研究

    数据技术嘉年华等你来 张圣林,南开大学助理教授,于2017年7月获清华大学工学博士学位(计算机科学与技术专业)并获得清华大学优秀博士学位论文,导师是刘莹老师和裴丹老师. 在攻读博士学位期间,曾经赴美国 ...

  2. 清华裴丹:我在智能运维科研领域的一些思考

    前言 中国应用性能管理行业盛宴-2017中国应用性能管理大会(简称APMCon 2017)于8月10日至11日在北京新云南皇冠假日酒店隆重召开.本届APMCon是由听云.极客邦和InfoQ联合主办,作 ...

  3. 阿里巴巴发布智能运维故障管理AI+生态计划

    摘要: 为响应马老师"家国情怀,世界担当"的号召,开放"AI+"生态计划,将让集团内部服务过程中积累下的技术与经验更好地回馈社会,任何企业或合作伙伴均可以简单方 ...

  4. 赠书 | 十年运维经验总结出的智能运维系统落地方案,不得不赞

    对于互联网公司来说,系统复杂化导致的人工运维成本激增已经是普遍现象,采用智能运维是行之有效的应对策略.智能运维的核心思想是利用算法来处理海量运维数据,积累运维经验,从而代替人工思考判断,以自动化的过程 ...

  5. 智能运维监管系统终端_城市轨道交通关键设备智能运维系统初步建构

    城市轨道交通中关键设备的诊断和智能运维管理系统可为城市轨道交通关键设备构建预测性维修体系和全员自主维修制度提供全面的技术支持.分析城市轨道交通关键设备智能运维系统的需求及其构建思路,分析结果表明,该系 ...

  6. ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)

    ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台 参考:http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为 ...

  7. 视频教程-【2019精品课】构建ELK海量日志分析平台-ELK

    [2019精品课]构建ELK海量日志分析平台 10年一线开发及项目管理经验,6年以上大数据项目架构.实施.开发与运维经验,骨灰级大数据玩家,对Hadoop.Storm.Spark.Flink.Kyli ...

  8. 实时海量日志分析系统的架构设计、实现以及思考

    1 序 对ETL系统中数据转换和存储操作的相关日志进行记录以及实时分析有助于我们更好的观察和监控ETL系统的相关指标(如单位时间某些操作的处理时间),发现系统中出现的缺陷和性能瓶颈. 由于需要对日志进 ...

  9. 阿里云日志服务SLS,打造云原生时代智能运维

    2021年10月21日,阿里云针对企业运维难题,在云栖大会为大家带来了一场<智能运维论坛>的主题演讲.在会上,阿里云资深技术专家.日志服务技术负责人简志提出"云原生时代,企业业务 ...

最新文章

  1. 攻防:如何防止动态hook绕过jni签名校验
  2. 理性分散投资 收益袋袋平安
  3. js模块化编程之彻底弄懂CommonJS和AMD/CMD
  4. SQL必知必会-过滤数据
  5. 3.1.1 计算机网络之数据链路的基本概念和功能概述(转载)
  6. VISTA中注册表项LEGACY_****的删除--另一种方法:使用psExec
  7. matlab的textscan,matlab中textscan函数的使用记录
  8. 【控制篇 / 策略】(5.4) ❀ 03. Explicit Web Proxy 显式web代理 ❀ FortiGate 防火墙
  9. electron (二) 暗黑模式
  10. F. Equalize the Array
  11. 陌陌发布新版 增加阅后即焚和短视频功能
  12. 第1周笔记5-Dijkstra最短路径问题
  13. 幂等和非幂等的关系与区别
  14. c++ 写入文件_术业有专攻:逗号分割文件csv
  15. python与审计底稿关系_审计到底在干什么——做底稿
  16. pyecharts-map世界地图国家中英文对照表
  17. 关于matlab中矩阵取值的方法
  18. Ubuntu系统下U盘变成只读文件系统的处理办法
  19. 吐血整理 | 据说这里有一份关于BAT的 “宝藏级” 面试记录终于可以看了!
  20. 爬取猫眼票房保存在MySQL_Scrapy爬取猫眼电影并存入MongoDB数据库

热门文章

  1. Pixel-Bert论文阅读
  2. 【元胞自动机】保守策略元胞自动机三车道(开放辅路,软件园影响)交通流模型【含Matlab源码 1295期】
  3. 如何在 YouTube 上打开或关闭评论
  4. QGroupBox 显示边框 圆角边框 linux环境
  5. JAVA 修饰符笔记
  6. KY1: 分子结构式的绘制
  7. php仿妙笔阁小说源码带采集_杰奇仿妙笔阁小说网,杰奇仿妙笔阁
  8. adb命令——基础系统类命令 ——安装apk程序以及卸载——adb shell pm命令查询...
  9. 对称加密,单向加密,公钥加密
  10. 降维方法之PCA,LDA