简介: 封神-运维大脑 | 日志检测工具前端
阿里云应用业务有问题,云平台监控能够发现问题,但并不能定位到问题根本缘由,运维大脑监控底层日志,可快速定位问题缘由,帮助现场运维同窗解决问题。
运维大脑融合SRE方法,专一于深度运维的技术服务领域,帮助客户与现场,加强租户视角运维监控能力、提高平台视角问题定位效率、增强双维度容量性能运营能力。浓缩TAM现场运维经验,多样化地、标准化地、智能化地向客户输出运维能力与技术服务。算法
图1:流程图数据库
如图2所示,可经过运维大脑前端页面配置须要监控的日志,可单独新增也可批量导入。配置信息包括产品、服务、服务角色、日志类型(DOCKER 物理机 VM)、日志路径、监控周期、算法(ML-TOP ML-CP ML-KEY)、状态(开启关闭)。运维
图2:日志配置ssh
前端配置日志信息存储到后台数据库,后台程序经过产品、服务、服务角色等条件查询相应的主机名。机器学习
图3:数据库工具
定时任务启动,根据获取到的主机名经过PSSH命令下发训练脚本到各个机器上。下发前判断各台机器是否已存在训练脚本,若是脚本已存在,则中止下发命令。性能
图4:pssh学习
训练脚本开始工做:首先读取日志,经过正则进行英文分词(英文文本可经过NLTK库分词,中文文本可经过JIEBA分词进行切分,在这里选择最简单的PYTHON自带的RE模块根据特殊符号进行切分),统计总词数,并计算每一个单词的词频。按词频排序将单词以二进制形式写入TOP模型文件,词频写入CP模型文件,如图5所示。
警告:文件命名最好以服务角色+文件路径的方式命令,不然在后续读取的时候可能会冲突。优化
图5:文件命名
定时任务启动,同训练过程初始化同样,首先判断各台机器是否存在分析脚本,如若不存在,进行下发命令。
分析脚本开始工做:首先读取日志,区别于日志训练,分析脚本会根据前端配置的监控周期进行选取(好比监控周期为30分钟,则分析脚本会选取当前时间至30分钟以前的日志进行分析)。同训练脚本同样,读取日志后,进行文本分词,计算词数,统计词频。读取模型文件,根据不一样的算法(算法这块在文章第三部分会单独进行讲述),计算算法权重值。对算法权重值进行阈值判断,超过阈值,会判断日志异常信息并从日志文件获取。分析结束,最后把产品、服务、服务角色、日志文件、日志级别(ERRORINFO)、算法值、日志错误详情、监控时间等监控数据进行入库,并在前端页面进行展现,如图6所示。
图6:日志分析
训练模型初始化的弊端在于没法手动去打标签(正常异常),因此对于初始化后的模型文件确定不能是一个彻底正常的模型,须要后续不断的去优化。
定时任务启动:仍是同样的流程,完成读取文件、分词等工做后,生成的模型文件与源模型文件对比,对比方法与算法相同,阈值比分析阈值更低,低于阈值后,单词词频字典进行合并,按次序排序后分别写入源模型文件。至此,整个日志过程完成闭环操做。
日志巡检是对自身系统运行情况的监控,环绕整个闭环操做。日志训练、分析、模型优化经过定时任务去驱动,日志巡检对每一步操做过程进行成功判断,并对异常的操做进行缘由分析,相关数据存储入库,并在前端进行展现,如图7所示。
图7:日志巡检
运维大脑所开发的算法借鉴了贝叶斯和文本类似度两大算法,以传统的天然语言处理方式对文本进行分析。
结巴分词适用于中文分词,分词原理为:
①基于Trie树结构实现高效的词图扫描,生成句子中汉字全部可能成词状况所构成的有向无环图(DAG)。
②采用动态规划查找最大几率路径, 找出基于词频的最大切分组合。
③对于未登陆词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法
nltk库只能用于英文分词,除此之外还可用于词性标注和文本分析。
我的认为英文分词以空格或部分特殊符号进行切分便可:re.split()。
TF-IDF是Term Frequency-Inverse Document Frequency的缩写,即词频-逆文档频率,用来刻画一个词语在某篇文档中重要程度,也就是说是否能够用该词语来表明某篇文档的主要内容。
TF表示词频。给定几个关键词,在某篇文档中出现的次数最高者,则说明该文档与出现次数最高的词语关系最密切。用词语出现的次数除以文档的总词汇数,就是TF,固然此处在统计文档总词汇时,把相似于“了”、“的”、“地”、“即”等词语排除在外不予考虑。引入词频后,则某个词的词频越高,该文档与其关系也就越大。
TF计算公式为: TF = 词语在文档中出现的次数 / 文档词语次数
IDF表示逆文档频率。若是一个词语在某篇文档中出现的TF高,可是在语料库的其它文档中出现的次数少,则说明该词语对于文档分类具备重要做用,所以引入IDF来刻画此项数据,其值越大,说明该词语对于语料库来讲具备越好的区分能力。若是某个词语在每篇文档里均出现,且出现的次数很接近,则该词语用来区分文档时效果便很差。
IDF计算公式为: IDF = log(语料库文档总数/包含某词语的文档数+1)
Latent Semantic Indexing(LSI)从文本潜在的主题进行分析。LSI是几率主题模型的一种,另外一种常见的是LDA,核心思想是:每篇文本中有多个几率分布不一样的主题;每一个主题中都包含全部已知词,可是这些词在不一样主题中的几率分布不一样。LSI经过奇异值分解的方法计算出文本中各个主题的几率分布,严格的数学证实须要看相关论文。假设有5个主题,那么经过LSI模型,文本向量就能够降到5维,每一个份量表示对应主题的权重。
可参考文后资料[1]了解详情。
总结下文本类似度和贝叶斯算法的处理过程:
运维大脑日志分析算法包括:
本期给你们介绍了封神系统运维大脑模块的相关知识,分享了机器学习中两个经常使用的文本分析算法。目前运维大脑所能达到的效果是能够把日志中报错进行识别并展现,可是咱们的最终目标是能够识别出故障,虽然普通的报错可能对平台并无太大的影响,可是频繁的报警并不利于运维工做的开展。
关于运维大脑暂时就介绍这么多,当前也确实存在必定问题,待后续完善后会再跟你们介绍,而后若是同窗有更好的算法或者思路,欢迎讨论!
接下来的文章会陆续给你们介绍封神的其余模块,包括实时告警、运维大盘、报表分析、数据网关、妲己纣王、时序数据库等相关知识,敬请期待!
原文连接本文为阿里云原创内容,未经容许不得转载。