聊聊日志聚类算法及其应用场景

聊聊,日志,算法,及其,应用,场景 · 浏览次数 : 188

小编点评

**日志聚类算法概述** 日志聚类是一种基于数据分析的算法,用于对大量日志文件进行分类和分组。该算法可分为多个步骤: 1. **日志采集**:从各种日志收集平台(如 Elasticsearch)中捕获日志数据。 2. **预处理**:对日志数据进行清洗和预处理,如删除不必要的符号、对文本进行分词和特征提取。 3. **聚类**:使用不同的聚类算法(如层次聚类、K-means)将日志数据聚类到不同类中。 4. **标注**:对聚类后的日志数据进行标注,为它们分配相应的类别标签。 **日志聚类的应用** 日志聚类可用于各种应用程序,包括: * **故障排除**:通过聚类日志数据,识别和分析异常的日志消息,从而帮助开发人员快速定位故障。 * **性能分析**:通过聚类日志数据,分析日志中不同时间点的性能变化,帮助开发人员优化应用程序性能。 * **异常监测**:通过聚类日志数据,识别和分析异常的日志消息,帮助开发人员及时发现并处理问题。 **与其他技术相比** 与其他机器学习技术相比,日志聚类的优势包括: * **大规模数据处理**:日志数据往往非常大,传统机器学习算法难以处理。日志聚类可以有效地处理这种数据。 * **实时性能**:日志聚类的处理速度非常快,可以用于实时监控应用程序性能。 * **易于维护**:与传统机器学习算法相比,日志聚类的流程相对简单,更容易维护。 **结论** 日志聚类是一种非常有价值的机器学习技术,可用于各种应用程序。随着日志数据量的不断增长,日志聚类的应用场景和价值将越来越大。

正文

阅读《基于 Flink ML 搭建的智能运维算法服务及应用》一文后,对其中日志聚类算法有了些思考。

概述

日志聚类,简而言之是对海量日志的分析;其分析处理链路可以分为如下流程:日志采集 -> 预处理 -> 分词和特征表示 -> 聚类和标注;也可以概述为数据收集及预处理、文本向量化、文本相似度计算、文本分类四部分。

算法模型分析

针对如上的链路流程做一个拆分叙述。

日志采集

常用的日志采集方案是写完数据库多写一遍ElasticSearch;目前我个人推荐的方案是基于Flink CDC组件来采集。

预处理

一般来说,预处理阶段是在业务中常用的一个阶段,根据业务的不同做不同的处理,比如精简文本删除不必要的语气词、标点符号、替换占位符等等。日志一般都是非结构化的文本类型数据,由于开发人员的开发习惯与团队开发规范的约束,每个人记录的日志模板可能是不一样的,因此,需要对日志文本做一次常见的预处理—————删除不必要的语气词等。

分词和特征表述

分词

其实对于分词,我一开始想到的就是ElasticSearch中很重要的一个组件模块——————分析器。分析器由字符过滤器、分词器、词语(token)过滤器组成。在我看来,预处理流程与分词流程其实可以归纳为分析器的处理。

对于分词,当前主要有两种算法,一种是基于已有的词典库,一种是基于统计的机器学习。

基于词典的分词算法分为以下几种:正向最大匹配法、逆向最大匹配法和双向匹配分词法等。基于词典的分词算法是应用最广泛、分词速度最快的。基于统计的机器学习算法法是HMM、CRF、SVM、深度学习等算法,比如stanford、Hanlp分词工具是基于CRF算法。

常见的分词器都是使用机器学习算法和词典相结合,一方面能够提高分词准确率,另一方面能够改善领域适应性。

特征表述

将分词后的词作为特征列表,基于此列表,对日志做向量化的构建。通过TF-IDF算法对关键词做统计分析,得到词向量后,再做一次相似度比较,最终就可以得到向量。

其实我理解这里就是在做文本相似度匹配的处理。一般都是处理文本向量化。

聚类

最后通过聚类算法:层次聚类算法、K-means算法等来得到我们的聚类结果,也就是各个日志模板所对应的日志类别。

总结

在上份工作中,其实就遇到了类似的问题,当时我们有大量的日志数据,且需要基于这些日志数据做分析推送对应的解决策略以及解答给客户或是一线。但由于当时所有的开发人员都做的是业务开发,对机器学习及应用压根就不清楚(严格来说,都没有考虑过从这方面入手),所以导致当时的运维量和客户的反馈不太好;当时我花了不少时间分析过如何解决,受限于当时的认知与能力,画过一个简单的流程图,但很难落地,而且没有足够的理论与算法的支持,相比较现在的解决方案,那真是没眼看。目前来看,日志聚类的应用完全是可以落地到当时的业务上的。

参考

基于 Flink ML 搭建的智能运维算法服务及应用

对智能化运维中日志聚类分析的一些思考

SREWorks v1.5 版本发布 | 基于实时作业平台的日志聚类开源

揭秘阿里云Flink智能诊断利器——Fllink Job Advisor

与聊聊日志聚类算法及其应用场景相似的内容:

聊聊日志聚类算法及其应用场景

阅读《[基于 Flink ML 搭建的智能运维算法服务及应用](https://mp.weixin.qq.com/s/yhXiQtUSR4hxp9XWrkiiew "基于 Flink ML 搭建的智能运维算法服务及应用")》一文后,对其中日志聚类算法有了些思考。 ### 概述 日志聚类,简而言之是对

文盘Rust -- 给程序加个日志

日志是应用程序的重要组成部分。无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录。在这篇文章中,我们结合log4rs聊聊rust 程序中如何使用日志。

文盘Rust -- 给程序加个日志

作者:贾世闻 日志是应用程序的重要组成部分。无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录。在这篇文章中,我们结合[log4rs](https://github.com/estk/log4rs)聊聊rust 程序中如何使用日志。 [log4rs](https://github.co

[转帖]Redis 运维实战 第04期:AOF 持久化

Redis 运维实战 第04期:AOF 持久化 https://cloud.tencent.com/developer/article/1986824 Redis 有两种持久化方式:AOF 和 RDB。本节就先来聊聊 AOF。 AOF(Append Only File) 日志是写后日志,Redis

聊一聊如何截获 C# 程序产生的日志

一:背景 1.讲故事 前段时间分析了一个dump,一顿操作之后,我希望用外力来阻止程序内部对某一个com组件的调用,对,就是想借助外力实现,如果用 windbg 的话,可以说非常轻松,但现实情况比较复杂,客户机没有windbg,也不想加入任何的手工配置,希望全自动化来处理。 真的很无理哈。。。不过这

SQLSERVER 事务日志的 LSN 到底是什么?

一:背景 1. 讲故事 大家都知道数据库应用程序 它天生需要围绕着数据文件打转,诸如包含数据的 .mdf,事务日志的 .ldf,很多时候深入了解这两类文件的合成原理,差不多对数据库就能理解一半了,关于 .mdf 的合成前面的文章已经有所介绍,这篇我们来聊一下 .ldf 的一些内部知识,比如 LSN。

[转帖]Redis 运维实战 第05期:RDB 持久化

https://cloud.tencent.com/developer/article/1986826 前面一节,我们聊了 AOF,AOF 有个不足点就是:进行数据恢复时,需要逐一把日志都执行一遍,非常耗时间。 Redis 还有另外一种持久化方法:内存快照。指内存中的数据在某一时刻的状态记录,这个快

[转帖]收藏!系统运维中网络知识实用总结

http://blog.itpub.net/70024420/viewspace-2929070/ 【摘要】运维是一门艺术,也是一门苦差事,每个人对此均有不同的理解,正所谓一千个人眼中有一千个哈姆雷特。干一行就要爱一行,既然选择了这个行业,最好是能把它做到最好,发挥自己最大的价值。本文来聊聊在日常运

架构师日记-从技术角度揭露电商大促备战的奥秘

今年的618大促已经如期而至,接下来我会从技术的角度,跟大家聊聊大促备战的底层逻辑和实战方案,希望能够解答大家心中的一些疑惑。

聊聊Spring的工厂方法与FactoryBean

概述 工厂方法是比较常见,常用的一种设计模式。FactoryBean是Spring提供的一种Bean注入IOC容器的方式。 工厂方法 在做日常开发时,一般都会避免直接new对象,而且将new的操作丢给IOC容器,但对于第三方系统的集成,我们不太好直接丢给IOC容器,此时可以通过工厂模式, 提供一个工