一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种日志的接收与处理方法、装置、电子设备和存储介质与流程

2021-12-17 18:14:00 来源:中国专利 TAG:


1.本技术涉及数据处理技术领域,尤其涉及一种日志的接收与处理方法、装置、电子设备和存储介质。


背景技术:

2.在资源受限环境下(例如,内存和cpu有限),单台设备一般需要接收来自多个防火墙的大量日志,通常情况下,所接收的日志的数据量大约是10w条/秒;另外,在接收日志的同时,一般还需要对所接收的日志实现存储、统计、分析和管理等功能,因此对日志处理方法的性能和可靠性有极高的要求。
3.在对日志进行处理时,一般需要根据自定义策略为每条日志实时计算并打上多个标签。另外,由于流量审计、资产管理和安全管理等各种需求,还需要判断某条日志是否是内网、是否为内部资产等;而且,伴随着日志系统所接入的防火墙设备的数量和型号的不断增加,对日志系统还将有更高的性能要求。例如,首先需要可以在一秒内接收10w条日志的大数据量,其次需要在短时间内处理、统计所接收的日志,最后还要将每秒就增加10w条的大数据量快速地写入数据库中。
4.另外,在在对日志进行处理时,还需要从百亿量级的日志中,根据自定义的任意条件来检索所需的日志(ad-hoc query)。由于日志溯源和审计需求等,需要按照多个维度(例如ip、时间等)查询日志,查看是否违规情况等。日志系统需要支持在线对百亿级别的日志提供高效的复杂条件查询,这对于单机环境下的cpu和内存资源都是一个挑战,而当前的现有技术中也未提供相应的可以取得较好的实际应用效果的实现方案。


技术实现要素:

5.有鉴于此,本发明提供了一种日志的接收与处理方法、装置、电子设备和存储介质,从而可以提高数据处理速度,提高系统性能,降低资源占用。
6.第一方面,本发明实施例提供了一种日志的接收与处理方法,该方法包括:
7.接收日志并将接收到的日志缓存在预设的缓存区中;
8.从缓存区中读取日志,并对读取出的日志进行解析;
9.根据日志的类型对解析后的日志进行富化,在解析后的日志中增加所需的与日志关联的信息;
10.对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换;
11.将过滤处理后的日志存储到预设的数据库中。
12.进一步的,所述对读取出的日志进行解析包括:
13.从读取出的日志中提取关键字段;
14.将读取出的日志转换成预设的日志格式。
15.进一步的,所述从读取出的日志中提取关键字段包括:
16.从预设的配置文件中读取提取策略,并根据所述提取策略从读取出的日志中提取
相应的关键字段。
17.进一步的,所述对解析后的日志进行富化包括:
18.对解析后的日志中需要翻译的字段进行翻译;
19.对解析后的日志中需要关联的字段进行关联。
20.进一步的,该方法还包括:
21.从预设的配置文件中读取富化策略;
22.根据所述富化策略,提取日志中的接口字段;
23.根据所述接口字段获取发送日志的服务器的接口,并判断所述服务器的接口是否为标准的接口。
24.进一步的,该方法还包括:
25.根据富化策略以及日志的威胁类型,从外部数据库获取日志的资产。
26.进一步的,所述对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换包括:
27.从预设的配置文件中读取过滤策略;
28.根据所述过滤策略对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换,形成原始数据表和/或统计表。
29.进一步的,所述对日志中的相应字段进行抽取和转换包括:
30.根据过滤策略从富化后的日志中提取相应的字段,并将所提取的字段转换成预设的格式。
31.进一步的,所述将过滤处理后的日志存储到预设的数据库中包括:
32.将过滤处理后的日志发送给写入器,以使写入器将接收到的日志存储到预设的数据库中。
33.进一步的,该方法还包括:
34.为每一个写入器设置一个缓存区以及一个对应的执行器,其中,所述写入器用于将过滤处理后的日志缓存在缓存区中,所述写入器对应的执行器用于将缓存在缓存区中的日志读取出来,并存储至预设的数据库中。
35.进一步的,该方法还包括:
36.通过预设的错峰策略,使得多个执行器通过错峰的方式将写入器的缓存区中的日志存储至预设的数据库中。
37.进一步的,该方法还包括:
38.通知执行器将预先设置的两个规则缓冲区中的一个规则缓冲区作为其主缓存区,并将另一个规则缓冲区作为备用缓存区,其中,所述主缓存区中预先存储有处理规则;
39.通知执行器从当前的主缓存区中读取处理规则,并根据所读取的处理规则对日志进行处理;
40.当处理规则发生更新时,将更新后的处理规则主动推送至执行器当前的备用缓存区中,然后通知执行器切换缓冲区,以使执行器在接收到通知后,在处理下一条日志时,先将当前的备用缓存区作为当前的主缓存区,并将另一个规则缓冲区作为备用缓存区;然后,从当前的主缓存区中读取处理规则,并根据所读取的处理规则对下一条日志进行处理。
41.进一步的,该方法还包括:
42.当执行器切换缓冲区之后,将更新后的处理规则主动推送至执行器当前的备用缓存区。
43.进一步的,该方法还包括:
44.对所接收到的日志的数量、所解析的日志的数量、所富化的日志的数量以及所过滤的日志的数量分别进行计数;
45.根据预设的限流策略以及计数信息确定是否进行限流操作。
46.第二方面,本发明实施例还提供了一种日志的接收与处理装置,其特征在于,该装置包括:接收器、缓存区、解析器、富化器、过滤器、写入器和数据库;
47.所述接收器,用于接收日志并将接收到的日志缓存在预设的缓存区中;
48.所述解析器,用于从缓存区中读取日志,并对读取出的日志进行解析,并将解析后的日志分发给一个或多个富化器;
49.所述富化器,用于根据日志的类型对解析后的日志进行富化,并根据预设的聚合策略将富化后的日志分发给一个或多个过滤器;
50.所述过滤器,用于对接收到的日志进行过滤,对日志中的相应字段进行抽取和转换;
51.所述写入器,用于将过滤处理后的日志存储到数据库中。
52.进一步的,所述装置还包括:计数器和限流器;
53.所述计数器,用于对各个接收器所接收到的日志的数量、各个解析器所解析的日志的数量、各个富化器所富化的日志的数量以及各个过滤器所过滤的日志的数量分别进行计数,并将各个计数信息分别发送给所述限流器;
54.所述限流器,用于根据预设的限流策略以及接收到的计数信息确定是否进行限流操作。
55.进一步的,所述装置还包括:一个或多个转发器;
56.所述转发器,用于将解析后的日志发送给外部装置。
57.进一步的,所述装置还包括:分发器;
58.所述分发器,用于从缓存区中读取日志,并根据预设的第一分发策略将从缓存区中读取的日志分发给各个解析器。
59.进一步的,所述装置还包括:配置器;
60.所述配置器中设置有配置文件,所述配置文件中存储有多种策略。
61.第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如第一方面所述日志的接收与处理方法的步骤。
62.第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如第一方面所述日志的接收与处理方法的步骤。
63.由上述技术方案可知,本发明中的日志的接收与处理方法、装置、电子设备和存储介质,由于先将日志缓存在的缓存区中,然后从缓存区中读取日志并进行解析,根据日志的类型对解析后的日志进行富化,对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换后,再将过滤处理后的日志存储到预设的数据库中,因此可以根据日志的来源、类型
分别进行富化和过滤,对日志进行上述处理之后再存储到数据库中,因而便于对数据库进行快速的查询,从而可以提高数据处理速度,提高系统性能,降低资源占用。
附图说明
64.图1为本发明一个实施例中的日志的接收与处理方法的流程示意图。
65.图2为本发明一个实施例中的日志的接收与处理装置的结构示意图。
66.图3为本发明一个实施例中的两个规则缓冲区的工作原理示意图。
67.图4为本发明一个实施例中的电子设备的结构示意图。
具体实施方式
68.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
69.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
70.图1为本发明一个实施例中的日志的接收与处理方法的流程示意图。
71.如图1所示,本发明一个实施例中的日志的接收与处理方法包括如下所述步骤:
72.步骤10,接收日志并将接收到的日志缓存在预设的缓存区中。
73.在本发明的技术方案中,日志源(sources)将发送各种类型的日志(例如,操作系统日志、网络守护进程日志、应用程序日志、网络基础设施日志、完全主机日志等等)。为了对这些日志源所发送的日志进行处理,可以先将接收到的日志缓存在预设的缓存区中。
74.例如,在本发明的一个可选的具体实施方式中,可以预先设置一个或多个接收器(reader),用于接收日志源(例如,防火墙)所发送的各种类型的日志,并将所接收到的日志缓存在预设的缓存区(buffer)中。
75.另外,进一步的,在本发明的一个可选的具体实施方式中,还可以预先设置一个计数器(counter);每个接收器在接收到日志之后,还可以将其接收到日志的信息发送给该计数器。因此,该计数器可以用于对各个接收器所接收到的日志的数量进行计数,从而可以进行多时间维度的日志计数,以便于在后续流程中进行相应的计算和/或统计。
76.另外,进一步的,在本发明的一个可选的具体实施方式中,还可以预先设置一个限流器(limiter);所述计数器可以将其计数信息发送给该限流器;该限流器可以用于接收计数器发送的计数信息,并根据预设的限流策略以及接收到的计数信息确定是否进行限流操作。
77.步骤20,从缓存区中读取日志,并对读取出的日志进行解析。
78.在本发明的技术方案中,在缓存区中缓存日志之后,还需要对缓存区中的日志进行后续的处理。因此,在本步骤中,将会缓存区中读取日志,并对读取出的日志进行解析。
79.例如,在本发明的一个可选的具体实施方式中,可以预先设置一个或多个解析器(parser),然后各个解析器根据预设的第一分发策略分别从缓存区中读取的日志,并对所读取的日志进行解析。
80.再例如,在本发明的另一个可选的具体实施方式中,还可以预先设置一个分发器,并预先设置一个或多个解析器;所述分发器从缓存区中读取日志,并根据预设的第一分发策略将从缓存区中读取的日志分发给各个解析器,各个解析器将分别对所接收到的日志进行解析。
81.上述分发器在将所读取的日志分发给各个解析器时,可以先判断所读取的日志的类型,然后根据日志的类型以及预设的第一分发策略,将所读取的日志分发给相应的解析器,使得每一个解析器可以仅处理预先设定的某一种类型或某几种类型的日志。
82.另外,在本发明的一个可选的具体实施方式中,所述第一分发策略可以预先存储在预设的配置文件中,并可根据实际应用情况的需要实时地对配置文件中的第一分发策略进行更新,从而使得解析器可以根据更新后的第一分发策略从缓存区中获取相应的日志。
83.再例如,在本发明的一个可选的具体实施方式中,所述对读取出的日志进行解析可以包括如下步骤:
84.步骤21,从读取出的日志中提取关键字段。
85.在本步骤中,在对读取出的日志进行解析时,可以先从所读取的日志中提取出关键字段,以便于进行后续的处理和/或统计。
86.例如,作为示例,在本发明的一个可选的具体实施例中,所述关键字段可以是:源ip地址(srcip)、目的ip地址(dstip)等。
87.再例如,作为示例,在本发明的一个可选的具体实施例中,解析器可以从预设的配置文件中读取相应的提取策略,并根据该提取策略从读取出的日志中提取相应的关键字段。
88.在上述的配置文件中可以存储相应的提取策略(例如,需要提取哪些关键字段等),因此解析器可以根据该提取策略确定需要提取日志中的哪些关键字段。上述提取策略可以预先存储在配置文件中,并可根据实际应用情况的需要实时地对配置文件中的提取策略进行更新,从而使得解析器可以根据预设的或者更新后的提取策略从读取出的日志中提取相应的关键字段。
89.步骤22,将读取出的日志转换成预设的日志格式。
90.例如,作为示例,在本发明的一个可选的具体实施例中,所述预设的日志格式可以是<k,v>格式;其中,k表示键(key),v表示值(value)。当然,在本发明的技术方案中,所述预设的日志格式也可以是其它的合适的格式,本发明对此并不做限制。
91.在将提取出的日志转换成预设的日志格式之后,可以将日志解析成结构化数据,该日志的结构化数据在后续的处理过程中就将以字节格式缓存,从而可以省略类型转换的时间消耗。
92.通过上述的步骤21和步骤22,即可完成对读取出的日志的解析。
93.此外,在本发明的一个可选的具体实施方式中,还可以进一步预先设置一个或多个转发器(forwarder),所述转发器可以将解析后的日志发送给外部装置。
94.例如,作为示例,在本发明的一个可选的具体实施例中,所述外部装置可以是其它的日志的接收与处理装置,也可以是外部的旁路监听设备,或是其它的数据处理设备。
95.例如,当由于日志的流量过大,已经超过当前所能处理的流量上限时,可以通过上述转发器将解析后的日志发送给外部装置处理;或者,当需要进行旁路监听时,也可以通过上述转发器将解析后的日志发送给外部的旁路监听设备进行旁路监听。
96.另外,进一步的,在本发明的一个可选的具体实施方式中,每个解析器在对一条日志完成解析之后,还可以将其完成一条日志解析的信息发送给计数器(counter)。因此,该计数器可以用于对各个解析器所解析的日志的数量进行计数,从而可以进行多时间维度的日志计数,以便于在后续流程中进行相应的计算和/或统计。
97.步骤30,根据日志的类型对解析后的日志进行富化。
98.在本发明的技术方案中,在对日志进行解析之后,还需要根据日志的类型对解析后的日志分别进行富化,在解析后的日志中增加所需的与日志关联的信息。
99.例如,在本发明的一个可选的具体实施方式中,可以预先设置多个富化器(richer),然后各个富化器根据预设的富化策略对解析后的日志按照其所属的类型进行富化。
100.再例如,在本发明的一个可选的具体实施方式中,解析器对日志进行解析之后,可以根据预设的第二分发策略将解析后的日志分发给一个或多个富化器。
101.具体来说,解析器在分发解析后的日志之前,可以先判断解析后的日志的类型,然后再根据日志的类型以及预设的第二分发策略,将解析后的日志分发给相应的一个或多个富化器,使得每一个富化器可以仅处理预先设定的某一种类型或某几种类型的日志。
102.另外,在本发明的一个可选的具体实施方式中,所述第二分发策略和富化策略可以预先存储在预设的配置文件中,并可根据实际应用情况的需要实时地对配置文件中的第二分发策略和富化策略进行更新,从而使得解析器可以根据预设的或者更新后的第二分发策略将解析后的日志分发给相应的富化器,各个富化器可以根据预设的或者更新后的富化策略对解析后的日志进行富化。
103.此外,在本发明的一个可选的具体实施方式中,所述对解析后的日志进行富化可以包括如下步骤:
104.步骤31,对解析后的日志中需要翻译的字段进行翻译。
105.例如,由于数据库的本身特性,数据库中所存储的字段一般都是用英语或英语字母来表示的,或者是数据库本身不支持中文,而在对该数据库进行检索、查询等操作时,向用户显示相关内容时需要使用中文,因此需要对日志中的一些字段进行翻译。
106.所以,在本步骤中,可以根据富化策略对解析后的日志中需要翻译的字段进行翻译。
107.例如,在本发明的一个可选的具体实施方式中,当需要对日志中的应用程序名称(appname)字段进行翻译时,富化器可以根据预设的富化策略对日志中的appname字段进行翻译。
108.举例来说,当需要对日志中的appname字段进行翻译时,富化器可以根据所需翻译
的appname字段,从富化策略中获取该appname字段对应的标识(id)、中文(cn)、子名称(subname)等字段的值,然后将中文(cn)字段的值赋予英文(zh)字段,实现对appname字段的翻译。进一步的,还可将所获取的标识(id)、中文(cn)、子名称(subname)等字段的值写入到统一的预设的日志格式中,完成对该日志的富化。
109.通过上述的翻译操作,就可以根据日志中的相应字段(例如,id字段等)查询到与appname字段相关联的信息,例如,该appname字段对应的应用程序(app)是否为重点关注的应用程序,和/或是否为禁止使用或不安全的应用程序。
110.再例如,在本发明的一个可选的具体实施方式中,富化器还可以确定解析后的日志的威胁等级,并根据预设的富化策略将日志的威胁类型设置为对应的等级,完成威胁等级的翻译。
111.举例来说,所述威胁等级可以为高(high)、中(medium)或低(low)等三个等级,也可以是其它的预先设置的多个等级。
112.另外,在本发明的一个可选的具体实施方式中,翻译字段的值可以通过json文件写入对应的翻译关系。其中,所述翻译关系可以是一种字典表、数据库或者知识库,其来源可以是预先设置的具有json结构的配置文件,也可以从其他外部系统(例如,资产系统)中获得。
113.步骤32,对解析后的日志中需要关联的字段进行关联。
114.在本步骤中,还将对解析后的日志中需要关联的字段进行关联。
115.例如,在本发明的一个可选的具体实施方式中,富化器可以根据预设的富化策略,判断日志中的ip地址是否为内网的ip地址。
116.举例来说,富化器可以将日志中的ip地址与富化策略中所存储的各个内网ip地址进行比对,如果该日志中的ip地址与富化策略中的某个内网ip地址相同,则表示该日志中的ip地址是内网的ip地址,返回yes(例如,将该日志的相应字段的值设置为yes,以表示该日志中的ip地址是内网的ip地址);否则,则表示该日志中的ip地址不是内网的ip地址,返回no(例如,将该日志的相应字段的值设置为no,以表示该日志中的ip地址不是内网的ip地址)。
117.再例如,在本发明的一个可选的具体实施方式中,富化器还可以进一步根据预设的富化策略,提取日志中的接口字段,并根据该接口字段获取发送该日志的服务器的接口,并判断该服务器的接口是否为标准的接口。通过该操作,可以获知某些类型的日志(例如,流量日志)的来源是否为服务器的标准接口。
118.再例如,在本发明的一个可选的具体实施方式中,富化器还可以根据预设的富化策略以及日志的威胁类型,从外部数据库获取日志的资产(即日志的关联信息)。
119.举例来说,在本发明的一个可选的具体实施方式中,可以预先设置一个外联模块,所述外联模块可以根据配置文件访问相应的外部数据库(例如,配置文件中存储有各个外部数据库的相应信息,譬如,外部数据库的名称、地址、端口、用户名、密码以及同步时间间隔等信息),从外部数据库中获取相应的数据信息,并保持与外部数据库的同步更新。由于外联模块中已经存储有外部数据库中的数据信息,因此富化器可以根据预设的富化策略以及日志的威胁类型,从外联模块中获取日志的关联信息。
120.通过上述的步骤31和步骤32,即可完成对解析后的日志的富化。
121.另外,在本发明的一个可选的具体实施方式中,所述富化策略可以预先存储在预设的配置文件中,并可根据实际应用情况的需要实时地对配置文件中的富化策略进行更新,从而使得富化器可以根据预设的或更新后的富化策略对解析后的日志中需要翻译的字段进行翻译。
122.另外,进一步的,在本发明的一个可选的具体实施方式中,每个富化器在对一条日志完成富化之后,还可以将其完成一条日志富化的信息发送给计数器(counter)。因此,该计数器可以用于对各个富化器所富化的日志的数量进行计数,从而可以进行多时间维度的日志计数,以便于在后续流程中进行相应的计算和/或统计。
123.步骤40,对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换。
124.在本发明的技术方案中,在对日志进行富化之后,还需要对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换。
125.例如,在本发明的一个可选的具体实施方式中,可以预先设置多个过滤器(filter),然后各个过滤器根据预设的过滤策略对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换。
126.在现有技术中,通常都是将富化后的日志数据都直接存储在原始数据表中。由于原始数据表中所存储的数据太多,因此不便于进行快速地查询。
127.所以,在本发明的技术方案中,除了需要根据富化后的日志得到原始数据表之外,还需要根据实际应用情况的需要得到一个或多个统计表,从而可以在后续过程中进行快速地查询,向用户提供用户所需的各种统计表,或者根据各个统计表得到所需的各种统计结果。
128.因此,一条富化后的日志的数据除了需要存储到原始数据表中之外,还可能需要分发到多个统计表中。例如,当需要满足某些需求时,一条流量日志的数据,除了需要存储到原始数据表中之外,还可能需要分别分发到流量表(traffic)、每分钟源地址总流量表(trafficsummingsrcminute)、每分钟目的地址总流量表(trafficsummingdstminute),每分钟总流量表(trafficsummingminute)等多个统计表中。
129.所以,在本步骤中,在对解析后的日志进行富化之后,还需根据预设的聚合策略将富化后的日志分发给一个或多个过滤器,使得每一个过滤器都可以根据预设的过滤策略对所接收到的富化后的日志进行过滤处理,对日志中的相应字段进行抽取和转换,以便于将经过过滤处理后的日志信息存储到相应的表格中,以形成所需的原始数据表和/或统计表。
130.例如,在本发明的一个可选的具体实施方式中,可以预先设置一个或多个过滤器(filter),在聚合策略中为每一种类型的日志都设置相应的分发规则以及相应的过滤器,并为每个过滤器设置对应的过滤策略。因此,根据该聚合策略即可确定需要将富化后的哪种类型的日志发送到哪些过滤器,而各个过滤器则可根据其对应的过滤策略对富化后的日志进行过滤处理,以形成所需的原始数据表和/或统计表。
131.所以,在对解析后的日志进行富化之后,即可根据聚合策略确定需要将富化后的日志发送到哪些过滤器,从而可以根据所述聚合需求将富化后的日志分发到对应的过滤器中,而过滤器则可根据其对应的过滤策略对富化后的日志进行过滤处理,对日志中的相应字段进行抽取和转换,以形成所需的原始数据表和/或统计表。
132.另外,在本发明的一个可选的具体实施方式中,所述聚合策略和过滤策略可以预
先存储在预设的配置文件中,并可根据实际应用情况的需要实时地对配置文件中的聚合策略和过滤策略进行更新,从而使得富化器可以根据预设的或者更新后的聚合策略将富化后的日志分发给各个相应的过滤器,各个过滤器可以根据预设的或者更新后的过滤策略对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换。
133.此外,在本发明的一个可选的具体实施方式中,当过滤器对所接收到的日志进行处理时,将对日志的字段进行抽取和转换操作。
134.例如,具体来说,在对日志的字段进行抽取和转换操作时,可以根据过滤策略从富化后的日志中提取相应的字段,并将所提取的字段转换成预设的格式。
135.举例来说,在不同的日志中,时间字段可能会使用不同的格式(例如,时间戳或字符串等格式)来表示时间。因此,可以从日志中提取时间字段,并将所提取的时间字段转换成统一的预设的格式(例如,时间戳格式),从而便于在后续流程中进行统一的处理,以形成所需的原始数据表和/或统计表。
136.另外,进一步的,在本发明的一个可选的具体实施方式中,每个过滤器在对一条日志完成过滤之后,还可以将其完成一条日志过滤的信息发送给计数器(counter)。因此,该计数器可以用于对各个过滤器所过滤的日志的数量进行计数,从而可以进行多时间维度的日志计数,以便于在后续流程中进行相应的计算和/或统计。
137.因此,在本发明的一个可选的具体实施方式中,可以对所接收到的日志的数量、所解析的日志的数量、所富化的日志的数量以及所过滤的日志的数量分别进行计数,然后再根据预设的限流策略以及计数信息确定是否进行限流操作。
138.另外,进一步的,在本发明的一个可选的具体实施方式中,所述限流策略可以预先存储在预设的配置文件中,并可根据实际应用情况的需要实时地对配置文件中的限流策略进行更新,从而使得限流器可以根据更新后的限流策略以及接收到的计数信息确定是否进行限流操作。
139.步骤50,将过滤处理后的日志存储到预设的数据库中。
140.在本发明的技术方案中,在对日志进行过滤处理之后,即可将过滤处理后的日志(例如,原始数据表和各种统计表)存储到预设的数据库中。
141.例如,在本发明的一个可选的具体实施方式中,所述预设的数据库可以是:clickhouse。
142.clickhouse是一种开源的列式存储数据库,可以持久化存储日志数据。clickhouse从联机分析处理(olap)场景需求出发,定制开发了一套全新的高效列式存储引擎,并且实现了数据有序存储、主键索引、稀疏索引、数据分片(sharding)、数据分区(partitioning)、生存时间(ttl)、主备复制等丰富的功能。以上功能共同为clickhouse极速的分析性能奠定了基础。因此,当使用clickhouse作为预设的数据库时,可以充分地利用clickhouse的特性与表结构定义,在接收日志时自动实现业务统计逻辑。而且,可以使用clickhouse中的合并树(mergetree)表引擎,使用时间字段作为排序主键和分块主键,从而提高按照时间区间维度查询日志的效率。另外,对于需要做统计计算处理的数据,可以通过使用clickhouse中的求和合并树(summingmergetree),对数据类型的字段在merge阶段直接合并,从而可以显著的减少存储空间并加快数据查询的速度。
143.另外,在本发明的一个可选的具体实施方式中,所述将过滤处理后的日志存储到
预设的数据库中可以包括如下的步骤:
144.步骤51,将过滤处理后的日志发送给写入器(writer)。
145.例如,在本发明的一个可选的具体实施方式中,可以预先设置多个写入器,并使得每一个过滤器均一一对应于一个写入器,并为每一个写入器设置一个缓存区。因此,当通过过滤器对日志进行过滤处理之后,就可以将过滤处理后的日志(例如,原始数据表和各种统计表)发送给与过滤器对应的写入器,并缓存在写入器的缓存区中。
146.步骤52,写入器将接收到的日志存储到预设的数据库中。
147.在本步骤中,写入器可以将其缓存区中的日志写入到预设的数据库中。
148.例如,在本发明的一个可选的具体实施方式中,可以预先为每个写入器配置一个对应的执行器(worker)。因此,当过滤器完成对日志的过滤处理,并将过滤处理后的日志缓存在writer缓存区中之后,与该writer对应的worker即可将缓存在writer缓存区中的日志读取出来,并存储至预设的数据库中。
149.另外,在本发明的一个可选的具体实施方式中,当writer的缓存区已满时,将自动刷新writer缓存区入库,即,将writer的缓存区中当前缓存的所有日志全部存储至预设的数据库中,并清空writer的缓存区。
150.另外,在本发明的另一个可选的具体实施方式中,当达到预设的存储时刻时(例如,预设的某个时间点,或者每秒刷新一次),将自动刷新writer缓存区入库,即,将writer的缓存区中当前缓存的所有日志全部存储至预设的数据库中,并清空writer的缓存区。
151.另外,在本发明的另一个可选的具体实施方式中,当接收到预设的存储指令时(例如,接收到外界输入的刷新指令时),将自动刷新writer缓存区入库,即,将writer的缓存区中当前缓存的所有日志全部存储至预设的数据库中,并清空writer的缓存区。
152.此外,在本发明的另一个可选的具体实施方式中,当使用多个worker存储日志时,还可以通过预设的错峰策略,使得多个worker通过错峰的方式将writer缓存区中的日志存储至预设的数据库中。
153.例如,在本发明的另一个可选的具体实施方式中,可以为每一个worker预先设置一个唯一的编号和一个随机数,各个worker即可根据其所对应的编号和随机数确定其将日志写入预设的数据库中的时间,从而使得各个worker能够尽量错开向预设的数据库中写入日志的时间,尽量避免在同一时间有多个worker同时向预设的数据库中写入日志的问题。
154.此外,在本发明的另一个可选的具体实施方式中,当通过worker对一条日志进行处理时,一般都需要根据预先配置的处理规则对日志进行处理。由于在本发明的技术方案中,处理规则是可以动态调整的,因此,为了适应上述动态可调的处理规则,提高处理速度,在本发明的另一个可选的具体实施方式中,可以预先设置两个规则缓冲区:第一规则缓冲区r和第二规则缓冲区w,如图3所示。
155.在正常工作状态下,可以通知worker将其中的一个规则缓冲区作为其主缓存区,例如,可以将第一规则缓冲区r作为其主缓存区,而将另一个规则缓冲区(即第二规则缓冲区w)作为备用缓存区,然后从当前的主缓存区(即第一规则缓冲区r)中读取处理规则(所述主缓存区中预先存储有处理规则),并根据该读取的处理规则对日志进行处理。
156.当当前的处理规则发生了更新时,则可以将更新后的处理规则先主动推送至worker当前的备用缓存区(即第二规则缓冲区w)中,然后通知worker切换缓冲区。worker在
接收到通知后,在处理下一条日志时先切换缓冲区,将当前的备用缓存区(即第二规则缓冲区w)作为当前的主缓存区,并将另一个规则缓冲区(即第一规则缓冲区r)作为备用缓存区;然后,从当前的主缓存区(即第二规则缓冲区w)中读取处理规则,并根据该读取的处理规则对下一条日志进行处理。
157.更进一步的,当worker切换缓冲区之后,还需要将更新后的处理规则也主动推送至worker当前的备用缓存区,从而使得两个规则缓冲区中的处理规则实现同步更新。
158.另外,在本发明的另一个可选的具体实施方式中,可以使用golang语言中的通道(channal)将更新后的处理规则主动推送到两个规则缓冲区中,并通知worker切换缓冲区。
159.通过上述的两个规则缓冲区以及相关的更新流程,可以实现实时同步外部配置,不仅保证数据操作的正确性和安全性,也可以使得共享缓冲区可以得到高效的利用。
160.在本发明的技术方案中,由于先将富化后的日志分发给多个过滤器,通过各个过滤器对接收到的日志进行过滤,对日志中的相应字段进行抽取和转换,形成所需的原始数据表和/或统计表,然后再将过滤处理后的日志存储到预设的数据库中,因此可以在后续的流程中有效地提高查询速度,还可以有效地减小日志数据的存储量。
161.例如,作为实例,在本发明的一个可选的具体实施方式中,可以通过各个过滤器对接收到的日志进行过滤,建立分钟级别的统计表:每分钟源地址总流量表(trafficsummingsrcminute),并将该“每分钟源地址总流量表”存储在预设的数据库中。
162.因此,当需要根据实际的需求建立不同级别的时间维度上的视图时,可以向上述数据库发送指令,读取上述的“每分钟源地址总流量表”,并可以基于上述的“每分钟源地址总流量表”,分别建立“小时”级别的统计表(trafficsummingsrchour)以及“天”级别的统计表(trafficsummingsrcday),从而可以根据实际的需求分别生成不同级别的时间维度上的视图。
163.举例来说,可以按照分钟级别生成日志分钟视图,或者按照小时级别生成日志小时视图,或者按照天级别生成日志天视图等等,因此可以在进行日志检索时,依照不同时间区间选择合适的视图进行查询操作,从而可以有效地提高查询速度,提高用户的体验度。
164.再例如,作为实例,在本发明的一个可选的具体实施方式中,可以通过各个过滤器对接收到的日志进行过滤,分别建立源ip统计表(trafficsummingsrcminute)和目的ip统计表(trafficsummingdstminute),并将该源ip统计表和目的ip统计表存储在预设的数据库中。
165.当需要查询日志数据的ip信息时,可以分别在上述的源ip统计表和目的ip统计表进行查询,从而可以有效地提高查询速度,并有效地减小日志数据的存储量。
166.举例来说,假设接收到一亿条日志,且这一亿条日志数据中只有ip地址是不同的,且不同的源ip地址只有2个,不同的目的ip地址只有3个,则可以通过各个过滤器对接收到的这一亿条日志进行过滤,将各条日志中的ip地址存储在上述的源ip统计表和目的ip统计表中。处理完之后,源ip统计表将有2条数据(即2个不同的源ip地址),而目的ip统计表将有3条数据(即3个不同的目的ip地址)。而如果使用现有技术中的相关方法,则需要在原始数据表中存储2*3条数据。
167.由此可知,通过使用本发明的技术方案,可以通过分表的方式将原始数据表拆分成源ip统计表和目的ip统计表,因此可以将日志存储量从n*m的级别减低到n m的级别,从
而可以有效地减小日志数据的存储量。
168.此外,在本发明的另一个可选的具体实施方式中,可以设置一个配置文件,所述配置文件中存储有各种策略(例如,限流策略、第一分发策略、提取策略、富化策略、第二分发策略、过滤策略、聚合策略等)。所述配置文件中的各种策略可以预先设置,并可根据实际应用情况的需要实时地对配置文件中的各种策略进行更新。
169.另外,在本发明的一个可选的具体实施方式中,所述配置文件可以存储在预设的存储位置(例如,预设的配置文件缓冲区,或者是预设的存储设备或存储区等)。
170.另外,在本发明的技术方案中,还提供了一种日志的接收与处理装置。
171.图2为本发明一个实施例中的日志的接收与处理装置的结构示意图,如图2所示,本发明一个实施例中的日志的接收与处理装置包括:接收器201、缓存区202、解析器203、富化器204、过滤器205、写入器206和数据库207;
172.所述接收器201,用于接收日志并将接收到的日志缓存在预设的缓存区202中;
173.所述解析器203,用于从缓存区202中读取日志,并对读取出的日志进行解析,并将解析后的日志分发给一个或多个富化器204;
174.所述富化器204,用于根据日志的类型对解析后的日志进行富化,并根据预设的聚合策略将富化后的日志分发给一个或多个过滤器205;
175.所述过滤器205,用于对接收到的日志进行过滤,对日志中的相应字段进行抽取和转换;
176.所述写入器206,用于将过滤处理后的日志存储到预设的数据库207中。
177.可选地,在本发明的一个具体实施方式中,所述日志的接收与处理装置还可以包括:计数器208和限流器209;
178.所述计数器208,用于对各个接收器所接收到的日志的数量、各个解析器所解析的日志的数量、各个富化器所富化的日志的数量以及各个过滤器所过滤的日志的数量分别进行计数,并将各个计数信息分别发送给所述限流器209;
179.所述限流器209,用于根据预设的限流策略以及接收到的计数信息确定是否进行限流操作。
180.可选地,在本发明的一个具体实施方式中,所述日志的接收与处理装置还可以包括:一个或多个转发器210;
181.所述转发器210,用于将解析后的日志发送给外部装置。
182.可选地,在本发明的一个具体实施方式中,所述日志的接收与处理装置还可以包括:分发器(图2中未示出);
183.所述分发器,用于从缓存区中读取日志,并根据预设的第一分发策略将从缓存区中读取的日志分发给各个解析器。
184.可选地,在本发明的一个具体实施方式中,所述日志的接收与处理装置还可以包括:配置器(图2中未示出);
185.所述配置器中设置有配置文件,所述配置文件中存储有多种策略。
186.所述多种策略可以包括:限流策略、第一分发策略、提取策略、富化策略、第二分发策略、过滤策略、聚合策略等策略。所述配置文件中的各种策略可以预先设置,并可根据实际应用情况的需要实时地对配置文件中的各种策略进行更新。
187.另外,本发明实施例提供的日志的接收与处理装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
188.图4示出了本发明一实施例提供的一种电子设备的结构示意图,如图4所示,该电子设备可以包括存储器402、处理器401、总线403以及存储在存储器402上并可在处理器401上运行的计算机程序,其中,处理器401和存储器402通过总线403完成相互间的通信。所述处理器401执行所述计算机程序时实现上述方法的步骤,例如包括:接收日志并将接收到的日志缓存在预设的缓存区中;从缓存区中读取日志,并对读取出的日志进行解析;根据日志的类型对解析后的日志进行富化;对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换;将过滤处理后的日志存储到预设的数据库中。
189.另外,本发明一实施例中还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤,例如包括:接收日志并将接收到的日志缓存在预设的缓存区中;从缓存区中读取日志,并对读取出的日志进行解析;根据日志的类型对解析后的日志进行富化;对富化后的日志进行过滤,对日志中的相应字段进行抽取和转换;将过滤处理后的日志存储到预设的数据库中。
190.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
191.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
192.最后应说明的是:以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献