首页 > 编程语言 >聊聊日志聚类算法及其应用场景

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

时间:2023-07-22 19:23:39浏览次数:77  
标签:基于 预处理 算法 聊聊 聚类 日志 分词

阅读《基于 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

标签:基于,预处理,算法,聊聊,聚类,日志,分词
From: https://www.cnblogs.com/zhiyong-ITNote/p/17574050.html

相关文章

  • [TSG@Site开发日志3]从C#到Qt,再从Qt到C# 和 Qt的组合开发,浅谈在采集端工控设备开发中
    [TSG开发日志3]从C#到Qt,再从Qt到C#,浅谈不同技术之间选型的利与弊当前在South公司的开发历经了几个时代,第一个时代是用C#进行的开发,第二个时代是从C#向Qt逐渐转型,第三个时代是我现在站在十字路口上,又需要将采集端软件从Qt的路上拉回来。为什么先看看AI怎么说选择使用C#还是Qt来......
  • Postgresql日志归档、复制槽概念
    问题1数据日志什么时候归档?其实这个问题是比较需要明白的,到底日志在正常的情况下,什么时候才能归档,到底条件是什么,要开启postgresql的日志的归档的前提条件,主要需要配置1wal_level=replica(或logical)2archive_mode=on3archive_command='test!-......
  • SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为
    全文链接:http://tecdat.cn/?p=32118最近我们被客户要求撰写关于电商购物网站的用户行为的研究报告,包括一些图形和统计输出。假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢? ( 点击文末“阅读原文”获取完整文档、数据 )这个功能在很多电商类网站都有,那么,通过SQLS......
  • 学习日志
    7.21今天继昨天的递归进一步复习,写了一道搜索与回溯的题Letter#include<bits/stdc++.h>usingnamespacestd;intn,m,maxt=0;charc[25][25];map<char,bool>p;boolf[25][25];constshortdx[]={0,0,-1,1};constshortdy[]={-1,1,0,0};voiddfs(intx,inty,intt)......
  • java aop记录用户操作日志如何获取请求参数
    在Java中,AOP(面向切面编程)是一种编程范式,它可以将横切关注点(如日志记录)从业务逻辑中分离出来,使得代码更加清晰、可维护和可扩展。在记录用户操作日志时,我们可以使用AOP来拦截请求并获取请求参数。首先,我们需要创建一个切面类来实现日志记录的逻辑。假设我们使用Spring框架和AspectJ......
  • Intellij IDEA 显示 access.log 日志
    先配置  SpringBoot记录access.log日志,先让accesslog 显示出来  ......
  • k8s 日志收集
    日志收集流程filebeat--->kafka--->logstash--->elasticsearchlogstash.confinput{kafka{bootstrap_servers=>"172.16.3.213:19092,172.16.3.213:29092,172.16.3.213:39092"topics=>["app-1"]codec=>"json......
  • python2发送日志到es
    如何用Python2发送日志到ES一、流程概述以下是将日志发送到Elasticsearch(ES)的整个流程,包括准备工作和代码实现。我们将使用Python2来完成这个任务。步骤描述1.准备环境安装所需的Python依赖库和Elasticsearch2.连接ES使用Python代码连接到Elasticsearch3.创......
  • Linux删除log日志文件命令
    如下:1、删除文件夹及子目录下的日志文件find.-name'*.log*'|xargsrm2、忽略当前文件夹下的文件夹,可在-v后面添加  “/文件夹名称”,这里用log文件夹举例find.-name'*.log*'|grep-v/log|xargsrm这样就可以删除总文件夹下除了log文件夹以外的.log文件了......
  • windows mysql 启动日志
    实现"WindowsMySQL启动日志"的步骤下面是实现"WindowsMySQL启动日志"的步骤的表格示例:步骤描述1安装MySQL服务器2配置MySQL服务器启动参数3设置MySQL服务器日志输出4启动MySQL服务器接下来,我们将逐步解释每个步骤应该如何执行。步骤1:安......