CN112988798A - 一种日志处理方法、装置、设备及介质 - Google Patents
一种日志处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112988798A CN112988798A CN202110333018.3A CN202110333018A CN112988798A CN 112988798 A CN112988798 A CN 112988798A CN 202110333018 A CN202110333018 A CN 202110333018A CN 112988798 A CN112988798 A CN 112988798A
- Authority
- CN
- China
- Prior art keywords
- counter
- time
- key
- log
- queried
- 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.)
- Granted
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提出了一种日志处理方法、装置、设备、介质,该方法包括:获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务;根据所述计数器信息中的计数器名称、时间粒度和日志数据中与所述计数器信息中的时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器;从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。这样能够对日志数据进行实时统计,且能够提高日志统计信息的查询响应速度,提高了日志处理的灵活性。
Description
技术领域
本公开涉及数据库技术领域,特别涉及一种日志处理方法、装置、设备、介质。
背景技术
在安全态势感知***中,每天都要从安全设备采集并存储数十万条安全日志,这些日志数据经过ETL后保存在数据库中,数据的保存时限通常要求在1年以上,其中,ETL,为Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。在安全态势感知***的UI(User Interface,用户界面)上要提供基于日志数据的各类统计图表(如24小时攻击目的地址Top5、7天攻击事件分布趋势等),以方便安全分析人员分析现网的安全状况,查找高危问题。
由于安全日志的数据量巨大,直接通过SQL(Structured Query Language,结构化查询语言)语句进行查询统计,但是直接通过sql语句进行查询统计响应时间太长,所以目前常用的做法是预先对各种指标定义小时表、天表、月表等统计表,每天定时进行汇总入库,在实际统计时根据不同的时间粒度查询不同的表,响应时间比直接在原始数据表里查询要短。但是,定义不同时间粒度统计表的方式,要求预先定义好数据库表,如果在***运行中需要新增统计指标,那么要设计新的统计表和新的sql汇总脚本,灵活性较低。且在原始表数据保存时间很长,汇总表数据量也会相应变大时,如果不进行表的拆分,查询效率也会下降,同时由于汇总表是定时更新,不能满足一些实时统计的需求。
发明内容
有鉴于此,本公开的目的在于提供一种日志处理方法、装置、设备、介质,能够对日志数据进行实时统计,且能够提高日志统计信息的查询响应速度,提高了日志处理的灵活性。其具体方案如下:
第一方面,本公开提出了一种日志处理方法,应用于redis数据库,包括:
获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息;
根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器;
从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。
可选地,所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息之前,还包括:
从预设的计数器定义文件中读取所述计数器信息,其中,所述计数器定义文件为YAML格式的文件;
根据所述计数器信息进行计数器注册,并将所述计数器信息存入所述计数器注册表中;
对所述日志数据进行处理,将所述日志数据转换成数据结构统一的数据。
可选地,所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息之前,还包括:
在所述日志数据的入库方法中添加注解,以便在所述redis数据库获取到所述日志数据时,执行所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息开始的步骤。
可选地,所述根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,包括:
根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息确定预生成计数器key;
判断所述预生成计数器key是否已存在于所述redis数据库中;
如果所述预生成计数器key还未存在于所述redis数据库中,则利用所述预生成计数器key生成所述计数器key。
可选地,所述利用所述目标信息更新所述计数器key对应的计数器,包括:
将所述目标信息存入到所述计时器key对应的计数器中的有序集合和/或散列中;
对所述有序集合和/或所述散列中所述目标信息对应的计数值进行更新;
如果所述计数器key在获取到所述日志数据时还未存在所述redis数据库中,则配置所述计数器key的过期时间,以便在达到所述过期时间时,将所述计时器key对应的计数器删除。
可选地,所述日志处理方法,还包括:
获取日志统计查询指令,其中,所述日志统计查询指令包括指标变化趋势查询指令和指标排行查询指令,所述指标变化趋势查询指令用于查询所述redis数据库中的日志数据中目标指标的变化趋势,所述指标排行查询指令用于查询所述redis数据库中的日志数据中目标指标的排行信息;
调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果。
可选地,所述调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果,包括:
调用预设接口对所述指标变化趋势查询指令对应的待查询计数器进行查询,并返回所述指标变化趋势查询指令对应的查询结果,其中,所述指标变化趋势查询指令中包括待查询计数器名称、待查询指标、待查询时间粒度、待查询时间范围及查询开始时间。
可选地,所述调用预设接口对所述指标变化趋势查询指令对应的待查询计数器进行查询,并返回所述指标变化趋势查询指令对应的查询结果,包括:
基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key,其中,所述第一待查询时间key表示待查询时间;
基于所述待查询计数器名称和所述第一待查询时间key确定第一待查询计数器key;
查询所述第一待查询计数器key对应的第一待查询计数器中所述待查询指标对应的计数值,并返回所述待查询指标对应的计数值。
可选地,所述调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果,包括:
调用预设接口对所述指标排行查询指令对应的待查询计数器进行查询,并返回所述指标排行查询指令对应的查询结果,其中,所述指标排行查询指令中包括待查询计数器名称、待查询时间粒度、待查询时间范围、查询开始时间及排行范围。
可选地,所述调用预设接口对所述指标排行查询指令对应的待查询计数器进行查询,并返回所述指标排行查询指令对应的查询结果,包括:
基于所述待查询时间粒度、所述待查询时间范围及所述查询开始时间确定出第二待查询时间key,其中,所述第二待查询时间key表示待查询时间;
基于所述待查询计数器名称和所述第二待查询时间key确定第二待查询计数器key;
对各个所述第二待查询计数器key对应的第二待查询计数器进行合并,生成合并后计数器;
将所述合并后计数器中计数值排行满足所述排行范围的指标信息作为所述指标排行查询指令对应的查询结果进行返回。
第二方面,本公开提出了一种日志处理装置,应用于redis数据库,所述redis数据库中包括计数器记录模块,所述计数器记录模块,包括:
查询单元,用于获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息;
Key生成单元,用于根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器;
计数单元,用于从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。
第三方面,本公开提出了一种电子设备,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现前述公开的日志处理方法。
第四方面,本公开提出了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的日志处理方法。
可见,本公开应用于redis数据库,在获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息,然后根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器,再从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。由此可见,本公开中在数据库获取日志数据时,便对日志数据进行实时统计操作,能够得到实时统计数据,日志数据入库时便更新计数器,避免了后期再汇总消耗的资源。在对日志数据进行统计的过程中,可以基于已注册的计数器信息以及日志数据中的时间信息生成计数器key,并将日志数据的相关信息更新至生成的计数器key对应的计数器中,计数器可以基于已注册的计数器信息以及日志数据中的时间信息动态进行添加,提高了日志处理的灵活性。且计数器中包括的是对数据库中存储的日志数据进行统计得到结果,所以在计算器查询时,不会触发额外的统计操作,查询效率不会随着原始数据的增长而降低,提高了日志统计信息的查询响应速度。此外,由于redis数据库高速读写的特点,redis数据库中的计数器的更新和查询速度都非常快。且由于redis数据库的事务和管道功能,可以把原本计数器更新过程中需要与redis数据库交互数百次才能完成的更新操作缩减为了几次,提升了计数器的效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本公开提出的一种日志处理方法流程图;
图2为本公开提出的一种指标属性字段为攻击目标IP的一维计数器的存储结构;
图3为本公开提出的一种为指标属性字段为攻击目标IP和攻击类型的二维计数器的存储结构;
图4为本公开提出的一种日志数据的数据结构;
图5为本公开提出的一种具体的日志处理流程图;
图6为本公开提出的一种具体的日志处理方法流程图;
图7为本公开提出的一种日志统计信息查询流程图;
图8为本公开提出的一种日志统计信息查询流程图;
图9为本公开提出的一种日志统计信息查询流程图;
图10为本公开提出的一种日志统计信息查询流程图;
图11为本公开提出的一种日志处理装置结构示意图;
图12为本公开提出的一种电子设备结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
参见图1所示,本公开实施例公开了一种日志处理方法,应用于redis数据库,该方法包括:
步骤S11:获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息。
在具体的实施过程中,在获取到日志数据时,需要先从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,所述计数器注册表中包括已注册的计数器的信息,各个所述计数器用于对所述redis数据库获取到的日志进行统计,计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息。例如,所述属性字段可以为攻击目标IP(Internet Protocol,网际互连协议)。
Redis数据库是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD(Berkeley Software Distribution,伯克利软件发行版)协议、提供多种语言的API(Application Programming Interface,应用程序接口)。Redis数据库最大的特性是会将所有数据都放在内存中,所以读写速度性能非常好。Redis数据库也支持将内存中的数据以快照和日志的形式持久化到硬盘,这样即使在断电、机器故障等异常情况发生时数据也不会丢失。Redis数据库拥有丰富的数据类型,如字符串、散列、列表、集合、有序集合等。Redis数据库支持事务,操作都是原子性,支持按key设置过期时间,过期后数据将会自动删除,正是因为Redis数据库丰富的数据类型,所以能应用的场景非常多。所述计数器将使用到有序集合、散列两种数据结构,以及这两种数据结构相关的命令和key自动过期功能。
所述计数器的存储结构包括有序集合,或有序集合加上散列。所述计数器信息中的指标属性字段可以由一维到N维,比如,仅根据攻击目标IP进行统计,这是一维统计。根据攻击目标IP进行统计,同时统计每一个攻击目标IP下的攻击类型分布,这是二维统计。考虑到图表展现的直观性,实际场景中的统计数据都是一维或者二维的,因此本公开中所述的计数器主要针对这两种统计数据来设计存储结构,其中,所述指标属性字段为一维计数,则所述计数器使用redis数据库的有序集合进行数据存储,所述指标属性字段为二维计数,则所述计数器在有序集合的基础上关联散列进行数据存储。
Redis数据库的有序集合(zset)可以保存一系列不重复的元素,每一个元素包含两个属性:成员(member)和分值(score),并且提供了分值的处理命令(增加或减少),以及根据分值大小有序地获取或扫描成员和分值的命令(可以快速进行排序)。在一维的计数器中,有序集合的一个元素代表一个分类计数,其中,member存储分类名,score存储计数值,例如,所述指标属性字段为攻击目标IP的计数器中,member存储的是具体的攻击目标IP地址,score存储的是攻击目标IP地址发生的次数。例如,图2所示,为指标属性字段为攻击目标IP的一维计数器的存储结构。指标属性字段仅为攻击目标IP,所以为一维的计数器,采用有序集合(ZSET)进行计数,member存储的是具体的攻击目标IP地址,score存储的是攻击目标IP地址发生的次数。例如,攻击目标IP为10.1.2.3时,发生次数为12。攻击目标IP为10.1.2.5时,发生次数为18。攻击目标IP为10.1.3.13时,发生次数为78。攻击目标IP为10.2.5.1时,发生次数为115等。
Redis数据库的散列可以让用户将多个键值对(subKey-value)存储到一个key里,使得散列非常适用于将一些相关的数据存储在一起。在二维的计数器中,第一维的数据依然使用有序集合进行存储,第二维的数据使用散列进行关联,其中,散列的key存储分类名,subKey存储子分类,value存储计数值,散列的key存储分类名可以为计数器名称加上有序集合中的member的内容的形式。例如,攻击目标IP和攻击类型的计数器中,key存储包括具体的IP地址,例如为attack:destip:type:count:10.1.2.3,其中,attack:destip:type:count为计数器名称,10.1.2.3为具体的攻击目标IP地址,subKey存储的是攻击类型,value存储的是攻击类型发生的次数。参见图3所示。为指标属性字段为攻击目标IP和攻击类型的二维计数器的存储结构。在图2的基础上关联散列来存储攻击类型相关的信息,例如,散列对应的key为attack:destip:type:count:10.1.2.3,其散列中存储的subKey包括XSS注入,对应的次数为3,SQL注入,对应的次数为5等。散列对应的key为attack:destip:type:count:10.2.5.1,其散列中存储的subKey包括XSS注入,对应的次数为18,SQL注入,对应的次数为36等。
在获取到日志数据时,从计数器注册表中查询已注册的计数器信息之前,还包括:从预设的计数器定义文件中读取所述计数器信息,其中,所述计数器定义文件为YAML(YAMLAin't Markup Language)格式的文件;根据所述计数器信息进行计数器注册,并将所述计数器信息存入所述计数器注册表中;对所述日志数据进行处理,将所述日志数据转换成数据结构统一的数据。
也即,需要先根据预设的计数器定义文件中包括的所述计数器信息进行计数器注册,并将所述计数器信息存入到所述计数器注册表中。所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息。
具体的,计数器名称(name)需要全局唯一,以便代码执行时通过这个名称查找计数器。指标属性字段(categoryField,subCategoryField)为从日志数据中选取的一个(一维统计)或两个(二维统计)属性做为要统计的指标属性,例如,攻击目标IP,攻击类型等。计数器支持的时间粒度(timeUnit)有:分钟(m)、5分钟(5m)、小时(h)、天(d)、周(w)、月(M)、年(y)、所有(a)这几种类型,每一种计数器都有默认的保存期限,一旦过期就会自动删除,例如,分钟计数器的默认保存期限是60分钟,小时计数器的默认保存期限是24小时,天计数器的默认保存期限是31天,在设置时可以自定义保存期限。时间属性字段(timeField)也即需要读取所述日志数据中的时间信息。此外,所述计数器信息还可以包括计数器别名(alias),可以为计数器指定可读性强的别名,用于查询展示。所述计数器定义文件的格式可以如下所示:
counters:
-name:attack:destip:type:count
alias:‘攻击IP类型计数’
categoryField:destIp
subCategoryField:eventName
timeUnit:h(48)|d|M(6)|A
timeField:eventGenerateTime
-name:event:type:count
alias:‘事件类型计数’
categoryField:opObjectType
timeUnit:h|d|w|M
timeField:eventGenerateTime
h(48)表示将时间粒度为小时时候的保存期限从默认的24小时改为48小时,M(6)表示将时间粒度为月时候的保存期限从默认改为6个月。
在预设的所述计数器定义文件中读取到所述计数器信息,便可以根据所述计数器信息进行计数器注册,在注册之后,将所述计数器信息存储到所述计数器注册信息表中,以便后续更新计数器以及计数器查询时所使用。这样可以动态添加或者删除计数器,灵活性好。
为了便于进行日志统计,提高日志处理时的效率,还需要对所述日志数据进行处理,将所述日志数据转换成数据结构统一的数据。这样才方便从所述日志数据中提取出预设字段的信息,否则可能由于数据结构不统一导致找不到对应字段的信息。其中,所述日志数据的数据结构可以统一成图4所示。
在获取到所述日志数据时,需要先从所述计数器注册表中查询已注册的计数器信息,是为了确定所述redis数据库中包括哪些类型的计数器,需要利用所述日志数据更新哪些计数器。确定出所述redis数据库中包括哪些类型的计数器之后,便可以开启redis数据库,以对所述日志数据进行统计。
步骤S12:根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器。
可以理解的是,还需要根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器。
具体的,同一个计数器名称对对应不同的时间粒度,所以同一个计数器名称会对应多个计数器key,例如,计数器名称为attack:destip:type:count,时间粒度为天和月,如果从2020年12月20日注册该计数器,则所述计数器名称对应的计数器key可以包括attack:destip:type:count:20201221、attack:destip:type:count:20201222、attack:destip:type:count:20201223等等,还可以包括attack:destip:type:count:202012、attack:destip:type:count:202101。每个计数器又有自身对应的计数器。所以需要根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,以便于确定具体需要更新的计数器。
具体的,根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,包括:根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息确定预生成计数器key;判断所述预生成计数器key是否已存在于所述redis数据库中;如果所述预生成计数器key还未存在于所述redis数据库中,则利用所述预生成计数器key生成所述计数器key。所述预生成计数器key的数量大于或等于1。
也即,先根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息确定想要生成的预生成计数器key,实际上是否需要生成预生成计数器key对应的计数器key,需要判断所述redis数据库中是否已经存在所述预生成计数器key,如果还不存在,则利用所述预生成计数器key生成计数器key,如果已经存在,则表明预生成计数器key对应的计数器已经存在,不需要新生成。
例如,如果计数器的名称是event:type:count,支持的时间粒度是小时、天、周、月,日志数据中的时间信息为2018-10-17T11:13:52.000+0800,那预生成计数器key有4个,代表4种时间粒度的计数器,预生成计数器key如下:
event:type:count:2018101711
event:type:count:20181017
event:type:count:2018-45
event:type:count:201810
然后便需要判断上述各个预生成计数器key是否已存在所述redis数据库中,如果是,则不需生成对应的计数器key,如果不存在,则需要生成新的计数器key。例如,event:type:count:2018101711还未存在所述redis数据库中,则生成计数器key:event:type:count:2018101711。
步骤S13:从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。
可以理解的是,还需要从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务,所述计数器key对应计数器包括有序集合,或有序集合加上散列。
利用所述目标信息更新所述计数器key对应的计数器,包括:将所述目标信息存入到所述计时器key对应的计数器中的有序集合和/或散列中;对所述有序集合和/或所述散列中所述目标信息对应的计数值进行更新;如果所述计数器key在获取到所述日志数据时还未存在所述redis数据库中,则配置所述计数器key的过期时间,以便在达到所述过期时间时,将所述计时器key对应的计数器删除。
也即,将所述目标信息存入到所述计时器key对应的计数器中的有序集合中的member和/或散列中的subKey中,然后将对应的计数值进行累加。如果所述目标信息已存在计时器key对应的计数器中的有序集合中的member和/或所述散列中的subKey中,则可以直接对对应的计数值进行更新。
例如,所述指标属性字段为攻击目标IP,所述计数器key为attack:destip:type:count:2018101711,则将所述日志数据中的攻击目标IP地址提取出来,然后利用提取出来的目标IP地址更新attack:destip:type:count:2018101711对应的计数器。由于所述指标属性字段仅包括攻击目标IP,也即,一维计数器,所以attack:destip:type:count:2018101711对应的计数器为有序集合,如果该有序集合中的member还未存在本次提取出的攻击目标IP,则将提取出的攻击目标IP存储到序集合中的member中,并更新对应的计数值,如果该有序集合中的member已存在本次提取出的攻击目标IP,则直接更新对应的计数值。
具体的,调用redis数据库的increment(redisKey,member,N)命令,可以直接对对应的计数器进行加N操作,N为需要累加的计数值。如果计数器之前没有值,则默认置为N,如果是二维计数器,再调用increment(member,subKey,1)命令,完成对二维计数器的更新操作。
此外,更新所述计数器key对应的计数器之后,还包括:如果所述计数器key在获取到所述日志数据时还未存在所述redis数据库中,则配置所述计数器key的过期时间,以便在达到所述过期时间时,将所述计时器key对应的计数器删除。也即,如果所述计数器key为新生成的计数器key,还需要配置所述计数器key的过期时间,以便在达到所述过期时间时,将所述计时器key对应的计数器删除。如果在获取到所述日志数据时,所述计数器key已存在所述redis数据库中,则已经设置过所述计数器key的过期时间。具体的,可以调用redis数据库的expire(redisKey,ttl)命令,可以设置计数器的过期时间,计数器过期后,会自动删除,节约内存空间。不同时间粒度的计数器,保存时间范围不一样,计数器到期后会自动删除,无需人工干预,节约内存空间。
如果所述日志数据包括多条日志数据,则可以先通过内部循环得出累加值后再写入redis数据库中的计数器中,以提高效率。
结束redis事务时,之前对redis数据库的操作才实际执行,既保证了操作结果一致,又提升了效率,实际测试中,一千条日志数据的情况下,能在数十毫秒内完成计数器的记录操作。
可见,本公开应用于redis数据库,在获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息,然后根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器,再从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。由此可见,本公开中在数据库获取日志数据时,便对日志数据进行实时统计操作,能够得到实时统计数据,日志数据入库时便更新计数器,避免了后期再汇总消耗的资源。在对日志数据进行统计的过程中,可以基于已注册的计数器信息以及日志数据中的时间信息生成计数器key,并将日志数据的相关信息更新至生成的计数器key对应的计数器中,计数器可以基于已注册的计数器信息以及日志数据中的时间信息动态进行添加,提高了日志处理的灵活性。且计数器中包括的是对数据库中存储的日志数据进行统计得到结果,所以在计算器查询时,不会触发额外的统计操作,查询效率不会随着原始数据的增长而降低,提高了日志统计信息的查询响应速度。此外,由于redis数据库高速读写的特点,redis数据库中的计数器的更新和查询速度都非常快。且由于redis数据库的事务和管道功能,可以把原本计数器更新过程中需要与redis数据库交互数百次才能完成的更新操作缩减为了几次,提升了计数器的效率。
参见图5所示,为日志处理流程图。首先取得日志数据,然后从计数器注册表查询出计数器信息,开启redis数据库事务,还可以判断是否有未处理的计时器,也即,判断是否需要根据所述日志数据更新redis数据库中已注册的计数器。如果需要,则根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,从所述日志数据中提取出所述指标属性字段对应的目标信息作为有序集合中的member和/或散列中的subKey,对所述有序集合和/或所述散列中所述目标信息对应的计数值进行更新,在所述计数器key为新生成的时,则设置所述计数器key的过期时间,判断是否处理完所述日志信息对应的计数器key,如果是,则判断是否还有未处理的计数器,如果没有了,则结束redis数据库事务。
在具体的实施过程中,可以在获取到日志数据时,从计数器注册表中查询已注册的计数器信息之前,还包括:在所述日志数据的入库方法中添加注解,以便在所述redis数据库获取到所述日志数据时,执行所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息开始的步骤。也即,可以在所述日志数据的入库方法中添加@addCounter注解,这样在所述redis数据库获取到所述日志数据时,便会执行所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息开始的步骤。这样计数器使用简单,主要工作是定义计数器定义文件,然后在日志数据更新入库的方法上添加相应注解。
参见图6所示,本公开实施例公开了一种具体的日志处理方法,应用于redis数据库,该方法包括:
步骤S21:获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息。
步骤S22:根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器。
步骤S23:从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。
步骤S21至步骤S23的具体实施过程可以参考前述实施例中公开的内容,在此不再进行赘述。
步骤S24:获取日志统计查询指令,其中,所述日志统计查询指令包括指标变化趋势查询指令和指标排行查询指令,所述指标变化趋势查询指令用于查询所述redis数据库中的日志数据中目标指标的变化趋势,所述指标排行查询指令用于查询所述redis数据库中的日志数据中目标指标的排行信息。
所述日志处理方法,还包括:获取日志统计查询指令,以便对计数器中统计的日志信息进行查询,其中,所述日志统计查询指令包括指标变化趋势查询指令和指标排行查询指令,所述指标变化趋势查询指令用于查询所述redis数据库中的日志数据中目标指标的变化趋势,例如,最近7天攻击趋势。所述指标排行查询指令用于查询所述redis数据库中的日志数据中目标指标的排行信息,例如,最近24小时被攻击目标IP Top5。
步骤S25:调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果。
可以理解的是,在获取到所述日志统计查询指令之后,还包括调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回对应的查询结果。
具体的,调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果,包括:调用预设接口对所述指标变化趋势查询指令对应的待查询计数器进行查询,并返回所述指标变化趋势查询指令对应的查询结果,其中,所述指标变化趋势查询指令中包括待查询计数器名称、待查询指标、待查询时间粒度、待查询时间范围及查询开始时间。
具体的,调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果,包括:调用预设接口对所述指标排行查询指令对应的待查询计数器进行查询,并返回所述指标排行查询指令对应的查询结果,其中,所述指标排行查询指令中包括待查询计数器名称、待查询时间粒度、待查询时间范围、查询开始时间及排行范围。
参见图7所示,所述调用预设接口对所述指标变化趋势查询指令对应的待查询计数器进行查询,并返回所述指标变化趋势查询指令对应的查询结果,包括:
步骤S31:基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key,其中,所述第一待查询时间key表示待查询时间。
步骤S32:基于所述待查询计数器名称和所述第一待查询时间key确定第一待查询计数器key。
步骤S33:查询所述第一待查询计数器key对应的第一待查询计数器中所述待查询指标对应的计数值,并返回所述待查询指标对应的计数值。
当所述日志统计查询指令为所述指标变化趋势查询指令时,所述预设接口调用便可以为List<Map<String,Long>>timeUnitCounter(String counter,String category,String timeUnit,int timeRange,Date startDate),其中,counter为待查询计数器名称,category为待查询指标,timeUnit为待查询时间粒度,timeRange为待查询时间范围,startDate为查询开始时间。例如,查询并返回10.1.2.3这个IP地址最近24小时被攻击的趋势,就可以为:timeUnitCounter(“attack:destip:count”,“10.1.2.3”,“hour”,24,now())。
首先基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key。例如,所述查询开始时间为2018年10月17日11时,待查询时间范围为过去24小时,待查询时间粒度为小时,则所述第一待查询时间key如下:
2018101711
2018101710
2018101709
2018101708
……
2018101612
然后再基于所述待查询计数器名称和所述第一待查询时间key确定第一待查询计数器key。例如,待查询计数器名称为attack:destip:count,则所述第一待查询计数器key如下:
attack:destip:count:2018101711
attack:destip:count:2018101710
attack:destip:count:2018101709
attack:destip:count:2018101708
……
attack:destip:count:2018101612
接着便可以查询所述第一待查询计数器key对应的第一待查询计数器中所述待查询指标对应的计数值score,并返回所述待查询指标对应的计数值score。score值即是计数值,如果有二维指标,则通过attack:destip:count:10.1.2.3:2018101711这样的二维指标的计数器key去查询具体的计数值。
参见图8所示,为日志统计信息查询流程图。首先基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key。然后基于所述待查询计数器名称和所述第一待查询时间key确定第一待查询计数器key。判断是否还有未处理的第一待查询计数器key,如果有,则查询所述第一待查询计数器key对应的第一待查询计数器中所述待查询指标对应的计数值。如果没有,则将所述待查询指标对应的计数值合并及返回。
参见图9所示,所述调用预设接口对所述指标排行查询指令对应的待查询计数器进行查询,并返回所述指标排行查询指令对应的查询结果,包括:
步骤S41:基于所述待查询时间粒度、所述待查询时间范围及所述查询开始时间确定出第二待查询时间key,其中,所述第二待查询时间key表示待查询时间。
步骤S42:基于所述待查询计数器名称和所述第二待查询时间key确定第二待查询计数器key。
步骤S43:对各个所述第二待查询计数器key对应的第二待查询计数器进行合并,生成合并后计数器。
步骤S44:将所述合并后计数器中计数值排行满足所述排行范围的指标信息作为所述指标排行查询指令对应的查询结果进行返回。
当所述日志统计查询指令为所述指标变化趋势查询指令时,所述预设接口调用便可以为List<Map<String,Long>>aggregateCounter(String counter,String timeUnit,int timeRange,Date startDate,int topN),其中,counter待查询计数器名称,timeUnit待查询时间粒度,timeRange待查询时间范围,startDate查询开始时间,topN表示排行范围。例如,查询并返回最近7天排名前5位的被攻击目标IP地址。就可以为:aggregateCounter(“attack:destip:count”,“day”,7,now(),5)。
首先基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key。然后基于所述待查询计数器名称和所述第二待查询时间key确定第二待查询计数器key。接着对各个所述第二待查询计数器key对应的第二待查询计数器进行合并,生成合并后计数器。具体的,可以调用redis数据库的zunionStore(keySet,tmpKey)命令对对各个所述第二待查询计数器key对应的第二待查询计数器求并集,各个第二待查询计数器中相同member的score值会累加,member在生成的合并后计数器中的临时有序集合中按新的score排序。
然后再将所述合并后计数器中计数值排行满足所述排行范围的指标信息作为所述指标排行查询指令对应的查询结果进行返回。所述指标信息可以为攻击目标IP,攻击类型等。具体的,可以调用redis的zrevRange(tmpKey,0,topN)命令返回合并后计时器中的有序集合中score排名topN的元素,如果有二维指标,那么对于每一个topN的元素,到每一个二维计数器key中查出二维指标进行合并。
参见图10所示,为日志统计信息查询流程图。首先基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key。然后基于所述待查询计数器名称和所述第二待查询时间key确定第二待查询计数器key。接着对各个所述第二待查询计数器key对应的第二待查询计数器进行合并,生成合并后计数器。从合并后计时器中的有序集合中取出score排名topN的元素,并进行格式化结果返回。
参见图11所示,本公开实施例公开了一种日志处理装置,应用于redis数据库,所述redis数据库中包括计数器记录模块11,所述计数器记录模块11,包括:
查询单元111,用于获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息;
Key生成单元112,用于根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器;
计数单元113,用于从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务,其中,所述计数器key对应计数器包括有序集合和/或散列。
可见,本公开应用于redis数据库,在获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息,然后根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器,再从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。由此可见,本公开中在数据库获取日志数据时,便对日志数据进行实时统计操作,能够得到实时统计数据,日志数据入库时便更新计数器,避免了后期再汇总消耗的资源。在对日志数据进行统计的过程中,可以基于已注册的计数器信息以及日志数据中的时间信息生成计数器key,并将日志数据的相关信息更新至生成的计数器key对应的计数器中,计数器可以基于已注册的计数器信息以及日志数据中的时间信息动态进行添加,提高了日志处理的灵活性。且计数器中包括的是对数据库中存储的日志数据进行统计得到结果,所以在计算器查询时,不会触发额外的统计操作,查询效率不会随着原始数据的增长而降低,提高了日志统计信息的查询响应速度。此外,由于redis数据库高速读写的特点,redis数据库中的计数器的更新和查询速度都非常快。且由于redis数据库的事务和管道功能,可以把原本计数器更新过程中需要与redis数据库交互数百次才能完成的更新操作缩减为了几次,提升了计数器的效率。
在一些具体的实施过程中,所述日志处理装置,还包括:
计数器注册模块12,用于从预设的计数器定义文件中读取所述计数器信息,其中,所述计数器定义文件为YAML格式的文件;根据所述计数器信息进行计数器注册,并将所述计数器信息存入所述计数器注册表中;
数据处理模块,用于对所述日志数据进行处理,将所述日志数据转换成数据结构统一的数据。
在一些具体的实施过程中,所述日志处理装置,还包括:
注解添加模块13,用于在所述日志数据的入库方法中添加注解,以便在所述redis数据库获取到所述日志数据时,执行所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息开始的步骤。
在一些具体的实施过程中,所述Key生成单元112,用于:
根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息确定预生成计数器key;
判断所述预生成计数器key是否已存在于所述redis数据库中;
如果所述预生成计数器key还未存在于所述redis数据库中,则利用所述预生成计数器key生成所述计数器key。
在一些具体的实施过程中,所述计数单元113,用于:
将所述目标信息存入到所述计时器key对应的计数器中的有序集合和/或散列中;
对所述有序集合和/或所述散列中所述目标信息对应的计数值进行更新;
如果所述计数器key在获取到所述日志数据时还未存在所述redis数据库中,则配置所述计数器key的过期时间,以便在达到所述过期时间时,将所述计时器key对应的计数器删除。
在一些具体的实施过程中,所述日志处理装置,还包括:
计数器查询模块14,用于获取日志统计查询指令,其中,所述日志统计查询指令包括指标变化趋势查询指令和指标排行查询指令,所述指标变化趋势查询指令用于查询所述redis数据库中的日志数据中目标指标的变化趋势,所述指标排行查询指令用于查询所述redis数据库中的日志数据中目标指标的排行信息;调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果。
在一些具体的实施过程中,所述计数器查询模块14,用于:
调用预设接口对所述指标变化趋势查询指令对应的待查询计数器进行查询,并返回所述指标变化趋势查询指令对应的查询结果,其中,所述指标变化趋势查询指令中包括待查询计数器名称、待查询指标、待查询时间粒度、待查询时间范围及查询开始时间。
在一些具体的实施过程中,所述计数器查询模块14,用于:
基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key,其中,所述第一待查询时间key表示待查询时间;
基于所述待查询计数器名称和所述第一待查询时间key确定第一待查询计数器key;
查询所述第一待查询计数器key对应的第一待查询计数器中所述待查询指标对应的计数值,并返回所述待查询指标对应的计数值。
在一些具体的实施过程中,所述计数器查询模块14,用于:
调用预设接口对所述指标排行查询指令对应的待查询计数器进行查询,并返回所述指标排行查询指令对应的查询结果,其中,所述指标排行查询指令中包括待查询计数器名称、待查询时间粒度、待查询时间范围、查询开始时间及排行范围。
在一些具体的实施过程中,所述计数器查询模块14,用于:
基于所述待查询时间粒度、所述待查询时间范围及所述查询开始时间确定出第二待查询时间key,其中,所述第二待查询时间key表示待查询时间;
基于所述待查询计数器名称和所述第二待查询时间key确定第二待查询计数器key;
对各个所述第二待查询计数器key对应的第二待查询计数器进行合并,生成合并后计数器;
将所述合并后计数器中计数值排行满足所述排行范围的指标信息作为所述指标排行查询指令对应的查询结果进行返回。
进一步的,本公开实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的日志处理方法。
其中,关于上述日志处理方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
图12是根据一示例性实施例示出的一种电子设备20的框图。该电子设备20包括处理器21和存储器22。该电子设备20还可以包括多媒体组件23,输入/输出(I/O)接口24,以及通信组件25中的一者或多者。
其中,处理器21用于控制该电子设备20的整体操作,以完成上述的多用户名口令认证方法中的全部或部分步骤。存储器22用于存储各种类型的数据以支持在该电子设备20的操作,这些数据例如可以包括用于在该电子设备20上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器22可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件23可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器22或通过通信组件25发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口24为处理器21和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件25用于该电子设备20与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件25可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备20可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的日志处理方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (13)
1.一种日志处理方法,其特征在于,应用于redis数据库,包括:
获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息;
根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器;
从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。
2.根据权利要求1所述的日志处理方法,其特征在于,所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息之前,还包括:
从预设的计数器定义文件中读取所述计数器信息,其中,所述计数器定义文件为YAML格式的文件;
根据所述计数器信息进行计数器注册,并将所述计数器信息存入所述计数器注册表中;
对所述日志数据进行处理,将所述日志数据转换成数据结构统一的数据。
3.根据权利要求1所述的日志处理方法,其特征在于,所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息之前,还包括:
在所述日志数据的入库方法中添加注解,以便在所述redis数据库获取到所述日志数据时,执行所述获取到日志数据时,从计数器注册表中查询已注册的计数器信息开始的步骤。
4.根据权利要求1所述的日志处理方法,其特征在于,所述根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,包括:
根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息确定预生成计数器key;
判断所述预生成计数器key是否已存在于所述redis数据库中;
如果所述预生成计数器key还未存在于所述redis数据库中,则利用所述预生成计数器key生成所述计数器key。
5.根据权利要求1所述的日志处理方法,其特征在于,所述利用所述目标信息更新所述计数器key对应的计数器,包括:
将所述目标信息存入到所述计时器key对应的计数器中的有序集合和/或散列中;
对所述有序集合和/或所述散列中所述目标信息对应的计数值进行更新;
如果所述计数器key在获取到所述日志数据时还未存在所述redis数据库中,则配置所述计数器key的过期时间,以便在达到所述过期时间时,将所述计时器key对应的计数器删除。
6.根据权利要求1至5任一项所述的日志处理方法,其特征在于,还包括:
获取日志统计查询指令,其中,所述日志统计查询指令包括指标变化趋势查询指令和指标排行查询指令,所述指标变化趋势查询指令用于查询所述redis数据库中的日志数据中目标指标的变化趋势,所述指标排行查询指令用于查询所述redis数据库中的日志数据中目标指标的排行信息;
调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果。
7.根据权利要求6所述的日志处理方法,其特征在于,所述调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果,包括:
调用预设接口对所述指标变化趋势查询指令对应的待查询计数器进行查询,并返回所述指标变化趋势查询指令对应的查询结果,其中,所述指标变化趋势查询指令中包括待查询计数器名称、待查询指标、待查询时间粒度、待查询时间范围及查询开始时间。
8.根据权利要求7所述的日志处理方法,其特征在于,所述调用预设接口对所述指标变化趋势查询指令对应的待查询计数器进行查询,并返回所述指标变化趋势查询指令对应的查询结果,包括:
基于所述待查询时间粒度、所述待查询时间范围以及所述查询开始时间确定出第一待查询时间key,其中,所述第一待查询时间key表示待查询时间;
基于所述待查询计数器名称和所述第一待查询时间key确定第一待查询计数器key;
查询所述第一待查询计数器key对应的第一待查询计数器中所述待查询指标对应的计数值,并返回所述待查询指标对应的计数值。
9.根据权利要求6所述的日志处理方法,其特征在于,所述调用预设接口对所述日志统计查询指令对应的待查询计数器进行查询,并返回所述日志统计查询指令对应的查询结果,包括:
调用预设接口对所述指标排行查询指令对应的待查询计数器进行查询,并返回所述指标排行查询指令对应的查询结果,其中,所述指标排行查询指令中包括待查询计数器名称、待查询时间粒度、待查询时间范围、查询开始时间及排行范围。
10.根据权利要求9所述的日志处理方法,其特征在于,所述调用预设接口对所述指标排行查询指令对应的待查询计数器进行查询,并返回所述指标排行查询指令对应的查询结果,包括:
基于所述待查询时间粒度、所述待查询时间范围及所述查询开始时间确定出第二待查询时间key,其中,所述第二待查询时间key表示待查询时间;
基于所述待查询计数器名称和所述第二待查询时间key确定第二待查询计数器key;
对各个所述第二待查询计数器key对应的第二待查询计数器进行合并,生成合并后计数器;
将所述合并后计数器中计数值排行满足所述排行范围的指标信息作为所述指标排行查询指令对应的查询结果进行返回。
11.一种日志处理装置,其特征在于,应用于redis数据库,所述redis数据库中包括计数器记录模块,所述计数器记录模块,包括:
查询单元,用于获取到日志数据时,从计数器注册表中查询已注册的计数器信息,并开启redis数据库事务,其中,所述计数器注册表中的各个计数器用于对所述redis数据库获取到的日志进行统计,所述计数器信息包括计数器名称、时间粒度、时间属性字段以及指标属性字段,所述指标属性字段为所述日志数据中待记录的字段信息;
Key生成单元,用于根据所述计数器名称、所述时间粒度和所述日志数据中与所述时间属性字段对应的时间信息生成计数器key,其中,所述计数器key表示具体的计数器;
计数单元,用于从所述日志数据中提取出所述指标属性字段对应的目标信息,并利用所述目标信息更新所述计数器key对应的计数器,结束所述redis数据库事务。
12.一种电子设备,其特征在于,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现权利要求1至10任一项所述的日志处理方法。
13.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述的日志处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110333018.3A CN112988798B (zh) | 2021-03-29 | 2021-03-29 | 一种日志处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110333018.3A CN112988798B (zh) | 2021-03-29 | 2021-03-29 | 一种日志处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988798A true CN112988798A (zh) | 2021-06-18 |
CN112988798B CN112988798B (zh) | 2023-05-23 |
Family
ID=76337825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110333018.3A Active CN112988798B (zh) | 2021-03-29 | 2021-03-29 | 一种日志处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988798B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590591A (zh) * | 2021-07-30 | 2021-11-02 | 中国平安财产保险股份有限公司 | 事件状态的自动更新方法、装置、设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103001796A (zh) * | 2012-11-13 | 2013-03-27 | 北界创想(北京)软件有限公司 | 服务端处理网络日志数据的方法及装置 |
CN107169126A (zh) * | 2017-05-31 | 2017-09-15 | 华为技术有限公司 | 一种日志处理方法及相关设备 |
CN109921927A (zh) * | 2019-02-20 | 2019-06-21 | 苏州人之众信息技术有限公司 | 基于微服务的实时调用链跟踪方法 |
CN111159284A (zh) * | 2019-11-28 | 2020-05-15 | 北京睿智融科控股股份有限公司 | 一种集管理加交易的资产管理平台及方法 |
CN111340414A (zh) * | 2020-02-14 | 2020-06-26 | 上海东普信息科技有限公司 | 云仓大数据处理方法、云仓***、计算机设备和存储介质 |
CN111371586A (zh) * | 2018-12-26 | 2020-07-03 | 顺丰科技有限公司 | 日志数据传输方法、装置和设备 |
CN111670442A (zh) * | 2018-02-01 | 2020-09-15 | 微软技术许可有限责任公司 | 数据库事务日志的写入和完整性检查 |
CN111708685A (zh) * | 2020-05-18 | 2020-09-25 | 福建天晴在线互动科技有限公司 | 一种分布式服务器的日志采集监控方法及*** |
CN112100138A (zh) * | 2020-09-16 | 2020-12-18 | 北京天融信网络安全技术有限公司 | 一种日志查询方法、装置、存储介质和电子设备 |
CN112214465A (zh) * | 2020-10-19 | 2021-01-12 | 珠海金山网络游戏科技有限公司 | 日志存储***及方法 |
WO2021012489A1 (zh) * | 2019-07-22 | 2021-01-28 | 平安科技(深圳)有限公司 | 电话平台日志查询方法、终端设备、存储介质及装置 |
CN112506743A (zh) * | 2020-12-09 | 2021-03-16 | 天津狮拓信息技术有限公司 | 一种日志监控方法、装置和服务器 |
-
2021
- 2021-03-29 CN CN202110333018.3A patent/CN112988798B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103001796A (zh) * | 2012-11-13 | 2013-03-27 | 北界创想(北京)软件有限公司 | 服务端处理网络日志数据的方法及装置 |
CN107169126A (zh) * | 2017-05-31 | 2017-09-15 | 华为技术有限公司 | 一种日志处理方法及相关设备 |
CN111670442A (zh) * | 2018-02-01 | 2020-09-15 | 微软技术许可有限责任公司 | 数据库事务日志的写入和完整性检查 |
CN111371586A (zh) * | 2018-12-26 | 2020-07-03 | 顺丰科技有限公司 | 日志数据传输方法、装置和设备 |
CN109921927A (zh) * | 2019-02-20 | 2019-06-21 | 苏州人之众信息技术有限公司 | 基于微服务的实时调用链跟踪方法 |
WO2021012489A1 (zh) * | 2019-07-22 | 2021-01-28 | 平安科技(深圳)有限公司 | 电话平台日志查询方法、终端设备、存储介质及装置 |
CN111159284A (zh) * | 2019-11-28 | 2020-05-15 | 北京睿智融科控股股份有限公司 | 一种集管理加交易的资产管理平台及方法 |
CN111340414A (zh) * | 2020-02-14 | 2020-06-26 | 上海东普信息科技有限公司 | 云仓大数据处理方法、云仓***、计算机设备和存储介质 |
CN111708685A (zh) * | 2020-05-18 | 2020-09-25 | 福建天晴在线互动科技有限公司 | 一种分布式服务器的日志采集监控方法及*** |
CN112100138A (zh) * | 2020-09-16 | 2020-12-18 | 北京天融信网络安全技术有限公司 | 一种日志查询方法、装置、存储介质和电子设备 |
CN112214465A (zh) * | 2020-10-19 | 2021-01-12 | 珠海金山网络游戏科技有限公司 | 日志存储***及方法 |
CN112506743A (zh) * | 2020-12-09 | 2021-03-16 | 天津狮拓信息技术有限公司 | 一种日志监控方法、装置和服务器 |
Non-Patent Citations (3)
Title |
---|
ZHONGYI ZHANG 等: "Tensor: A Transaction-Oriented Low-Latency and Reliable Data Distribution Scheme for Multi-IDCs Based on Redis", 《2019 IEEE 21ST INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING AND COMMUNICATIONS; IEEE 17TH INTERNATIONAL CONFERENCE ON SMART CITY; IEEE 5TH INTERNATIONAL CONFERENCE ON DATA SCIENCE AND SYSTEMS (HPCC/SMARTCITY/DSS)》 * |
任嘉栋: "基于Redis的统一监控平台的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
张野: "Hadoop Hive实现日志数据统计", 《电脑编程技巧与维护》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590591A (zh) * | 2021-07-30 | 2021-11-02 | 中国平安财产保险股份有限公司 | 事件状态的自动更新方法、装置、设备及存储介质 |
CN113590591B (zh) * | 2021-07-30 | 2023-08-22 | 中国平安财产保险股份有限公司 | 事件状态的自动更新方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112988798B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
US9203786B2 (en) | Data synchronization and sharing relationships | |
CN109739867B (zh) | 一种工业元数据管理方法及*** | |
US7690000B2 (en) | Metadata journal for information technology systems | |
US10409801B2 (en) | Validation of web-based database updates | |
CN111159706A (zh) | 数据库安全检测方法、装置、设备及存储介质 | |
US11321315B2 (en) | Methods and systems for database optimization | |
WO2021068488A1 (zh) | 基于区块链的日志处理方法、装置、计算机设备及存储介质 | |
US11030242B1 (en) | Indexing and querying semi-structured documents using a key-value store | |
CN106156088B (zh) | 一种索引数据处理方法、数据查询方法及装置 | |
US8620946B2 (en) | Storage and searching of temporal entity information | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
US10649964B2 (en) | Incorporating external data into a database schema | |
WO2019161620A1 (zh) | 应用依赖关系更新方法、终端、设备及存储介质 | |
US20220121652A1 (en) | Parallel Stream Processing of Change Data Capture | |
CN111339171A (zh) | 数据查询的方法、装置及设备 | |
CN112434015B (zh) | 数据存储的方法、装置、电子设备及介质 | |
CN112506964A (zh) | 数据查询方法、***及计算机可读存储介质 | |
US11327962B1 (en) | Real-time analytical database system for querying data of transactional systems | |
CN112988798B (zh) | 一种日志处理方法、装置、设备及介质 | |
WO2020192663A1 (zh) | 一种数据管理方法及相关设备 | |
CN114153438A (zh) | 一种api自动生成*** | |
EP3436988B1 (en) | "methods and systems for database optimisation" | |
US20070078800A1 (en) | System and method of building an atomic view of a filesystem that lacks support for atomic operations |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |