基于分类的通用模板日志解析方法

文档序号:1465978 发布日期:2020-02-21 浏览:14次 >En<

阅读说明:本技术 基于分类的通用模板日志解析方法 (General template log analysis method based on classification ) 是由 朱连凯 王英 任军锋 陆炜 陈政熙 于 2019-10-25 设计创作,主要内容包括:本发明涉及一种基于分类的通用模板日志解析方法,对不同种类的日志进行分类处理,通过统一编码后,再通过创建的日志模板进行具体解析、分类和转换,形成统一标准化的输出数据,本发明方法可以覆盖绝大部分的日志解析的模板编写与归一化数据的映射工作。可以通过本发明方法轻松解决种类繁多的日志解析与数据归一化的工作,实现了解析日志数据统一管理和方便提取,杜绝失效数据,并提升工作效率。(The invention relates to a general template log analysis method based on classification, which is used for classifying different types of logs, specifically analyzing, classifying and converting the logs through a created log template after uniform coding to form uniform and standardized output data. The method can easily solve the various log analysis and data normalization work, realize the unified management and convenient extraction of the analyzed log data, stop failure data and improve the working efficiency.)

基于分类的通用模板日志解析方法

技术领域

本发明涉及一种数据管理技术,特别涉及一种基于分类的通用模板日志解析方法。

背景技术

不同厂商的设备产生了大量自定义格式的日志数据,导致综合管理和预警平台在日志集中管理解析过程中疲于应付,重复工作屡屡发生。对于软件快速迭代的设备,在日志结构不能继承先前版本的情况,往往会导致日志解析出的数据存在明显的错误,非常不利于管理和预警平台快速准确的监测系统的运行情况。

当前一些日志解析软件工具,如logstash,Graylog,Nagios等虽然可以解析日志数据,但是配置复杂,并且针对特定的场景在使用方面存在许多掣肘情况。

发明内容

本发明是针对各种产品日志解析繁琐,不便于数据统计整理的问题,提出了一种基于分类的通用模板日志解析方法,对不同设备的日志形成各自的模板,然后使用解析模板统一进行解析以达到解析各类日志的目的。

本发明的技术方案为:一种基于分类的通用模板日志解析方法,具体包括如下步骤:

1)对不同种类的日志进行分类处理:

第一步:将产品基本信息进行分类编码;

第二步:将在第一步编码的同时,增加网络地址与编码信息的映射信息,以确定日志的唯一输入源;

第三步:在前两步编码为父目录的基础上,以时间为基线,对不同日期,时间或时刻的日志数据来源进行进一步分类编码,在完成上述设备型号编码以后,将为形成编码的设备创建目录,以作为区别于其他设备的日志数据的保存目录;

2)创建日志模板,日志模板形成树结构对各种编码后日志进行具体解析、分类和转换,形成统一标准化的输出数据;

日志模板为XML模板,分为三级,

第一级为SIPAI-Extract,作为父元素;

第二级为DataSource数据源,对应步骤1)中分类编码信息,以及数据属性;

第三级为对第二级数据进行解析、分类和转换形成统一标准化的输出数据。

所述步骤2)中日志模板第三级包括:

DataModel数据模型,定义日志的具体解析规则,通过其子元素构建某一具体日志的解析规则,指定提取结果输出的具体数据表;

ClassifyModel分类模型,数据提取出的特征字符作为分表标记,对应到相应的DataModel中的数据,区分同一厂商产品的数据源下存在多种日志格式,如果只存在单一的日志格式,则无需使用;

ConvertTable转换表格,将日志数据归一化处理后,与归一化的字典表进行映射,通过映射达到统一入库,形成统一标准化的输出数据。

本发明的有益效果在于:本发明基于分类的通用模板日志解析方法,通过使用日志模板的自定义元素,以及元素的属性与子元素,本发明方法可以覆盖绝大部分的日志解析的模板编写与归一化数据的映射工作。可以通过本发明方法轻松解决种类繁多的日志解析与数据归一化的工作,实现了解析日志数据统一管理和方便提取,杜绝失效数据,并提升工作效率。

附图说明

图1为本发明基于分类的通用模板日志解析方法总体流程图。

具体实施方式

如图1所示基于分类的通用模板日志解析方法总体流程图,日志来源包括防火墙/入侵检测等安全产品日志,Windows/Linux等主机日志,路由器/交换机/集线器等网络设备日志,数据库/应用系统等日志,作为通用模板日志解析方案的输入数据。为解决种类繁多的日志解析工作,首先对不同种类的日志进行分类处理,第一步:将产品基本信息进行分类编码如下表1所示,分类中编号为自定义编号或输入后根据规则随机生成编号,且保持对以后版本的支持;厂商信息:给每个厂商一个统一编号;产品大类:为区分同一厂商的不同设备;产品名称为了用了区分同一设备厂商的同一种产品大类有不同种产品名称;版本信息:针对相同产品的不同版本进行编码。

表1

厂商信息 产品大类 产品名称 版本信息
V+4位十机制 P+3位十机制 D+3位十进制 C+3位十进制

以Oracle公司的MySQL5.7版本为例,可编码为V0009P009D002C002唯一编码。

在实际的使用过程中,可能会遇到相同版本的情况,为了更好的明确日志的来源,第二步:将在以上编码的同时,增加网络地址与编码信息的映射信息,以确定日志的唯一输入源。

如在实际的现场环境中,有192.168.1.21—192.168.1.25范围的IP使用的是相同的版本的设备,为了区分其不同来源将其IP进行映射。如表2所示。

表2

IP 编号
192.168.1.21 N001
192.168.1.22 N002
192.168.1.23 N003
192.168.1.24 N004
192.168.1.25 N005

第三步:以编码为父目录的基础上,以时间为基线,对不同日期,小时,分钟(时间颗粒度可根据实际的需求进行定制)的日志数据来源进行进一步分类。在完成具体设备型号编码以后,将为形成编码的设备创建目录,以作为区别于其他设备的日志数据的保存目录。这样做的目的有两个,一是缩小日志解析的查找范围,二是为数据打标签,为下来的原始日志查询或者按时间段进行全文检索等操作做前期准备。以下为分钟为时间颗粒度,最终带有时间信息的日志数据为:

/Data/log/V061P020D001C011 N001/20181023/09/15/192.168.52.131_oracle.log。

在完成设备日志编码分类,并完成集中化采集中心的日志存储目录创建以后,将对采集的原始日志数据做进一步的解析工作,以达到种类繁多的日志数据的归一化工作。

为了对种类繁多的设备日志进行解析,采用一种自主开发的日志模板,对不同设备的日志形成各自的日志模板,在日志模板中进行日志归一化数据的映射处理,便于日志解析后数据存储和提取。

1、本发明中的日志模板,以XML形式体现(当前仅对XML模板进行支持),并在XML中,将根据日志解析的需求,自定义XML文件中的相关元素,属性,标签等关键字,日志模板形成树结构对各种编码后日志进行具体解析、分类和转换,形成统一标准化的输出数据。

日志模板中的必要元素:

SIPAI-Extract(为XML模板的一级元素,该元素作为本文方法中的日志模板的所有元素的父元素,在整个日志模板中起到每一日志模板中都需要包含该元素。本设计方法中强制规定所有的自定义模板元素的使用,都必须要在该父元素内使用,该元素强调的是象征意义,功能上的意义不大。

DataSource(数据源)为XML模板的二级元素,目的是为了配置厂商产品编号信息明确该模板可以解析的日志数据,以及日志数据的压缩方式和编码格式等信息。

DataModel(数据模型)为XML模板的三级元素,该元素中定义了日志的具体解析规则,通过其子元素构建某一具体日志的解析规则。

ClassifyModel(分类模型)为XML模板的三级元素,目的是区分同一厂商产品的DataSource源下存在多种日志格式(即存在多个DataModel),如果只存在单一的日志格式,则无需使用该元素。

ConvertTable(转换表格)为XML模板的三级元素,目的是与需要归一化的字典表进行映射,通过映射达到统一入库,形成统一标准化的输出数据。

以下对自定义XML模板中的元素,属性,标签等进行详细介绍。

2、二级元素:

2.1、DataSource元素

定义:为模板提供数据来源的编号和数据内容的编码压缩格式等信息。

位置:在该提取规则XML中的树的第2级,即<SIPAI-Extract>的下一级。

属性:

name:DataSource的名称。

value:DataSource处理的厂商产品数据编码(如:V007P001D001C001)。

encode:DataSource的数据来源的编码格式(如:utf-8,gbk,默认utf-8或不写该属性)。

compress:DataSource来源数据的压缩编码格式,(如:base64,默认为空或不写该属性)。

offset:采集的每行的数据的偏移位置(默认为空不偏移,或不写该属性)。

offset_str:采集的每行的数据的开始采集的标志字符串(默认为从行首开始,或不写该属性)

2.2、Include元素

定义:该元素可以提供外部引入和模板复用的服务,对于需要从外部引入的文件或者模板可以通过该元素进行直接引用。

位置:2级元素,一般出现在模板的开头位置

属性:

name

src。

3、三级元素,也是二级元素的子元素:ClassifyModel、DataMode、ConvertTable。

3.1、ClassifyModel元素

定义:分类规则,数据提取出的特征字符作为分表标记,对应到相应的DataModel的value中,DataModel中的value支持多个字符串匹配,用逗号隔开通过使用子元素规则,提取出分类特征字段。

位置:3级元素,在DataSource下一级

属性:

name:分类规则名称

子元素:Block、String、Delimiter、Number

3.2、Data Model元素

定义:一个DataModel中包含了一条或者一段通用的日志或者数据的提取规则,同时可以指定提取结果输出的具体数据表,通过其子元素组合出提取字段的规则,以对一条或者一类数据进行解析提取。

位置:3级元素,在DataSource的下一级

属性:

name:DataModel的名称

value:如果有ClassifyModel时,匹配的字段内容,可以匹配多个,用','隔开(可选属性)

table_id:提取出的结构化数据写入表的table_id,是16进制字符串,如,"0x02",该字典表公开,选择即可。

子元素:Block、String、Delimiter、Number、

3.3、ConvertTable元素

定义:字段转换表中定义了需要转换的字段字典表,该字段为第三方设备的日志数据归一化为平台统一数据提供了通道,通过该转换元素,得以让第三方定义数据类型等定义与统一管理平台的数据统一,让不同设备厂商的日志可以在统一管理平台上归一化处理展示。

位置:3级元素,在DataSource的下一级

属性:

name:ConvertTable的名称,必须唯一

describe:该表描述信息

子元素:Map。

4、子元素提取:

4.1、Block元素

定义:Block一般提取规则,支持自定义正则表达式提取,以及IP,MAC,Time,Email等特殊格式数据提取。

位置:4级元素,一般在DataModel或者ClassifyModel的下一级

属性:

name:Block规则的名称

rule_type:规则类型,列表【Normal,Ip,Mac,Time,Email】,选择这5种类型任意一种。

rule_value:针对特rule_type对应的值。

rule_type为"Normal",则rule_value内容为提取规则自定义正则表达式。

例1:rule_type为"Ip",则rule_value可选内容【Basic】,基本的点分10进制IP格式。

例2:rule_type为"Mac",则rule_value可选内容【MS,Cisco,Basic】。

例3:rule_type为"Time",则rule_value可选内容【Date,DateTime,Time】。

例4:rule_type为"Email",则rule_value可选内容为【Basic】。

例5:tag:写入数据的tag_id值,入库字段内容,16进制数,tag_id,有对应字典表。不写该属性值,则该结果,提取但不输出。(可选属性)

ConvertTB:转换规则字典表。必须在先定义好ConvertTable,在这才可以使用(可选属性)。

子元素:无

例1

实例:<!--srcip=192.168.1.22dstip-->

<Block name=”src_ip”rule_type=”Normal”rule_value=”srcip=(.*?)dst”tag=”0x00a1”/>

例2

Basic:XXX.XXX.XXX.XXX

实例:<!--srcip=192.168.1.22dstip-->

<Block name=”src_ip”rule_type=”Ip”rule_value=”Basic”tag=”0x00a1”/>

例3

MS:xx-xx-xx-xx-xx-xx形式

Cisco:xxxx.xxxx.xxxx形式

Basic:xx:xx:xx:xx:xx:xx形式

实例:<!--MAC=00:11:22:aa:bb:cc srcip-->

<Block name=”macaddress”rule_type=”Mac”rule_value=”Basic”tag=”0x00a2”/>

<!--MAC=0011.22aa.bbcc srcip-->

<Block name=”macaddress”rule_type=”Mac”rule_value=”Cisco”tag=”0x00a2”/>

<!--MAC=00:11:22:aa:bb:cc srcip-->

<Block name=”macaddress”rule_type=”Mac”rule_value=”MS”tag=”0x00a2”/>

例4

Date:2018-12-22形式

DateTime:2018-01-23 19:23:00形式

Time:19:55:34形式

实例:<!--time=2018-12-23 15:22:51-->

<Block name=”datestr”rule_type=”Time”rule_value=”Date”tag=”0x00a3”/>

<!—提取结果2018-12-23-->

<Block name=”datetimestr”rule_type=”Time”rule_value=”DateTime”tag=”0x00a3”/>

<!—提取结果2018-12-23 15:22:51-->

<Block name=”timestr”rule_type=”Time”rule_value=”Time”tag=”0x00a3”/>

<!—提取结果15:22:51-->

例5

实例:<!--Email=[email protected]>

<Block name=”Emailaddress”rule_type=”Email”rule_value=”Basic”tag=”0x00a4”/>

4.2、Delimiter元素

定义:固定字符串,或者占位字符串,辅助String和Number规则中特征字符匹配

位置:4级元素,一般在DataModel或者ClassifyModel的下一级

属性:

name:Delimiter的名称

value:占位字符串

tag:写入数据的tag_id值,入库字段内容,16进制数,tag_id,有对应字典表。不写该属性值,则该结果,提取但不输出。(可选属性)

ConvertTB:转换规则字典表。必须在先定义好ConvertTable,在这才可以使用(可选属性)

子元素:无

4.3、Number元素

定义:数字类型的数据提取规则,(针对一些16进制数据,大小端需要转换的情况)

位置:4级元素,一般在DataModel或者ClassifyModel的下一级

属性:

name:Number的名称

length:提取内容的长度(可选,如果没有,则根据规则前后Delimiter特征字符串提取内容)

valueType:数字类型【hex,dec】,默认是dec

endian:数据大小端【big,little】,默认是little,且在valueType为hex有效

tag:写入数据的tag_id值,入库字段内容,16进制数,tag_id,有对应字典表。不写该属性值,则该结果,提取但不输出。(可选属性)ConvertTB:转换规则字典表。必须在先定义好ConvertTable,在这才可以使用(可选属性)

子元素:无

4.4、Map元素

定义:字段转换的字典映射表,每条映射关系

位置:4级元素,一般在ConvertTable的下一级

属性:

from:转换前的数据内容

to:转换后的数据内容

describe:转换内容描述

子元素:无。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种文本转档方法、装置以及相关设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!