CN114116614A - 日志存储方法、装置、计算机设备及存储介质 - Google Patents
日志存储方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114116614A CN114116614A CN202111443033.XA CN202111443033A CN114116614A CN 114116614 A CN114116614 A CN 114116614A CN 202111443033 A CN202111443033 A CN 202111443033A CN 114116614 A CN114116614 A CN 114116614A
- Authority
- CN
- China
- Prior art keywords
- log
- target
- keyword
- grade
- processed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种日志存储方法、装置、计算机设备及存储介质。方法包括:获取待处理日志;然后根据日志关键字以及预设的关键字与日志等级的对应关系,确定待处理日志的目标日志等级;将目标日志等级写入待处理日志中,得到目标日志;然后将符合预设的日志预聚合条件的目标日志进行预聚合处理,得到预聚合后的目标日志;将预聚合后的目标日志存入ClickHouse数据库中。本方案中用户对日志进行查询时,可以根据日志携带的日志等级快速确定日志的重要性程度,提高了日志的查询效率,并且当用户对进行过预聚合处理的日志进行查询时,装置不需要对该查询进行聚合处理,提高了装置的响应速度,进一步提高了日志的查询效率。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种日志存储方法、装置、计算机设备及存储介质。
背景技术
日志可以记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
ClickHouse是一款列式数据库管理系统。由俄罗斯门户公司Yandex研发,相对于传统行式数据库管理系统,ClickHouse在处理大数据、宽表联机分析处理(On-LineAnalytical Processing,OLAP)场景时,ClickHouse拥有非常强悍的性能。根据真实业务场景测试结果显示,特定需求下,ClickHouse的性能是常用数据库的上百倍。
为了对日志进行更好的管理,现有技术一般将日志存储在ClickHouse数据库中,但是,用户通过ClickHouse数据库进行日志的查询得到日志返回结果时,用户还要进一步通过分析日志返回结果,才能获取日志返回结果中日志的重要性程度,导致日志查询的效率低。
发明内容
本申请实施例提供了一种日志存储方法、装置、计算机设备及存储介质,可以提高日志查询的效率。
第一方面,本申请实施例提供了一种日志存储方法,其包括:
获取待处理日志,所述待处理日志携带有日志关键字;
根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;
将所述目标日志等级写入所述待处理日志中,得到目标日志;
根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;
若所述目标日志符合所述日志预聚合条件,则对所述目标日志进行预聚合处理,得到预聚合后的目标日志;
将所述预聚合后的目标日志存入所述ClickHouse数据库中。
第二方面,本申请实施例还提供了一种日志存储装置,其包括:
获取单元,用于获取待处理日志,所述待处理日志携带有日志关键字;
确定单元,用于根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;
写入单元,用于将所述目标日志等级写入所述待处理日志中,得到目标日志;
判断单元,用于根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;
预聚合单元,用于当所述目标日志符合所述日志预聚合条件时,对所述目标日志进行预聚合处理,得到预聚合后的目标日志;
存入单元,用于将所述预聚合后的目标日志存入所述ClickHouse数据库中。
第三方面,本申请实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现上述方法。
本申请实施例提供了一种日志存储方法、装置、计算机设备及存储介质。其中,所述方法包括:获取待处理日志,所述待处理日志携带有日志关键字;然后根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;将所述目标日志等级写入所述待处理日志中,得到目标日志;根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;若所述目标日志符合所述日志预聚合条件,则对所述目标日志进行预聚合处理,得到预聚合后的目标日志;将所述预聚合后的目标日志存入所述ClickHouse数据库中。本方案中存入ClickHouse数据库中的日志携带有日志等级,用户在查询存储在该ClickHouse数据库中的日志时,由于查询到的日志携带有日志等级,所以用户可以根据日志携带的日志等级快速确定日志的重要性程度,提高了日志的查询效率,并且本方案对符合日志预聚合条件的日志进行了预聚合处理,当用户对进行过预聚合处理的日志进行查询时,装置不需要对再该查询进行聚合处理,节省了聚合时间,提高了装置的响应速度,进一步提高了日志的查询效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的日志存储方法的应用场景示意图;
图2为本申请实施例提供的日志存储方法的流程示意图;
图3为本申请实施例提供的日志存储方法的子流程示意图;
图4为本申请实施例提供的日志存储装置的示意性框图;
图5为本申请另一实施例提供的日志存储装置的示意性框图;
图6为本申请实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本申请实施例提供了一种日志存储方法、装置、计算机设备及存储介质。
该日志存储方法的执行主体可以是本申请实施例提供的日志存储装置,或者集成了该日志存储装置的计算机设备,其中,该日志存储装置可以采用硬件或者软件的方式实现,该计算机设备可以为终端或服务器,该终端可以是智能手机、平板电脑、掌上电脑、或者笔记本电脑等。
请参阅图1,图1为本申请实施例提供的日志存储方法的一个应用场景示意图。该日志存储方法应用于图1中的计算机设备10中,该计算机设备10获取待处理日志,所述待处理日志携带有日志关键字;然后根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;将所述目标日志等级写入所述待处理日志中,得到目标日志;将所述目标日志存入ClickHouse数据库中。
图2是本申请实施例提供的日志存储方法的流程示意图。如图2所示,该方法包括以下步骤S110-160。
S110、获取待处理日志,所述待处理日志携带有日志关键字。
请参阅图3,在一些实施例中,具体地,步骤S110包括:
S111、获取原始日志。
原始日志的种类丰富,包含异常(exception)日志、登录日志、操作日志等,本步骤的任务是对原始日志进行筛选,获取原始日志中的exception日志。
其中,由于日志的增长是爆炸性的,常用的网络协议包方式不可能处理如此海量的数据,易造成网络堵塞,系统瘫痪。综合考量,为了系统解耦、异步通信和流量削峰,本实施例采取Kafka消息队列对日志数据进行写入和消费。
此时,具体地,步骤S111包括:采集原始日志至Kafka消息队列中;然后从所述Kafka消息队列中获取所述原始日志。
在一些实施例中,系统在某些特定场景时,是需要忽略在该场景中产生的所有警告(exception日志)的,所以本实施例在消费Kafka消息队列中的原始日志时还需要过滤掉该特定场景中产生的日志,以免这些日志后续干扰用户对exception日志的查询。
此时,步骤所述从所述Kafka消息队列中获取所述原始日志具体包括:从所述Kafka消息队列中消费所述原始日志,所述原始日志中携带有日志场景信息;判断预设的过滤场景信息中是否包含所述日志场景信息;若所述过滤场景信息中不包含所述日志场景信息,则获取所述原始日志,其中,预设的过滤场景信息包括系统升级场景。
S112、确定所述原始日志中是否携带有预设的异常日志标识。
本实施例中,异常日志标识可以为exception,本步骤需要确定获取到的原始日志中是否包含有“exception”。
S113、若所述原始日志中携带有所述异常日志标识,则将所述原始日志确定为所述待处理日志。
例如若获取到的某一原始日志为:“java.rmi.ConnectException;Destinationunreachable;nested exception is:”,则确定该原始日志中携带有异常日志标识,确定该原始日志为exception日志,若该原始日志中没有携带异常日志标识,则将该原始日志进行过滤处理,只保留包含异常日志标识的原始日志。
可见,本实施例在获取到原始日志之后,会根据原始日志是否携带有异常日志标识对原始日志进行过滤处理,减少了后续处理日志的数据量,只存储exception日志至ClickHouse数据库中,当用户在ClickHouse数据库进行异常日志查询时,不需进一步对日志进行非exception日志的过滤,可以更快地响应用户的请求,提高查询响应速度。
S120、根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级。
其中,本申请可以对exception日志划分成2个或2个以上等级,本实施例以将exception日志划分成2个等级为例对本方案进行详细说明,分别为fatal以及normal两类等级,其中fatal等级的日志是影响系统运行的日志,需要及时预警和修复,也是用户需要着重关注的日志。normal等级的日志只是作为系统稳定性和开发性能的考量,不是必须处理的类型。
本实施例中,在将日志存入ClickHouse数据库之前,需要对日志打上对应的等级标签,关键字与日志等级的对应关系中存存有fatal等级的日志对应的所有关键字类型,例如,NullPointException,OutOfMemoryError,Could not create pool connection,Detination unreachable等关键字对应的日志等级为fatal等级。而在关键字与日志等级的对应关系中没有的关键字所对应的日志等级默认为normal类等级。
其中,本实施例中各种等级对应的关键字可以根据用户的需要进行修改。
但是,由于异常的情况非常多,导致fatal等级所对应的关键字多达上万个,如果只用一个线程确定待处理日志的目标日志等级的话,处理速度将非常慢。
所以,为了提高处理效率,本实施例将关键字与日志等级的对应关系拆分成多个子关键字与日志等级的对应关系,即将fatal等级对应的关键字集合拆分成多个关键字子集合,并且,为线程池中的每个线程分别分配一个子关键字与日志等级的对应关系(例如fatal等级的关键字子集合),即通过多个预设的线程分别在各所述子关键字与日志等级的对应关系中对所述日志关键字进行查找;当在所述子关键字与日志等级的对应关系中查找到所述日志关键字时,将所述日志关键字对应的日志等级确定为所述目标日志等级。
可见,本方案可以通过多线程进行日志等级的确定,提高了日志等级的确定效率。
在一些实施例中,在多线程处理的过程中,使用redis完成线程锁操作,线程锁是为了维持exception日志处理有序。
S130、将所述目标日志等级写入所述待处理日志中,得到目标日志。
本实施例中,当确定了待处理日志的日志等级之后,将会将该日志等级写入待处理日志中,得到目标日志,即目标日志中携带有对应的日志等级。
S140、根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件。
本实施例中,为了降低ClickHouse数据库中对日志进行循环聚合处理的次数,降低性能消耗,本实施例还使用redis完成日志的计数操作(在redis中的预聚合),此时,需要根据所述目标日志携带的日志关键字及日志时间判断所述目标日志是否符合预设的日志预聚合条件。
即本实施例中,在将目标日志存入ClickHouse数据库之前,首选需要判断该目标日志是否需要进行预聚合处理,如果需要,则对目标日志进行聚合处理后再存入ClickHouse数据库,否则直接将目标日志存入ClickHouse数据库中。
例如,根据经验,用户经常查询A日志在每月1号以及3号出现的次数,并且A日志比较稳定,则此时,用户设置日志预聚合条件为发生时间在每月1号或3号的A日志,此时,获取到目标日志之后,首先根据目标日志中携带的日志类型(可为日志关键字)以及日志发生时间确定该目标日志是否需要聚合,如何根据日志类型确定该目标日志为A日志,并且根据日志发生时间确定该目标日志的发生时间为1号或3号,则此时,确定该目标日志符合日志聚合条件。
S150、若所述目标日志符合所述日志预聚合条件,则对所述目标日志进行预聚合处理,得到预聚合后的目标日志。
当确定目标日志符合日志预聚合条件之后,将会对该目标日志执行进行预聚合处理,使用redis对该目标日志执行计数操作,例如,预先统计待处理日志中A日志在每月1号或3号的出现次数。
其中,对于不符合日志预聚合条件的目标日志,本实施例可以直接将该目标日志存入ClickHouse数据库中。
可见,本实施例通过对A日志的预聚合,在用户不使用的情况下,完成了部分日志的聚合操作,当用户在对A日志进行查询时,可以直接调用预聚合后的结果,不需要再查询时进行聚合,省略了计算过程,提高了系统的响应速度。
需要说明的是,步骤S140-S150也可以在步骤S120-S130之前执行,即本实施例可以先对日志进行聚合,然后对聚合后的日志打上日志等级。
S160、将所述预聚合后的目标日志存入所述ClickHouse数据库中。
在一些实施例中,可以使用redis对日志进行修改,在日志中添加日志等级,然后使用redis对符合预聚合条件的日志进行预先聚合,再将聚合后的携带有日志等级的目标日志存入ClickHouse数据库中。
其中,本实施例中的ClickHouse数据库可以为本地数据库也可以为非本地数据库,具体此处不做限定。
本实施例中的ClickHouse数据库采用基础表和统计表,基础表采用MergeTree引擎,exception日志可以以数据片段的方式连续有效的快速写入,数据片段在后台按照一定规则进行合并。相对于插入时不断修改(重写)已存储的数,这种策略会高效很多。ClickHouse数据库的统计表采用AggregateMergeTree引擎。AggregateMergeTree引擎继承自MergeTree,并改变了数据片段的合并逻辑,clickhouse会将一个数据片段内所有具有相同主键的行替换一行,这一行会存储一系列聚合函数的状态。例如函数SumState()、MinState()、MaxState()等。
可见,本实施例可以利用clickhouse数据库的存储查询效率特点,在clickhouse数据库中实现预聚合。将数据写入聚合视图表,查询时进一步减少运算,提升系统效率。
本实施例将在redis中(存入clickhouse数据库之前的预聚合处理)实现的预聚合称为第一预聚合,将在ClickHouse数据库中实现的预聚合称为第二预聚合,需要说明的是ClickHouse数据库不具有第一预聚合的聚合功能,即本实施例可以通过redis结合ClickHouse数据库对日志进行了更加全面的预聚合。
本实施例中,在将所述目标日志存入ClickHouse数据库中之后,所述方法还包括:接收日志查询请求;从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志;根据所述匹配日志携带的日志等级对所述匹配日志进行排序处理,得到日志查询结果;输出所述日志查询结果,其中,所述日志查询请求包括日志标识以及日志聚合信息,所述从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志,包括:从所述ClickHouse数据库中查找所述日志标识的对应日志;判断所述对应日志的聚合状态是否与所述日志聚合信息相对应;若所述对应日志的聚合状态与所述日志聚合信息相对应,则将所述对应日志确定为所述匹配日志;若所述对应日志的聚合状态与所述日志聚合信息不对应,则根据所述日志聚合信息对所述对应日志进行聚合处理,得到所述匹配日志。可见,查找出来的对应日志包括经过预聚合处理的日志和/或未经过预聚合处理的日志,针对该匹配日志中未进行过预聚合处理的日志,在查找到该匹配日志之后,需要先对该匹配日志进行聚合处理,然后再进行排序处理。
即,当接收到用户的日志查询请求时,将响应该日志查询请求从ClickHouse数据库中查找与该日志查询请求匹配的匹配日志,由于存入ClickHouse数据库中的日志都携带有日志等级,所以用户查询到的日志也携带有日志等级,方便用户根据日志等级对日志的重要性程度进行判断,为了进一步方便用户更快速精准地了解查询到的日志的重要性程度,如果用户查询的日志为进行过预聚合处理的日志,当用户对进行过预聚合处理的日志进行查询时,装置不需要对该查询进行聚合处理,提高了装置的响应速度,进一步提高了日志的查询效率,而且本实施例还将根据匹配日志携带的日志等级对所述日志进行排序,然后输出排序后的日志供用户查阅,方便用户快速精准地查阅到重要信息,用户对日志的查询效率高。
在一些实施例中,为了降低ClickHouse数据库的存储成本,基础表中的数据只存在3个月。3个月之后数据会在系统中自动删除。并且ClickHouse数据库中的数据经过预聚合压缩,所以对硬件的需求大大降低。
综上所述,本实施例中,获取待处理日志,所述待处理日志携带有日志关键字;然后根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;将所述目标日志等级写入所述待处理日志中,得到目标日志;然后将符合预设的日志预聚合条件的目标日志进行预聚合处理,得到预聚合后的目标日志;将预聚合后的目标日志存入ClickHouse数据库中。本方案中存入ClickHouse数据库中的日志携带有日志等级,用户在查询存储在该ClickHouse数据库中的日志时,由于查询到的日志携带有日志等级,所以用户可以根据日志携带的日志等级快速确定日志的重要性程度,提高了日志的查询效率,并且本方案对符合日志预聚合条件的日志进行了预聚合处理,当用户对进行过预聚合处理的日志进行查询时,装置不需要对再该查询进行聚合处理,节省了聚合时间,提高了装置的响应速度,进一步提高了日志的查询效率。
图4是本申请实施例提供的一种日志存储装置的示意性框图。如图4所示,对应于以上日志存储方法,本申请还提供一种日志存储装置。该日志存储装置包括用于执行上述日志存储方法的单元,该装置可以被配置于台式电脑、平板电脑、手提电脑、等终端中。具体地,请参阅图4,该日志存储装置包括获取单元401、确定单元402、写入单元403、判断单元404、预聚合单元405以及存入单元406。
获取单元401,用于获取待处理日志,所述待处理日志携带有日志关键字;
确定单元402,用于根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;
写入单元403,用于将所述目标日志等级写入所述待处理日志中,得到目标日志;
判断单元404,用于根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;
预聚合单元405,用于当所述目标日志符合所述日志预聚合条件时,对所述目标日志进行预聚合处理,得到预聚合后的目标日志;
存入单元406,用于将所述预聚合后的目标日志存入所述ClickHouse数据库中。
在一些实施例中,所述关键字与日志等级的对应关系包括多个子关键字与日志等级的对应关系,所述确定单元402具体用于:
通过多个预设的线程分别在各所述子关键字与日志等级的对应关系中对所述日志关键字进行查找;
当在所述子关键字与日志等级的对应关系中查找到所述日志关键字时,将所述日志关键字对应的日志等级确定为所述目标日志等级。
在一些实施例中,所述获取单元401具体用于:
获取原始日志;
确定所述原始日志中是否携带有预设的异常日志标识;
若所述原始日志中携带有所述异常日志标识,则将所述原始日志确定为所述待处理日志。
在一些实施例中,所述获取单元401在执行所述获取原始日志步骤时,还具体用于:
采集原始日志至Kafka消息队列中;
从所述Kafka消息队列中获取所述原始日志。
在一些实施例中,所述获取单元401在执行所述从所述Kafka消息队列中获取所述原始日志步骤时,还具体用于:
从所述Kafka消息队列中消费所述原始日志,所述原始日志中携带有日志场景信息;
判断预设的过滤场景信息中是否包含所述日志场景信息;
若所述过滤场景信息中不包含所述日志场景信息,则获取所述原始日志。
在一些实施例中,所述判断单元404在执行所述根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件之后,还用于:
若所述目标日志不符合所述日志预聚合条件,则将所述目标日志存入所述ClickHouse数据库中。
图5是本申请另一实施例提供的一种日志存储装置的示意性框图。如图5所示,本实施例的日志存储装置是上述实施例的基础上增加了接收单元407、查找单元408、排序单元409以及输出单元410。
接收单元407,用于接收日志查询请求;
查找单元408,用于从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志;
排序单元409,用于根据所述匹配日志携带的日志等级对所述匹配日志进行排序处理,得到日志查询结果;
输出单元410,用于输出所述日志查询结果。
在一些实施例中,所述日志查询请求包括日志标识以及日志聚合信息,所述查找单元408具体用于:
从所述ClickHouse数据库中查找所述日志标识的对应日志;
判断所述对应日志的聚合状态是否与所述日志聚合信息相对应;
若所述对应日志的聚合状态与所述日志聚合信息相对应,则将所述对应日志确定为所述匹配日志。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述日志存储装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述日志存储装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
请参阅图6,图6是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备600可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图6,该计算机设备600包括通过系统总线601连接的处理器602、存储器和网络接口605,其中,存储器可以包括非易失性存储介质603和内存储器604。
该非易失性存储介质603可存储操作系统6031和计算机程序6032。该计算机程序6032包括程序指令,该程序指令被执行时,可使得处理器602执行一种日志存储方法。
该处理器602用于提供计算和控制能力,以支撑整个计算机设备600的运行。
该内存储器604为非易失性存储介质603中的计算机程序6032的运行提供环境,该计算机程序6032被处理器602执行时,可使得处理器602执行一种日志存储方法。
该网络接口605用于与其它设备进行网络通信。本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备600的限定,具体的计算机设备600可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器602用于运行存储在存储器中的计算机程序6032,以实现如下步骤:
获取待处理日志,所述待处理日志携带有日志关键字;
根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;
将所述目标日志等级写入所述待处理日志中,得到目标日志;
根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;
若所述目标日志符合所述日志预聚合条件,则对所述目标日志进行预聚合处理,得到预聚合后的目标日志;
将所述预聚合后的目标日志存入所述ClickHouse数据库中。
在一些实施例中,所述关键字与日志等级的对应关系包括多个子关键字与日志等级的对应关系,处理器602在实现所述根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级步骤时,具体实现如下步骤:
通过多个预设的线程分别在各所述子关键字与日志等级的对应关系中对所述日志关键字进行查找;
当在所述子关键字与日志等级的对应关系中查找到所述日志关键字时,将所述日志关键字对应的日志等级确定为所述目标日志等级。
在一些实施例中,处理器602在实现所述获取待处理日志步骤时,具体实现如下步骤:
获取原始日志;
确定所述原始日志中是否携带有预设的异常日志标识;
若所述原始日志中携带有所述异常日志标识,则将所述原始日志确定为所述待处理日志。
在一些实施例中,处理器602在实现所述获取原始日志步骤时,具体实现如下步骤:
采集原始日志至Kafka消息队列中;
从所述Kafka消息队列中获取所述原始日志。
在一些实施例中,处理器602在实现所述从所述Kafka消息队列中获取所述原始日志步骤时,具体实现如下步骤:
从所述Kafka消息队列中消费所述原始日志,所述原始日志中携带有日志场景信息;
判断预设的过滤场景信息中是否包含所述日志场景信息;
若所述过滤场景信息中不包含所述日志场景信息,则获取所述原始日志。
在一些实施例中,处理器602在实现所述根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件步骤之后,还实现如下步骤:
若所述目标日志不符合所述日志预聚合条件,则将所述目标日志存入所述ClickHouse数据库中。
在一些实施例中,处理器602在实现所述所述目标日志存入ClickHouse数据库中步骤之后,还实现如下步骤:
接收日志查询请求;
从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志;
根据所述匹配日志携带的日志等级对所述匹配日志进行排序处理,得到日志查询结果;
输出所述日志查询结果。
在一些实施例中,所述日志查询请求包括日志标识以及日志聚合信息,处理器602在实现所述从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志步骤时,具体实现如下步骤:
从所述ClickHouse数据库中查找所述日志标识的对应日志;
判断所述对应日志的聚合状态是否与所述日志聚合信息相对应;
若所述对应日志的聚合状态与所述日志聚合信息相对应,则将所述对应日志确定为所述匹配日志。
应当理解,在本申请实施例中,处理器602可以是中央处理单元(CentralProcessing Unit,CPU),该处理器602还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本申请还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时使处理器执行如下步骤:
获取待处理日志,所述待处理日志携带有日志关键字;
根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;
将所述目标日志等级写入所述待处理日志中,得到目标日志;
根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;
若所述目标日志符合所述日志预聚合条件,则对所述目标日志进行预聚合处理,得到预聚合后的目标日志;
将所述预聚合后的目标日志存入所述ClickHouse数据库中。
在一些实施例中,所述关键字与日志等级的对应关系包括多个子关键字与日志等级的对应关系,所述处理器在执行所述程序指令而实现所述根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级步骤时,具体实现如下步骤:
通过多个预设的线程分别在各所述子关键字与日志等级的对应关系中对所述日志关键字进行查找;
当在所述子关键字与日志等级的对应关系中查找到所述日志关键字时,将所述日志关键字对应的日志等级确定为所述目标日志等级。
在一些实施例中,所述处理器在执行所述程序指令而实现所述获取待处理日志步骤时,具体实现如下步骤:
获取原始日志;
确定所述原始日志中是否携带有预设的异常日志标识;
若所述原始日志中携带有所述异常日志标识,则将所述原始日志确定为所述待处理日志。
在一些实施例中,所述处理器在执行所述程序指令而实现所述获取原始日志步骤时,具体实现如下步骤:
采集原始日志至Kafka消息队列中;
从所述Kafka消息队列中获取所述原始日志。
在一些实施例中,所述处理器在执行所述程序指令而实现所述从所述Kafka消息队列中获取所述原始日志步骤时,具体实现如下步骤:
从所述Kafka消息队列中消费所述原始日志,所述原始日志中携带有日志场景信息;
判断预设的过滤场景信息中是否包含所述日志场景信息;
若所述过滤场景信息中不包含所述日志场景信息,则获取所述原始日志。
在一些实施例中,所述处理器在执行所述程序指令而实现所述根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件步骤时,具体实现如下步骤:
若所述目标日志不符合所述日志预聚合条件,则将所述目标日志存入所述ClickHouse数据库中。
在一些实施例中,所述处理器在执行所述程序指令而实现所述将所述目标日志存入ClickHouse数据库中步骤之后,还实现如下步骤:
接收日志查询请求;
从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志;
根据所述匹配日志携带的日志等级对所述匹配日志进行排序处理,得到日志查询结果;
输出所述日志查询结果。
在一些实施例中,所述日志查询请求包括日志标识以及日志聚合信息,所述处理器在执行所述从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志步骤时,具体实现如下步骤:
从所述ClickHouse数据库中查找所述日志标识的对应日志;
判断所述对应日志的聚合状态是否与所述日志聚合信息相对应;
若所述对应日志的聚合状态与所述日志聚合信息相对应,则将所述对应日志确定为所述匹配日志。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本申请实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种日志存储方法,其特征在于,包括:
获取待处理日志,所述待处理日志携带有日志关键字;
根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;
将所述目标日志等级写入所述待处理日志中,得到目标日志;
根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;
若所述目标日志符合所述日志预聚合条件,则对所述目标日志进行预聚合处理,得到预聚合后的目标日志;
将所述预聚合后的目标日志存入所述ClickHouse数据库中。
2.根据权利要求1所述的方法,其特征在于,所述关键字与日志等级的对应关系包括多个子关键字与日志等级的对应关系,所述根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级,包括:
通过多个预设的线程分别在各所述子关键字与日志等级的对应关系中对所述日志关键字进行查找;
当在所述子关键字与日志等级的对应关系中查找到所述日志关键字时,将所述日志关键字对应的日志等级确定为所述目标日志等级。
3.根据权利要求1所述的方法,其特征在于,所述获取待处理日志,包括:
获取原始日志;
确定所述原始日志中是否携带有预设的异常日志标识;
若所述原始日志中携带有所述异常日志标识,则将所述原始日志确定为所述待处理日志。
4.根据权利要求3所述的方法,其特征在于,所述获取原始日志,包括:
采集原始日志至Kafka消息队列中;
从所述Kafka消息队列中获取所述原始日志。
5.根据权利要求4所述的方法,其特征在于,所述从所述Kafka消息队列中获取所述原始日志,包括:
从所述Kafka消息队列中消费所述原始日志,所述原始日志中携带有日志场景信息;
判断预设的过滤场景信息中是否包含所述日志场景信息;
若所述过滤场景信息中不包含所述日志场景信息,则获取所述原始日志。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述将所述目标日志存入ClickHouse数据库中之后,所述方法还包括:
接收日志查询请求;
从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志;
根据所述匹配日志携带的日志等级对所述匹配日志进行排序处理,得到日志查询结果;
输出所述日志查询结果。
7.根据权利要求6所述的方法,其特征在于,所述日志查询请求包括日志标识以及日志聚合信息,所述从所述ClickHouse数据库中查找与所述日志查询请求匹配的匹配日志,包括:
从所述ClickHouse数据库中查找所述日志标识的对应日志;
判断所述对应日志的聚合状态是否与所述日志聚合信息相对应;
若所述对应日志的聚合状态与所述日志聚合信息相对应,则将所述对应日志确定为所述匹配日志。
8.一种日志存储装置,其特征在于,包括:
获取单元,用于获取待处理日志,所述待处理日志携带有日志关键字;
确定单元,用于根据所述日志关键字以及预设的关键字与日志等级的对应关系,确定所述待处理日志的目标日志等级;
写入单元,用于将所述目标日志等级写入所述待处理日志中,得到目标日志;
判断单元,用于根据所述目标日志携带的日志关键字及所述目标日志对应的日志产生时间判断所述目标日志是否符合预设的日志预聚合条件;
预聚合单元,用于当所述目标日志符合所述日志预聚合条件时,对所述目标日志进行预聚合处理,得到预聚合后的目标日志;
存入单元,用于将所述预聚合后的目标日志存入所述ClickHouse数据库中。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111443033.XA CN114116614A (zh) | 2021-11-30 | 2021-11-30 | 日志存储方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111443033.XA CN114116614A (zh) | 2021-11-30 | 2021-11-30 | 日志存储方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114116614A true CN114116614A (zh) | 2022-03-01 |
Family
ID=80368385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111443033.XA Pending CN114116614A (zh) | 2021-11-30 | 2021-11-30 | 日志存储方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114116614A (zh) |
-
2021
- 2021-11-30 CN CN202111443033.XA patent/CN114116614A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110708204B (zh) | 一种基于运维知识库的异常处理方法、系统、终端及介质 | |
CN110928718B (zh) | 一种基于关联分析的异常处理方法、系统、终端及介质 | |
CN103513983B (zh) | 用于预测性警报阈值确定工具的方法和系统 | |
US10409980B2 (en) | Real-time representation of security-relevant system state | |
US20070143246A1 (en) | Method and apparatus for analyzing the effect of different execution parameters on the performance of a database query | |
CN109446225B (zh) | 数据缓存方法、装置、计算机设备及存储介质 | |
CN111339293A (zh) | 告警事件的数据处理方法、装置和告警事件的分类方法 | |
CN111124791A (zh) | 一种系统测试方法及装置 | |
CN108733543B (zh) | 一种日志分析的方法、装置、电子设备和可读存储介质 | |
CN117312825A (zh) | 一种目标行为检测方法、装置、电子设备及存储介质 | |
CN112287339A (zh) | Apt入侵检测方法、装置以及计算机设备 | |
CN109995834A (zh) | 大流量数据处理方法、装置、计算设备及存储介质 | |
CN111488736A (zh) | 自学习分词方法、装置、计算机设备和存储介质 | |
CN113472582B (zh) | 用于信息技术监控中的警报关联和警报聚合的系统和方法 | |
CN107330031B (zh) | 一种数据存储的方法、装置及电子设备 | |
CN114116614A (zh) | 日志存储方法、装置、计算机设备及存储介质 | |
CN115269519A (zh) | 一种日志检测方法、装置及电子设备 | |
CN113626387A (zh) | 一种任务数据的导出方法、装置、电子设备及存储介质 | |
CN111563250A (zh) | 权限管理方法、装置、计算机设备和存储介质 | |
CN116647412B (zh) | 一种Web服务器的安全防御方法和系统 | |
CN110851249A (zh) | 一种数据导出的方法及设备 | |
CN116795974A (zh) | 日志检索的方法、日志检索装置、设备及存储介质 | |
Zarbo | Statistical and Graph-based approaches for Anomaly Detection in company networks | |
CN117217540A (zh) | 样本构建方法、装置、设备、介质及程序产品 | |
CN117390023A (zh) | 数据合计方法、数据合计装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |