大批量分析下日志处理检索功能

news2025/7/15 5:32:10

今天我们看一个日志处理分析的问题(jvm操作)

首先说下需求为什么发生:

需求描述: 在我们进行文件分析的时候,如果文件很多,而这个时候我们的线程在分析的时候产生了大量的报错,由于需要定位问题 发生的原因,所以很难减少报错信息,就算减少了很多,对于大批量数据依然还是会导致报错信息过多,而这个错误我们无法预知,可能代码问题 、可能用户操作问题,可能数据问题;如果人工没有及时干预那么很快我们的日志将打满我们的内存;

📢这个时候有人可能会说,为啥不设置一下logging.file.totalSizeCap来限制大小,为啥不设置日志级别,为啥不用日志分析工具;下面听我慢慢道来;

为啥不设置日志级别:

其实我们都是是有日志级别的,但我们一般用的是info级别,改成error的话会丢失很多有用的平时非报错信息,对于我们日常系统维护不好,不满足业务场景;

设置日志文件总量

我们设置了,但是貌似没生效,可能是设置的过大又或者是云环境引入日志导致的,但这也不是我这里要考虑的(项目应该考虑的),

为什么不用日志分析处理工具

如果通过ELK这样的日志分析工具,会增加很多中间件处理,不满足不同平台部署的方便性;而且某些平台也不愿意用这些东西;也试过阿里云的SLS日志服务收集直接云服务配置,介绍下SLS,它会将我们多台机器下的日志进行一个收集的操作,然后我们通过SLS就可以检索到问题,可以快速定位;这又带来了这是阿里的服务,或收费或需要阿里人员的配合,也不方便;而且没有解决日志过多问题;

JVM来进行处理

那么剩下来的就只能通过JVM本身来进行处理;我们先在catch里面转换下异常信息变为一个字符串,

我们通过hutools工具转换下,(该方法可截取3000个异常字符),

然后对异常信息进行加密操作,加密方式自己觉得方便着来; 这里之所以加密,是为了防止异常信息不同的过多,去重的话检索会耗时,所以加密一下做key检索用,我们可以定义一个静态变量来存放好比public static Map<String, Err定义类> GLOBAL_MAP = new ConcurrentHashMap<>();(我这里用 Map<String, String>方便操作);我们先看用例,这里我定义了三个异常,

好,下面我们加密处理;这里是通过MessageDigest来处理,该类已提供demo示例,我这里不过多说明,CV即可;网上用例也很多,

对于加密处理后的结果我们直接看效果;

我们可以看到最终输出的是三个不一样的一样,一样的全部都不输出了,在异常那里我们保留一个方法可作异常逻辑处理,我们可以将这些内容放入redis中,定期清理,这样可以省去因为不同JVM导致异常重复的情况,不过又得做一点处理,这里只提供思路,都可,再做一个接口显示就完成了简单的日志检索功能了;功能很简单,但想全还是要很慎重的,毕竟是批量分析;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐5款免费且无广告的软件,助你提升效率

有时候一些小工具&#xff0c;能给你带来一些意想不到的效果&#xff0c;我们来看看下面这5款工具&#xff0c;你又用过其中几款呢&#xff1f; 1.文件大小查看——Folder Size Folder Size是一个可以查看文件大小的软件&#xff0c;使用它可以一键查看文件夹里的文件大小。你…

linux篇【16】:传输层协议

目录 一.再谈端口号 1.端口号定义 2.端口号范围划分 &#xff08;1&#xff09;一共有 2^16 个端口 &#xff08;2&#xff09;认识知名端口号(Well-Know Port Number) 3.端口号和进程就是K V关系 4.netstat &#xff08;1&#xff09;示例1&#xff1a; n 拒绝显示别名…

mysql常用且易混淆函数整理

DATE_FORMAT(date&#xff0c;format) 函数中format的格式如下&#xff1a; 类型转化函数 为了进行数据类型转化&#xff0c;MySQL提供了CAST()函数&#xff0c;它可以把一个值转化为指定的数据类型。类型有&#xff1a;BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED 示例&a…

【前端】chatGPT教我写compose函数

0 前言 昨天希望实现一个通用的compose函数&#xff0c;能够接受同步函数与异步函数&#xff0c;并且通过异步函数同步执行来是吸纳compose函数中的所有参数函数能顺序执行。 比如compose(asyncFun3,syncFun2,asyncFun1,syncFunc0)&#xff0c;四个函数能从右到作顺序执行&…

vue3+webpack5搭建项目

1、运行npm run dev报错&#xff1a; [webpack-cli] Failed to load E:\demoProject\vue3Webpack5\config\webpack.dev.js config [webpack-cli] Error: Cannot find module html-webpack-plugin 解决方案&#xff1a; 尝试了好多解决方案&#xff0c;都不可以。抱着试试的心…

2023年爆火的csgo搬砖项目详细拆解,steam搬砖长期稳定

不懂的同学可以听我下面慢慢道来 我的态度&#xff1a;存在即有意义&#xff0c;没有长久的赚钱项目&#xff0c;但是一定有长久赚钱的人。 我们团队也一直在做这个项目&#xff0c;赚钱是一定的&#xff0c;简单总结&#xff1a;执行力技巧量化。 开门见山 一、steam搬砖项…

Sqoop全部数据导入_将mysql数据库中的数据导入到hdfs中---大数据之Apache Sqoop工作笔记002

然后来看一下如何用sqoop导入数据,这里的导入指的是从其他数据源导入到hdfs,反过来是导出 然后看一下首先准备一下数据 去创建数据库company ,创建表staff, 然后插入数据 插入两行数据测试用 \ 然后查询一下use company 然后查询一下看看结果

整车电源的几种模式:OFF/ACC/RUN/CRANK

本文框架1.前言2. 四种电源模式2.1 OFF模式2.2 ACC模式2.3 ON模式2.4 CRANK模式3. KL15/KL301.前言 在诊断或者网络管理相关模块开发对客户的需求进行梳理时&#xff0c;经常会看到客户对不同车辆模式下处理策略的需求&#xff0c;如果前期没接触过这几种模式&#xff0c;可能…

基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试(中篇)

3.2 SPI硬件时序方式 上面的3.1小节是采用SPI模拟时序驱动SD NAND&#xff0c;STM32本身集成有SPI硬件模块&#xff0c;可以直接利用STM32硬件SPI接口读写。 下面贴出底层的适配代码。 上面贴出的驱动代码里&#xff0c;已经将驱动接口部分和协议逻辑部分区分开了&#xff0c;替…

设计模式C++实现20: 桥接模式(Bridge)

部分内容参考大话设计模式第22章&#xff1b;本实验通过C语言实现。 一 基本原理 意图&#xff1a;将抽象部分和实现部分分离&#xff0c;使它们都可以独立变化。 上下文&#xff1a;某些类型由于自身的逻辑&#xff0c;具有两个或多个维度的变化。如何应对“多维度的变化”…

掌握MySQL分库分表(六)解决主键重复问题--Snowflake雪花算法

文章目录问题及需求常用ID解决方案数据库自增IDUUIDRedis发号器Snowflake雪花算法分布式 ID 生成算法Snowflake原理关于bit与byte雪花算法的位数Snowflake必须注意的地方全局唯⼀、不能重复保证各个系统时间一致Snowflake雪花算法实现雪花算法测试结果问题及需求 单库下⼀般使…

模块Model

定义 包含一系列数据&#xff0c;函数&#xff0c;类的文件&#xff0c;通常以.py结尾 作用 让相关的数据&#xff0c;函数&#xff0c;类有逻辑的组织 第一种调用方法直接通过import导入模块名 首先创建模块module01.py import timedef print_nowtime():"""…

sqlserver复制远程数据库到本地

文章目录前言一、前置知识在微软的SQL Server 2000 数据库有三种类型的文件&#xff1a;主要数据文件&#xff1a;&#xff08;扩展名.mdf是 primary data file 的缩写&#xff09;次要数据文件&#xff08;扩展名.ndf是Secondary data files的缩写&#xff09;事务日志 &#…

【数据结构】——树和二叉树的概念

目录 1.树概念及结构 1.1树的概念 1.2 树的相关性质 1.3 树的表示 1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2.二叉树概念及结构 2.1二叉树概念 2.2 特殊的二叉树 2.3 二叉树的性质 1.树概念及结构 1.1树的概念 树是一种非线性的数据结构…

Retrofit+Hilt后端请求小项目2--依赖与准备工作

目录依赖处理settings.gradlebuild.gradle(project:app)build.gradle(module:app)准备工作接口安装 JSON 转 kotlin 插件获取 JSON依赖处理 settings.gradle 首先在此指定使用 hilt 依赖时的版本 pluginManagement {repositories {gradlePluginPortal()google()mavenCentral…

服务稳定性保障手段与规范

服务的稳定性&#xff0c;对于任何一个在线提供服务给用户的公司来说&#xff0c;都是非常重要的。任何一次线上事故&#xff0c;都可能会给公司带来显而易见的损失。因为相比于其他部门&#xff0c;负责基础技术、公共服务的同学&#xff0c;发生事故的时候很容易暴露在风口浪…

Kaldi语音识别技术(七) ----- 训练GMM

Kaldi语音识别技术(七) ----- GMM 文章目录Kaldi语音识别技术(七) ----- GMM训练GMMtrain_mono.sh 用于训练GMM训练GMM—生成文件训练GMM—final模型查看训练GMM—final.occs查看训练GMM—对齐信息查看训练GMM—fsts.*.gz查看训练GMM—tree决策树查看align_si.sh 用于对齐训练G…

Cookies与Session会话技术详解

引言:日常生活中&#xff0c;人和人之间沟通交流&#xff0c;涉及到一个词----会话&#xff0c;软件中一样存在会话&#xff0c;如&#xff1a;网购登录&#xff0c;访问公司OA系统也是不断的会话&#xff0c;软件中如何管理浏览器客户端和服务端之间会话过程中的会话数据呢&am…

oscp_靶场练习_Lame

oscp_靶场练习_Lame 1. nmap扫描&#xff1a; └─# nmap 10.10.10.3 Starting Nmap 7.92 ( https://nmap.org ) at 2023-02-20 23:21 EST Nmap scan report for 10.10.10.3 Host is…

switch的使用细节

1.switch的基本语法 switch(表达式){ case 常量1: 语句块1; break; case 常量2: 语句块2; break; … case 常量n: 语句块n; break; default: default语句块; break; } &#xff08;1&#xff09;switch关键字&#xff0c;表示switch分支 &#xff08;2&#xff09;表达式对应一…