掌桥专利:专业的专利平台
掌桥专利
首页

一种动态日志解析方法、装置、设备及存储介质

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及计算机网络技术领域,尤其涉及一种动态日志解析方法、装置、设备及存储介质。

背景技术

信息安全系统中任何设备或业务都有可能会输出日志:防火墙、Web服务器、IPS引擎、数据库和终端软件等等,日志中包含了大量安全管理人员、运维人员、业务分析人员等感兴趣的信息。以用户行为感知设备为例,例如:访问者IP、访问时间、访问的目的资源,访问者的客户端信息、访问次数等。

日志数据规模较小时,操作系统现成的各种内置或开源工具,如gawk、grep、cat等都是日志分析的利器。如果还有更复杂一些的逻辑,还可以使用各种脚本语言,如Python、Shell,基本可以解决所有的问题,但上述这些工具或脚本语言,大都依赖于正则表达式。

随着系统体量逐渐增大,一个系统所包含的设备种类也随之增多,当我们需要对存在几十、上百种不同的设备,产生几千、上万种日志格式的时候,基于正则表达式的做法在日志格式逐渐增多情况下就显得捉襟见肘了,并且会因为正则表达式的专业变得异常难以维护,轻则变得效率低下,维护成本上升,严重导致误处理。

发明内容

有鉴于此,有必要提供一种动态日志解析方法、装置、设备及存储介质,用以解决现有技术中当日志数据规模较大时,正则表达式解析日志的效率低,维护成本高且可能会产生错误的问题。

为达到上述技术目的,本发明采取了以下技术方案:

第一方面,本发明提供了一种动态日志解析方法,包括:

根据安全设备的日志格式配置日志模板;

获取安全设备的待解析日志,将日志模板进行解析,得到日志模板的结构化数据;结构化数据包括输入日志格式和输出日志格式;

根据输入日志格式,将待解析日志进行解析,得到日志解析数据;

根据输出日志格式,将日志解析数据进行格式化处理,得到输出日志,并将输出日志发送到日志中心。

优选的,将日志模板进行解析,得到日志模板的结构化数据,包括:

获取日志模板的输入请求,根据输入请求,输入日志模板;

循环解析日志模板,得到结构化数据的节点类型。

优选的,根据输入日志格式,将待解析日志进行解析,得到日志解析数据,包括:

若节点类型为输入参数节点,则对待解析日志进行解析处理;

若节点类型为输出参数节点,则输出日志解析后的列表参数;

若节点类型为结束节点,则结束解析流程。

优选的,若节点类型为输入参数节点,则对待解析日志进行解析处理,包括:

识别待解析日志的格式以及字段名称;

根据待解析的日志格式将待解析日志进行分隔处理,得到分隔符列表;

根据分隔符列表以及字段名称对待解析日志进行解析处理,得到日志解析结果。

优选的,根据分隔符列表以及字段名称对待解析日志进行解析处理,得到日志解析结果,包括:

将字段名称与分隔符列表进行关联,得到分隔符解析结果;

根据分隔符解析结果对待解析日志进行解析,得到日志解析结果。

优选的,根据输出日志格式,将日志解析数据进行格式化处理,得到输出日志,并将输出日志发送到日志中心,包括:

将输出日志输出到日志通道;

根据日志通道的通道配置,将输出日志发送到对应的日志中心存储。

优选的,输入日志格式仅包含一种格式,输出日志格式包含多种格式。

第二方面,本发明还提供了一种动态日志解析装置,包括:

配置模块,用于根据安全设备的日志格式配置日志模板;

模板解析模块,用于获取所述安全设备的待解析日志,将所述日志模板进行解析,得到所述日志模板的结构化数据;所述结构化数据包括输入日志格式和输出日志格式;

日志解析模块,用于根据所述输入日志格式,将所述待解析日志进行解析,得到日志解析数据;

输出模块,用于根据所述输出日志格式,将所述日志解析数据进行格式化处理,得到输出日志,并将所述输出日志发送到日志中心。

第三方面,本发明还提供了一种电子设备,包括存储器和处理器,其中,

存储器,用于存储程序;

处理器,与存储器耦合,用于执行存储器中存储的程序,以实现上述任一种实现方式中的动态日志解析方法中的步骤。

第四方面,本发明还提供了一种计算机可读存储介质,用于存储计算机可读取的程序或指令,程序或指令被处理器执行时,能够实现上述任一种实现方式中的动态日志解析方法中的步骤。

采用上述实施例的有益效果是:本发明提供的一种动态日志解析方法、装置、设备及存储介质,根据安全设备的日志格式配置对应的日志模板,通过日志模板实现对待解析日志进行解析,得到输出日志,日志模板采用了预加载解析成结构化数据,不会因为日志格式增多而降低日志解析的效率,相较于正则表达式,日志模板的编写对专业性的要求较低,不需要大量编写,且日志模板开放给分析人员编写,出错概率降低,维护成本下降。

附图说明

图1为本发明提供的动态日志解析方法的一实施例的流程示意图;

图2为本发明提供的动态日志解析装置的一实施例的结构示意图;

图3为本发明实施例提供的电子设备的结构示意图。

具体实施方式

下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。

在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在对本发明的实施例进行阐述前,对相关名词进行解释说明:

UUID:通用唯一识别码(Universally Unique Identifier);

IPS:入侵防御系统(Intrusion Prevention System);

gawk:一个程式语言,对文字档里的资料做修改、比对、抽取等处理;

grep:global search regular expression(RE)and print out the line,全面搜索正则表达式并把行打印出来是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来;

cat:全程concatenate,命令用于连接文件并打印到标准输出设备上。

本发明提供了一种动态日志解析方法、装置、设备及存储介质,以下分别进行说明。

请参阅图1,图1为本发明提供的动态日志解析方法的一实施例的流程示意图,本发明的一个具体实施例,公开了一种动态日志解析方法,包括:

S101、根据安全设备的日志格式配置日志模板;

S102、获取安全设备的待解析日志,将日志模板进行解析,得到日志模板的结构化数据;结构化数据包括输入日志格式和输出日志格式;

S103、根据输入日志格式,将待解析日志进行解析,得到日志解析数据;

S104、根据输出日志格式,将日志解析数据进行格式化处理,得到输出日志,并将输出日志发送到日志中心。

在本发明具体的实施例中,步骤S101根据安全设备的不同,为每一安全设备配置日志模板,并从安全设备中提取出待解析的日志。由于安全设备的日志格式可能存在不同,因此对于不同格式的安全设备,需要对每一安全设备配置对应格式的日志模板,通过日志模板实现日志解析。

本发明提供一个配置日志模板的具体的实施例,分析人员按照下面模板编写待分析日志的需求信息,具体包括以下信息:

input_log_info:(输入日志格式信息)

type(日志类型)=文本(plain)、JSON(json)、自动(auto);

separation(分隔符)=空格()、逗号(,)、分号(;),用户自定义,默认为逗号(,)

{N}=字段名称,格式字符串(可以不填写,默认按照字符串解析)

{N}.separation(分隔符)=空格()、逗号(,)、分号(;),用户自定义,默认为逗号(,)

output_log_info:(输出日志格式信息)(此节点可以有多个,表示输出多种格式要求,参见附图说明的日志模板示例数据3)

separation(分隔符)=空格()、逗号(,)、分号(;),用户自定义,默认为逗号(,)

{输入日志字段名称}列表,输出字段名称,格式字符串列表(可以不输出,默认按照字符串解析)

{log_center},数组列表,可以配置日志中心信息,用于将该归并后的日志送到对应到日志中心,例如:配置日志中心的域名或IP地址信息,log_center=[192.168.1.1:2088,test.log.com:8088]。

N存在两种格式:

type为plain,格式为%NUM,NUM支持1-20(本专利举例为最大支持20个参数),并且可以用X.Y表示X参数的子参数,例如:{%2.1},表示第2个参数的第一个子参数。

type为json,格式为.X.Y,例如:.alert.signature_id,表示获取alert节点的signature_id数据955193。

{%N}.separation表示第N个参数的分隔符,要求第N个参数为字符串类型。

格式字符串支持包括但不局限于,基本能覆盖95%日志,并且支持自定义:

%T,时间戳(相对1970年1月1日00:00:00经过的秒数),例如:1645528793776。

%D,日期,例如:02/22/2022-19:03:43.068719、2022-02-22T19:03:42.971776+0800。

%M,MAC地址,例如:AF:24:54:4A:BB:43。

%P,IP地址,例如:192.168.1.1。

%U,UUID,设备或业务的通用唯一识别码,例如:783a6c01-99e1-5f7e-9b06-24a7d415c4a2。

%d,整形数,也能适配带0x或0X的十六进制数。

%s,字符串。

%f,浮点数。

%x,十六进制整形数。

%A,知名端口显示为应用或服务。

{输入日志字段名称}列表必须在input_log_info节点下的“{N}=字段名称”中有定义,例如:{攻击时间}、{源IP}/{源端口}、{源IP}:{源端口}都是合理的。

可以理解的是,本发明可以根据多种日志格式编写对应的日志模板,以实现对多种不同日志格式的解析。

在本发明具体的实施例中,步骤S102配置日志模板之后,对日志模板进行解析,了解日志模板的各部分,从而便于对待解析日志的数据进行解析。需要说明的是,输入的日志格式可以为文本(plain)、JSON(json)等,本发明对可能的输入日志格式不做进一步限制。

在本发明具体的实施例中,步骤S103输入日志格式为input_log_info,通过输入日志格式的信息,确定日志类型、分隔符、字段名称等信息,将待解析日志中的对应信息解析出来,得到日志解析数据,并将日志解析数据发送到输出模块。

在本发明具体的实施例中,步骤S104将日志解析数据按照输出日志格式进行格式化,使得输出日志的格式按照设定好的格式进行输出,并将其保存在日志中心。

与现有技术相比,本实施例提供的一种动态日志解析方法,根据安全设备的日志格式配置对应的日志模板,通过日志模板实现对待解析日志进行解析,得到输出日志,日志模板采用了预加载解析成结构化数据,不会因为日志格式增多而降低日志解析的效率,相较于正则表达式,日志模板的编写对专业性的要求较低,不需要大量编写,且日志模板开放给分析人员编写,出错概率降低,维护成本下降。

在本发明的一些实施例中,将日志模板进行解析,得到日志模板的结构化数据,包括:

获取日志模板的输入请求,根据输入请求,输入日志模板;

循环解析日志模板,得到结构化数据的节点类型。

在上述实施例中,在对日志模板进行解析之前,需要等待日志模板的输入请求,在获取日志模板的输入请求之后,按照请求输入对应的日志模板。对日志模板的每一行进行循环解析,识别出结构化数据的节点类型,节点类型决定了日志解析的对应操作,基于节点类型实现对日志进行解析。

在本发明的一些实施例中,根据输入日志格式,将待解析日志进行解析,得到日志解析数据,包括:

若节点类型为输入参数节点,则对待解析日志进行解析处理;

若节点类型为输出参数节点,则输出日志解析后的列表参数;

若节点类型为结束节点,则结束解析流程。

在上述实施例中,当识别到节点类型为输入参数节点时,执行对应的解析操作,对待解析日志进行解析处理;而当识别到节点类型为输出参数节点时,表示对日志的解析工作已经处理完毕,要执行日志的输出操作,并根据日志模板输出列表参数;当节点类型为结束节点时,直接结束整个解析流程。需要说明的是,结束节点为结束符。

在本发明的一些实施例中,若节点类型为输入参数节点,则对待解析日志进行解析处理,包括:

识别待解析日志的格式以及字段名称;

根据待解析的日志格式将待解析日志进行分隔处理,得到分隔符列表;

根据分隔符列表以及字段名称对待解析日志进行解析处理,得到日志解析结果。

在上述实施例中,先识别出日志类型,日志类型可以为文本和JSON格式,也可以为其他格式,本发明在此对日志可能的类型不做进一步限制。对待解析日志中的分隔符节点和字段名称节点进行处理,得到解析后的分隔符列表,通过分隔符列表实现日志解析。

在本发明的一些实施例中,根据分隔符列表以及字段名称对待解析日志进行解析处理,得到日志解析结果,包括:

将字段名称与分隔符列表进行关联,得到分隔符解析结果;

根据分隔符解析结果对待解析日志进行解析,得到日志解析结果。

在上述实施例中,将待解析日志中与分隔符列表中分隔符对应的参数进行关联,对分隔符进行解析,得到分隔符解析结果。可以理解的是,字段名称具有多个,对日志解析的过程需要对多个字段名称与分隔符列表进行关联,得到多个分隔符解析结果,是一个重复关联、分隔处理的过程,通过循环处理,将待解析日志进行完全解析,最终得到日志解析结果,即实现日志的解析。

可以理解的是,由于日志内容可能包含多种参数信息,对日志进行解析时,必定是一个重复的过程,反复将日志中同一类型的数据进行整理。

在本发明的一些实施例中,根据输出日志格式,将日志解析数据进行格式化处理,得到输出日志,并将输出日志发送到日志中心,包括:

将输出日志输出到日志通道;

根据日志通道的通道配置,将输出日志发送到对应的日志中心存储。

在上述实施例中,对待解析日志进行日志解析处理后,得到输出日志,将输出日志输出到日志通道,日志通道为输出日志配置通道,并设置日志中心信息,即设定存储地址,然后将输出日志以及存储地址发送到日志中心进行存储。

在本发明的一些实施例中,输入日志格式仅包含一种格式,输出日志格式包含多种格式。

在上述实施例中,输入日志格式只能对应一种格式,即每个日志模板只能接受一种格式日志的输入,当输入日志格式不同时,只有重新建立日志模板才能进行日志解析;而输出日志格式可以有多种不同的格式,以应对不同格式的输出要求。

本发明还提供一种解析plain格式日志的一实施例,该实施例如下:

从安全设备获取待解析日志,其待解析日志的示例数据具体如下:

02/22/2022-19:03:42.971776[**][1:955193:0]Linux Vendor rpc.statdRemote Format String Vulnerability[**][Classification:Web攻击][Priority:6]{UDP}10.0.0.158:807->10.0.0.163:956

根据日志模板示例数据的separation='[**]',对输入的进行分隔,分隔的token列表结果如下:

1 02/22/2022-19:03:42.971776

2[1:955193:0]Linux Vendor rpc.statd Remote Format StringVulnerability

3[Classification:Web攻击][Priority:6]{UDP}10.0.0.158:807->10.0.0.163:956

然后根据日志模板示例数据以下内容,对上述分隔的token列表关联;

{1}=攻击时间,%D

{2}=攻击描述,%s

{3}=攻击详细信息,%s

在关联后,解析日志的结果如下:

{1}=攻击时间,02/22/2022-19:03:42.971776

{2}=攻击描述,[1:955193:0]Linux Vendor rpc.statd Remote Format StringVulnerability

{3}=攻击详细信息,[Classification:Web攻击][Priority:6]{UDP}10.0.0.158:807->10.0.0.163:956

根据日志模板示例数据的“{3}.separation=””,需要对上述关联后{3}的结果进一步进行分隔处理,分隔符为空格,分隔的token列表结果如下:

1[Classification:Web攻击]

2[Priority:6]

3{UDP}

4 10.0.0.158:807

5 ->

6 10.0.0.163:956

对上述日志内容重复进行分隔和关联处理,进一步提取日志数据:

{3.1}=攻击类型,[Classification:%s]

{3.2}=优先级,[Priority:%d]

{3.3}=协议类型,{%s}

{3.4}=源IP/端口,%s

{3.6}=目的IP/端口,%s

对所有日志内容进行处理后,解析结果如下:

}=攻击时间,02/22/2022-19:03:42.971776

{2}=攻击描述,[1:955193:0]Linux Vendor rpc.statd Remote Format StringVulnerability

{3}=攻击详细信息,[Classification:Web攻击][Priority:6]{UDP}10.0.0.158:807->10.0.0.163:956

{3.1}=攻击类型,Web攻击

{3.2}=优先级,6

{3.3}=协议类型,UDP

{3.4}=源IP/端口,10.0.0.158:807

{3.6}=目的IP/端口,10.0.0.163:956

{3.4.1}=源IP,10.0.0.15

{3.4.2}=源端口,807

{3.6.1}=目的IP,10.0.0.163

{3.6.2}=目的端口,956

将日志模板示例数据的input_log_info子节点都处理完成后,该条日志的键值对(key,value)结构化整理完成,后续output_log_info输出该条日志时,就会采用key直接使用value组装即可:

{攻击时间}=02/22/2022-19:03:42.971776

{攻击描述}=[1:955193:0]Linux Vendor rpc.statd Remote Format StringVulnerability

{攻击详细信息}=[Classification:Web攻击][Priority:6]{UDP}10.0.0.158:807->10.0.0.163:956

{攻击类型}=Web攻击

{优先级}=6

{协议类型}=UDP

{源IP/端口}=10.0.0.158:807

{目的IP/端口}=10.0.0.163:956

{源IP}=10.0.0.15

{源端口}=807

{目的IP}=10.0.0.163

{目的端口}=956

到此则完成了对plain格式日志的解析,对于其他格式的日志处理过程类似,本发明在此不做赘述。

为了更好实施本发明实施例中的动态日志解析方法,在动态日志解析方法基础之上,对应的,请参阅图2,图2为本发明提供的动态日志解析装置的一实施例的结构示意图,本发明实施例提供了一种动态日志解析装置200,包括:

配置模块201,用于根据安全设备的日志格式配置日志模板;

模板解析模块202,用于获取所述安全设备的待解析日志,将所述日志模板进行解析,得到所述日志模板的结构化数据;所述结构化数据包括输入日志格式和输出日志格式;

日志解析模块203,用于根据所述输入日志格式,将所述待解析日志进行解析,得到日志解析数据;

输出模块204,用于根据所述输出日志格式,将所述日志解析数据进行格式化处理,得到输出日志,并将所述输出日志发送到日志中心。

这里需要说明的是:上述实施例提供的装置200可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述方法实施例中的相应内容,此处不再赘述。

请参阅图3,图3为本发明实施例提供的电子设备的结构示意图。基于上述动态日志解析方法,本发明还相应提供了一种动态日志解析设备,动态日志解析设备可以是移动终端、桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该动态日志解析设备包括处理器310、存储器320及显示器330。图3仅示出了电子设备的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

存储器320在一些实施例中可以是动态日志解析设备的内部存储单元,例如动态日志解析设备的硬盘或内存。存储器320在另一些实施例中也可以是动态日志解析设备的外部存储设备,例如动态日志解析设备上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器320还可以既包括动态日志解析设备的内部存储单元也包括外部存储设备。存储器320用于存储安装于动态日志解析设备的应用软件及各类数据,例如安装动态日志解析设备的程序代码等。存储器320还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器320上存储有动态日志解析程序340,该动态日志解析程序340可被处理器310所执行,从而实现本申请各实施例的动态日志解析方法。

处理器310在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器320中存储的程序代码或处理数据,例如执行动态日志解析方法等。

显示器330在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。显示器330用于显示在动态日志解析设备的信息以及用于显示可视化的用户界面。动态日志解析设备的部件310-330通过系统总线相互通信。

在一实施例中,当处理器310执行存储器320中动态日志解析程序340时实现如上的动态日志解析方法中的步骤。

本实施例还提供了一种计算机可读存储介质,其上存储有动态日志解析程序,该动态日志解析程序被处理器执行时实现以下步骤:

根据安全设备的日志格式配置日志模板;

获取安全设备的待解析日志,将日志模板进行解析,得到日志模板的结构化数据;结构化数据包括输入日志格式和输出日志格式;

根据输入日志格式,将待解析日志进行解析,得到日志解析数据;

根据输出日志格式,将日志解析数据进行格式化处理,得到输出日志,并将输出日志发送到日志中心。

综上,本实施例提供的一种动态日志解析方法、装置、设备及存储介质,根据安全设备的日志格式配置对应的日志模板,通过日志模板实现对待解析日志进行解析,得到输出日志,日志模板采用了预加载解析成结构化数据,不会因为日志格式增多而降低日志解析的效率,相较于正则表达式,日志模板的编写对专业性的要求较低,不需要大量编写,且日志模板开放给分析人员编写,出错概率降低,维护成本下降。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

技术分类

06120114703718