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