日志结构化信息提取方法及装置的制造方法_3

文档序号:9687560阅读:来源:国知局
split),第二种是正则表达式解析(regula;r_expression)。对于由固定分隔符(可W支持 多个分隔符)分割的日志,可W直接使用第一种解析规则,性能较好。对于其他类型的日志, 可使用第二种解析规则,虽然性能上会比第一种差一些,但是正则表达式极其灵活,能满足 绝大多数的日志解析需求。
[0100] 因此,提取方式可支持正则表达式(regula;r_ewression)和分隔符切分(split) 两种方式。
[0101]当提取方式为正则表达式,则通过指定提取方法参数〈methotstr〉中的规则参数 提取字段内容,如上述孤L文件中的~(\S+)"(POST|GET)(\S+)\?parm=(\S+)"$。其中/'(Γ 内的内容即为提取的内容。
[0102] 当〈method〉为split方法时,则要根据<method_st;r〉中的参数(分隔符)进行字段 提取,如:<method_st;r〉I @ I </method_st;r〉表示按照分隔符I @ I切分数据。
[0103] 7),<fieW_list>:解析结果字段列表。解析结果字段列表中包含了多个〈field〉 字段,每个〈field〉中包含了字段名称〈name〉、数据类型<*796〉、描述<desc>.属性。
[0104] 通过提取规则提取的字段按照<門6山_113*〉中指定的字段顺序匹配。
[0105] 字段名和字段类型组合构成对字段的描述,字段名顺序应与字段解析规则提取 的字段顺序一致。
[0106] 其中,字段类型用于标识字段的数据类型,此处的数据类型采用通用数据类型,W 便目标数据库能够自动解析、识别输出文件中的数据,完成数据的自动加载,具体参见附录 通用数据类型说明。
[0107] 如果〈field〉字段还需要解析,需要指定〈rule〉嵌套解析规则。
[0108] 字段解析规则支持嵌套,大大提高解析的灵活性。对于比较复杂的日志行,单条解 析规则往往无法解析出所有有价值的字段。即使可W,解析规则往往也会变的异常复杂,影 响解析性能。
[0109] 嵌套解析规则就可W避免此问题,比如有些日志,大部分字段是用固定分隔符分 害d,小部分只能用正则表达式来解析,如果没有嵌套解析规则,就只能全部使用正则表达式 来解析,不仅解析规则很复杂,而且性能也不理想。有了此嵌套解析的能力,孤L中可W先使 用正则表达式解析,把固定分隔符分割的部分当作单一字段,然后针对此字段再设置固定 分隔符分割解析,反之亦然。
[0110] 图4示出了日志处理引擎的另一流程图,其中虚线方框内的逻辑运行在 化doopMapReduce计算框架的Map函数中。一个Map函数处理大概64M~512M大小的日志块 (依赖于皿FS的block大小设置)。
[0111] 现对其流程介绍如下:
[0112] 在Map函数的初始阶段获取日志DDL文件,并解析此DDL文件,获取字段解析规则 列表和对应的字段定义。日志解析规则可W只有一条,也可W有多条。如果整个日志文件所 有有价值的日志都是同一格式,则只需要一条解析规则即可。对于很多日志,往往存在不同 格式的日志行,如果运些日志行对后续分析都有价值,就需要多条不同的解析规则来解析, 并存储到不同的输出文件。
[0113] W前述日志文件和对应的日志DDL文件为例,对日志解析过程进行说明如下:
[0114] 对于第一行日志,先应用第一条提取规则抓LE_01中<method_str〉</method_st;r〉 定义的正则表达式进行匹配,匹配成功,提取出两个字段:
[0115] IP(10.10.201.115)
[0116] parm(C001%7C%40%7C%E5%BC%A0%E4%B8%89)〇
[0117]在属性定义,需要使用嵌套解析规则pa;rm_;rule进一步提取parm字段,首先需要对 parm字段进行前置处理,即<pre_action>定义的urldecode解码(解码后的值为:C0011 @ I张 Ξ),然后再运用嵌套解析规则parm_rule定义的固定分隔符"I @ Γ'分割提取字段,得到两个 字段:CUST0MER_ID(C001)和 CUST0MER_NAME(张 Ξ)。第一行日志提取完成。
[0118] 对于第二行日志,也是先应用第一条提取规则RULE_01中<method_strX/method_ str〉定义的正则表达式进行匹配,匹配失败。再用第二条提取规则RULE_02定义的固定分隔 符进行分割,提取成功,得到两个字段:ACC0UNT_N0(A008)和ACCOUNT_BALANCE(456.00),第 二行日志提取完成。
[0119] 处理完日志后,日志处理引擎输出结构化数据(输出文件)和对应的字段类型说明 文件。
[0120] 仍W前面的日志文件和日志DDL文件为例,每个字段解析规则分别输出一份输出 文件和一份对应的字段类型说明文件。
[0121] 例如,RULE_01对应的输出文件的内容如下(W I % I分割,可指定)为:
[0122] 10.10.201.115l %ICOOlI % I张 Ξ
[0123] 对应的字段类型说明文件内容为:
[0124] <?xml version = "l .0"encoding = "UTF-8"?〉
[0125] <transmit-content>
[0126] 〈file〉
[0127] <file_name>EXAMPLE_LOG</file_name>
[012引〈ru1e_name〉抓LE_01〈/ru1e_name〉
[0129] <file_version>l.0</file_version>
[0130] <field_list>
[0131] 〈field〉
[0132] <name>IP</name>
[0133] <type>VARCHAR(15)</type>
[0134] <desc>Visitor's IP address</desc>
[0135] 〈/field〉
[0136] 〈field〉
[0137] <name>CUSTOMER_ID</name>
[0138] <type>VARCHAR(20)</type>
[0139] <desc〉Qistome;r's ID</desc〉
[0140] 〈/field〉
[0141] 〈field〉
[0142] <name>CUSTOMER_NAME</name>
[0143] <type>VARCHAR(50)</type>
[0144] <desc〉Qistome;r's name</desc>
[0145] 〈/field〉
[0146] </field_list>
[0147] 〈/file〉
[0148] </transmit-content>
[0149] RULE_02对应的输出文件内容(W I % I分割,可指定)为:
[0150] A008|%I456.00
[0151] 对应的字段类型说明文件内容为:
[0152] <?xml version = "l .0"encoding = "UTF-8"?〉
[0153] <transmit-content>
[0154] 〈file〉
[01 巧]<file_name〉EXAMPLE_LOG</file_name>
[0156] 〈ru1e_name〉抓LE_0 2〈/ru1e_name〉
[0157] <file_version>l.0</file_version>
[015引 <field_list〉
[0159] 〈field〉
[0160] <name>ACC0UNT_N0</name>
[0161] <type>VARCHAR(15)</type>
[0162] <desc>Account number</desc>
[0163] 〈/field〉
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1