海量日志分析与智能运维

以下文字版根据《大咖·来了》第3期《海量日志分析与智能运维》整理,回放链接:http://aix.51cto.com/activity/10011.html?dk=wz

一、AIOps 与智能日志中心

1.1AIOps 五等级

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

一级是最容易的,只要你有个想法试试就行,到网管监控系统里,拿一个监控指标的曲线下来,就可以尝试异常检测。

一级还没有成熟的单点应用,当有了一个成熟的单点应用,就算是达到二级。二级必须要有一定的基础设施建设作为前提。当单场景模块能够串联起来,形成流程化 AI 运维,也就达到了三级的层次。

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

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

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

1.2智能日志中心介绍

为了帮助大家实现更高级的 AIOps 能力,日志易打造了一个智能日志中心。如下图,为智能日志中心的全景架构图。

我们都知道, AI 重要的是数据。所以,首先我们要具备尽量多类型的数据采集、处理及分析能力。

日志易支持 Linux、Windows、AIX、HPUX 等各种平台的数据采集,也能采集 ODBC、Syslog、APM 的数据,甚至手机 App 埋点数据,然后配合一些 CMDB 数据,流程工单数据,非常方便地实现业务运维层面的关联分析。

采集之后,我们有数十种 ETL 方法来对日志进行规范化处理。日志本身是非结构化的,而日志分析需要格式化的数据,ETL 做好了,后续的分析才容易展开。

这个环节,会涉及到一些数据脱敏及业务日志串联,对于一些时间戳设计不合理的日志,日志易会自动对其进行补全,以便后续分析工作的展开。

对数据进行搜索时,业界主流开源解决方案是 ES。然而,由于 ES 开源引擎是一个通用的搜索引擎,难以满足日志处理的一些特殊需求,用Java 开发,内存消耗及性能上存在很大优化空间,在面临海量日志数据时,ES 往往显得力不从心。

基于以上原因,日志易自己开发了比通用引擎快 5 倍以上的 Beaver 搜索引擎,保证了海量数据的实时存取。我们还有上百个 SPL 指令进行统计分析,有多种不同场景的算法。搜索引擎可以说是 AIOps 的大脑。

我们有日志易智能日志中心,也有基于日志开发的智能运维应用 Lynxee、大屏 Galaxee、数据工厂。安全审计、业务关联分析等解决方案,也是基于智能日志中心实现的。

智能日志中心可以与大屏展示、告警推送、按需调用脚本执行、公开的数据 API 和第三方平台对接,这一部分可以说是 AIOps 的手。

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

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

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

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

2.1AIOps 场景

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

以质量保障而言,以往的异常检测,需要运维工程师基于自己的经验做出判断和分析,我们要做的,是借助AI来实现这一目的。

故障的发生都是有先兆的,可能表现为延时逐渐增大,响应逐渐变慢等。我们可以基于这些先兆及历史数据做出模型,对即将发生的异常做出预判。

成本管理和效率提升要面临的情况更加复杂。成本管理面临成本优化、资源优化、容量规划、性能优化等复杂场景。

效率提升涉及复杂度较高的智能变更、智能问答、智能决策、容量预测等,以双十一容量预测为例,要基于历史数据预估流量,同时结合业务(如促销活动带来的增量)等因素综合分析。纵然如此,预估也往往会和现实存在较大出入。

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

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

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

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

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

2.2AIOps 之快速发现故障

快速发现故障即尽快告警。告警的本质,是告诉运维人员两件事情:一,有问题了;二,问题有多严重。

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

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

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

2.3AIOps 之问题归因定位

2.3.1指标异常检测

《SRE》是这几年很火的书了,里面有个概念值得推荐,就是所谓“黄金指标”。

不管是主机设备层面,还是应用服务层面,或者集群、端到端等等,都可以从延迟、流量、错误和饱和度四个最关键的角度,来衡量它的健康状态。

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

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

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

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.1业务交易的实时统计分析

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

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

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

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

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

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

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

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

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

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

对于智能日志中心来说,Tracing 数据也是能很好支持的。在这个基础上,可以做到很好的展示。

日志易提供了标准的调用链表格,还提供了循序图分析。这是业界比较少见的方式,但对研发人员很友好,因为系统设计的时候,循序图是研发人员很熟悉的方式。

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

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

以上截图,展示了 10TB 级别日志量的实时返回码趋势分析、各站点缓存率分析、各站点响应时长分析、流量峰值分析,以及用户行为轨迹分析、高频请求客户分析、热门站点分析、域名与运营商关系分析等。

此外,基于这些日志可以实现性能监控、故障排查等,也可以跟第三方厂商的计费做二次核算。

原文地址:https://blog.51cto.com/14474728/2467411

时间: 2024-11-05 16:26:27

海量日志分析与智能运维的相关文章

直击传统运维痛点,京东金融智能运维初探!

随着互联网+时代的到来,京东金融业务规模不断扩大,业务场景也不断创新.但是,业务变化之快超乎想象,相应的 SOA  及微服务架构日趋深入,服务数量不断膨胀,线上环境日益复杂,服务依赖关系每天都在变化. ● 如何实时看清系统的容量水位,为容量评估和系统扩容提供客观依据? ● 当故障发生时,如何精确判断影响范围? ● 如何确定每一次交易过程中,每个系统处理耗时分别是多少? ● 每个系统在处理一笔交易时,分别在数据库.NoSQL.缓存.日志.RPC.业务逻辑上耗时多少? ● 如何快速确定系统的真正瓶颈

智能运维就是由 AI 代替运维人员?

听了有关AI运维之后有很多人感到比较焦虑,我所从事的运维或开发将来会不会被AI给替代掉呢? 现在新技术发展的特别快,各种语言.技术.理念让大家确实感到自顾不暇跟不上趟,但是有一点,在这里我要特别重申一下,AI在目前这个阶段还是一种辅助大家来进行判断和学习.定位处理问题的工具,就像无人驾驶,现在可以做到完全没有人驾驶吗?肯定不行,未来无人驾驶是完全可以替代人的,但它还有很长一段路要走.AI运维就像无人驾驶一样,未来前景很光明,但任重道远. 大部分的智能运维还没有完全落地,我所在的企业也是处在一个探

基于PaddlePaddle的新能源充电桩智能运维

随着大数据.人工智能.云计算技术的日渐成熟和飞速发展,传统的运维技术和解决方案已经不能满足需求,智能运维已成为运维的热点领域.同时,为了满足大流量.用户高质量体验和用户分布地域广的互联网应用场景,大型分布式系统的部署方式也成为了高效运维的必然之选.如何提升运维的能力和效率,是保障业务高可用所面临的最大挑战.本篇文章以百度基于PaddlePaddle的新能源充电桩为切入点,深入介绍智能运维在电力行业的实际应用. 以下为演讲实录. 电力行业运维过程中的痛点与机遇 众所周知,典型电力行业包括发电.输电

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

1 序 对ETL系统中数据转换和存储操作的相关日志进行记录以及实时分析有助于我们更好的观察和监控ETL系统的相关指标(如单位时间某些操作的处理时间),发现系统中出现的缺陷和性能瓶颈. 由于需要对日志进行实时分析,所以Storm是我们想到的首个框架.Storm是一个分布式实时计算系统,它可以很好的处理流式数据.利用storm我们几乎可以直接实现一个日志分析系统,但是将日志分析系统进行模块化设计可以收到更好的效果.模块化的设计至少有两方面的优点: 模块化设计可以使功能更加清晰.整个日志分析系统可以分

智能运维:www6662016com从0搭建AIOps系统18288006666

互联网刚兴起的时候,运维还只是一个简单的服务安装管理及监控工作,没人会想到人类在互联网上建立了如此庞大的业务生态.从衣食住行到教育金融,服务器的规模在急剧膨胀,从简单的人力可管控,逐渐进化到依赖自动化体系来管理,但是另一方面,仅依赖工具已经不能很好地解决运维场景的需求.智能运维是建立在运维基础上,通过一定策略和算法来进行智能化诊断决策,以更快.更准确.更高效地完成运维工作的技术体系.要实现智能运维的目标,需要有平台支撑,这也是DevOps很火的原因,很多运维工程师都掌握了开发工具和平台的本领,因

智能运维解决方案:TOC -IT技术运行中心

TOC--IT技术运行中心(Technoical Operation Center )是网利友联在多年运维经验基础上,全新打造的一套综合智能运维解决方案. 运维现状 运维行业经过几十年的发展,基本上每个用户的信息中心都已经建立了一套完整的运维体系,这其中不乏最重要几个部分:人.物.数.业务在变,运维目标也在时刻发生着变化.如今的运维体系现状是有团队.有工具.有数据.但是面向智能运维生态的发展趋势,面对大数据分析计算场景,缺少的是数据汇聚.数据融合.告警关联分析.数据统一展现等.总结起来就是整个运

智和网管平台国产化AIOps智能运维 建立自主可控网络安全体系

没有网络安全就没有国家安全,中国作为一个崛起中的大国,网络安全至关重要.新一届中央高度重视信息安全自主可控的发展,Gartner研究报告表明,2019年中国三分之二的数据中心.IT基础设施支出流向中国本土厂商,因此,如智和网管平台SugarNMS以国产化.高拓展性为核心的智能化运维软件成为行业的前沿力量. 自主知识产权 全面深入IT国产化 IT国产化体系复杂,产业链涉及网络基础设施.服务器.存储.数据库.中间件.操作系统等众多环节.现在,服务器.PC和网络安全国产化率较高,如服务器领域依靠华为.

Gartner中国智能运维市场指南发布,擎创再次成为AIOps代表供应商

近日,Gartner发布了<中国智能运维市场指南>(以下简称"<指南>"),擎创科技再次因为在智能运维领域产品的创新力及其成熟度,被Gartner提名为AIOps领域代表供应商.而在去年7月份,擎创就被Gartner评为中国AIOps领域重点推荐服务商. Gartner<指南>指出,在中国特有的生态环境系统下,全球性的IT巨头虽然进驻中国市场数十年,但是却难以在AIOps领域扩张.主要原因在于,这些全球性供应商提供的ITOM工具的许可证模式比较昂贵,

ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://tchuairen.blog.51cto.com/3848118/1861167 什么要做日志分析平台? 随着业务量的增长,每天业务服务器将会产生上亿条的日志,单个日志文件达几个GB,这时我们发现用Linux自带工具,cat grep awk 分析越来越力不从心了,而且除了服务器日志,还有程序报错日志,分布在不同的服务器,查阅繁琐. 待解决的痛点: 1.大量不同种类的日志成为了运