CN116303322B - 一种声明式日志泛化方法及装置 - Google Patents
一种声明式日志泛化方法及装置 Download PDFInfo
- Publication number
- CN116303322B CN116303322B CN202310565661.8A CN202310565661A CN116303322B CN 116303322 B CN116303322 B CN 116303322B CN 202310565661 A CN202310565661 A CN 202310565661A CN 116303322 B CN116303322 B CN 116303322B
- Authority
- CN
- China
- Prior art keywords
- generalization
- log
- engine
- analysis
- rule
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000004458 analytical method Methods 0.000 claims description 72
- 239000010410 layer Substances 0.000 claims description 46
- 238000013507 mapping Methods 0.000 claims description 24
- 239000002356 single layer Substances 0.000 claims description 17
- 230000007480 spreading Effects 0.000 claims description 15
- 238000003892 spreading Methods 0.000 claims description 15
- 230000014509 gene expression Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000007405 data analysis Methods 0.000 description 10
- 238000001514 detection method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 238000013480 data collection Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种声明式日志泛化方法及装置,通过编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;通过所述泛化引擎接收网络日志;编写声明文件;将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,能够解决现有日志泛化工作中存在的开发人员工作量大、调试时间长、准确率低及仅能在服务器端实现的问题,减少了开发人员的工作量、调试时间,提高了日志泛化的准确率及日志泛化的灵活性。
Description
技术领域
本申请各实施例属计算机技术领域,尤其涉及一种声明式日志泛化方法及装置。
背景技术
在网络安全的大数据分析项目中,数据是一种生产资料,进行有效数据采集是大数据分析的关键步骤。目前的数据采集过程往往需接收多种类型的数据源,不同类型的数据源通常其数据格式和内容不同,在进行集中分析前,需要对原始数据进行提取、转换、筛选,统一数据的格式和表达含义等操作,这个过程就是日志泛化。
然而,目前的日志泛化通常是通过人工编写条件逻辑的方式来实现,同时存在开发人员工作量大、调试时间长及准确率低的问题;并且由于数据解析过程是基于配置实现,因此只能在服务端或云端进行数据解析,限制了日志泛化的灵活性。
发明内容
本实施例提供了一种声明式日志泛化方法及装置,能够解决现有日志泛化工作中存在的开发人员工作量大、调试时间长、准确率低及灵活性差的问题。
第一方面,本实施例提供了一种声明式日志泛化方法,包括:
编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;通过所述泛化引擎接收网络日志;编写声明文件;将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志。
在一些实施例中,所述通过所述泛化引擎接收网络日志,具体为:使所述泛化引擎通过网络协议接收所述网络日志,其中,所述网络协议是TCP、UDP、HTTP中的至少一种。
在一些实施例中,所述声明文件包括解码规则、解析规则、展开规则及映射规则;所述将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,包括:将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述解码规则对所述网络日志的字节信息进行解码,得到字符串;使所述泛化引擎基于所述解析规则对所述字符串进行解析,得到解析字段名称及解析日志;使所述泛化引擎基于所述展开规则对所述解析日志进行展开,得到展开标识及展开日志;使所述泛化引擎基于所述映射规则将所述解析字段名称对应至所述展开日志上,得到所述泛化日志。
在一些实施例中,所述解码规则为:将所述网络日志的字节信息解析为unicode码;对所述unicode码进行编码,得到所述字符串,其中,所述编码的方式采用gbk编码或utf-8编码。
在一些实施例中,所述解析规则为:若所述字符串是单层结构,则对所述单层结构的字符串进行解析,得到所述解析字段名称及所述解析日志;若所述字符串是多层结构,则逐层对所述多层结构结构的字符串进行解析,得到所述解析字段名称及所述解析日志;其中,所述解析日志的格式是json格式。
在一些实施例中,所述展开规则为:若所述解析日志是单层结构,则提取所述解析日志的关键字作为所述展开标识,并将所述展开标识与所述关键字的值进行对应,得到所述展开日志;若所述解析日志是多层结构,则依次提取所述解析日志的父层的关键字及所述解析日志的子层的关键字,将提取的所述子层的关键字拼接至所述父层的关键字上,得到所述展开标识,将所述展开标识与所述子层的关键字的值进行对应,得到所述展开日志;其中,所述展开日志为单层结构的json格式的日志。
在一些实施例中,所述展开规则还包括:若所述解析日志内包含数组,则将所述数组的顺序号拼接至所述数组的父层的关键字上,得到所述展开标识,将所述展开标识与所述数组的关键字的值进行对应,得到所述展开日志。
在一些实施例中,所述映射规则为:获取所述解析字段名称;若所述解析字段名称中包括含义相同且表述不同的解析字段名称,则对含义相同且表述不同的解析字段名称进行统一命名;将统一命名后的解析字段名称对应至所述展开日志上,得到所述泛化日志。
第二方面,本实施例提供了一种声明式日志泛化装置,包括:
引擎编写模块,用于编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;
日志接收模块,用于通过所述泛化引擎接收网络日志;
声明编写模块,用于编写声明文件;以及
声明发送模块,用于将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志。
第三方面,本实施例提供了一种电子设备,包括处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如第一方面中任一实施例所述方法的步骤。
本申请提供了一种声明式日志泛化方法及装置,通过编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;通过所述泛化引擎接收网络日志;编写声明文件;将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,能够解决现有日志泛化工作中存在的开发人员工作量大、调试时间长、准确率低及仅能在服务器端实现的问题,减少了开发人员的工作量、调试时间,提高了日志泛化的准确率及日志泛化的灵活性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。后文将参照附图以示例性而非限制性的方式详细描述本申请的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分,本领域技术人员应该理解的是,这些附图未必是按比例绘制的,在附图中:
图1为本说明书实施例提供的一种声明式日志泛化方法的流程图;
图2为本说明书实施例提供的一种声明式日志泛化装置的示意图;
图3为本说明书实施例提供的一种电子设备示意图;
图4为本说明书实施例提供的解析过程中数据类型转换示意图;
图5为本说明书实施例提供的解析规则代码图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在网络安全的大数据分析项目中,数据作为生产资料,进行有效的数据采集是大数据分析的关键步骤。目前的数据采集过程往往需对接多种类型的数据源,多种类型的数据源通常包含不同的数据格式及内容。在进行集中分析前,需要对原始数据进行提取、转换、筛选,统一数据的格式和表达含义,这个过程就是日志泛化。
数据采集通常是通过TCP或UDP协议采集数据流,日志泛化的过程是将数据流转化为结构化数据的过程。目前日志泛化的主要方式是在接收原始数据前,先编写好数据解析逻辑然后对原始数据进行解析。经过不断改进,目前上述编写解析逻辑进行解析的方式已经可以实现针对特定格式(目前以json、key-value、xml这三种格式为主)允许使用者使用有限的配置规则实现对不同数据源的数据解析,但仍然存在两方面的问题:一、数据解析基于解析器的规则实现,限制了解析规则的灵活性;二、数据解析过程是基于配置实现,因此只能在服务端或云端进行数据解析,由此也导致了开发人员工作量大、调试时间长及准确率低的问题,限制了日志泛化的灵活性。
针对上述问题,第一方面,如图1所示,本实施例提供了一种声明式日志泛化方法,包括:
S101:编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;
需要说明的是,所述泛化引擎通常包括在日志泛化时可执行的所有操作的代码实现,以使在每次对网络日志进行泛化时,无需修改所述泛化引擎的代码,仅需编写声明文件,所述泛化引擎基于所述声明文件内的规则,调用相应的代码实现所述声明文件内的规则即可,以此可以减小工作人员的工作量,并且不易出错。
需要说明的是,所述泛化引擎可以部署在服务器端,也可部署在客户端,相较于目前的仅能在服务器端或云端进行泛化,提高了部署的灵活性,编写泛化引擎的编程语言本申请不做具体限定。
S102:通过所述泛化引擎接收网络日志;
在一些实施例中,所述通过所述泛化引擎接收网络日志,具体为:使所述泛化引擎通过网络协议接收所述网络日志,其中,所述网络协议是TCP、UDP、HTTP中的至少一种。
需要说明的是,为了减少在不同程序、模块或设备间进行网络日志的传递,可直接通过所述泛化引擎接收所述网络日志,以提高工作效率,通常所述网络日志的来源可以是WAF(网站应用级入侵防御系统,Web Application Firewall)、IPS(互联网协议群,Internet Protocol Suite)、NDR(Network Detection and Response网络检测和响应)、NTA(Network Traffic Analysis,网络流量分析)、HIDS(Host-based IntrusionDetection System,内部监控系统)、EDR(Endpoint Detection & Response,端点检测与响应)等多种设备。
需要说明的是,优先选择通过TCP或UDP协议来接收网络日志,以提高接收速度。
S103:编写声明文件;
需要说明的是,编写声明文件时可基于接收到的数据类型进行编写,通常接收到的数据类型为json、string、number、null及bool等,每种格式的数据对应着不同的可执行的操作,如json格式的数据对应的操作为prune:string格式的数据对应的操作为jsonparse、xml parse、key-value、parse、正则parse、lstrip、rstrip、replace、mask、mapping、toNumber、toBool;number格式的数据对应的操作为mapping、toString、toBool;bool格式的数据对应的操作为toNumber、toString,在编写所述声明文件前,需先定义数据类型后。
需要说明的是,可选择将接收所述网络日志的操作/规则写入所述声明文件,可以设置每次需进行泛化的日志的数量,分批对所述网络日志进行泛化;或对不同数据类型的网络日志分别进行泛化;或对不同设备产生的网络日志进行泛化,以便对泛化后的日志分类存储、管理及分析。
S104:将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志。
在一些实施例中,所述声明文件包括解码规则、解析规则、展开规则及映射规则;所述将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,包括:将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述解码规则对所述网络日志的字节信息进行解码,得到字符串;使所述泛化引擎基于所述解析规则对所述字符串进行解析,得到解析字段名称及解析日志;使所述泛化引擎基于所述展开规则对所述解析日志进行展开,得到展开标识及展开日志;使所述泛化引擎基于所述映射规则将所述解析字段名称对应至所述展开日志上,得到所述泛化日志。
需要说明的是,在对接收到的所述网络日志进行泛化处理时,通常可分为四个步骤,即解码、解析、展开及映射,故可针对每个步骤编写相应的规则,即解码规则、解析规则、展开规则及映射规则。
在一些实施例中,所述解码规则为:将所述网络日志的字节信息解析为unicode码;对所述unicode码进行编码,得到所述字符串,其中,所述编码的方式采用gbk编码或utf-8编码。
需要说明的是,通常网络日志中的信息为原始的字节信息,在对所述网络日志进行处理前,需先将所述网络日志的字节信息转化成字符串;为了将不同数据类型、编程语言的字节信息充分转换成字符串,通常可将所述网络日志的字节信息先解析成unicode码,(unicode码为每种语言中的每个字符设定了统一并且唯一的二进制编码,可以满足跨语言、跨平台进行文本转换、处理的要求)在将字节信息先解析成unicode码后,对所述unicode码进行编码,得到字符串,以便进行后续处理。
在一些实施例中,所述解析规则为:若所述字符串是单层结构,则对所述单层结构的字符串进行解析,得到所述解析字段名称及所述解析日志;若所述字符串是多层结构,则逐层对所述多层结构结构的字符串进行解析,得到所述解析字段名称及所述解析日志;其中,所述解析日志的格式是json格式。
需要说明的是,解析过程是将解码过程生成的字符串转化成json格式的日志,解析过程需要提前把定义好要处理的字符串的数据类型。不同类型的数据对应着不同类型的操作方法,如此可为声明语句提供转换基础,其中,如表1所示,不同类型的数据在解析时对应着不同的操作方式,每个操作方式又会产生新的数据或新的数据类型。
表1
需要说明的是,由于接收到的原始数据可能存在着多层的嵌套,故需要对嵌套内的字符串进行解析,以获得完整的解析结果,解析过程根据声明文件内的解析规则逐层、逐个对字段进行解析,由于事先定义了数据类型和可用操作,因此解析规则等价于解析过程,通过编写解析规则,可将所述字符串的数据类型进行不断的循环转换,以得到用户需要的结果,如图4所示,在解析阶段,数据类型之间可实现string与string格式的转换;string与number之间的格式转换;string与null之间的格式转换;string与boll之间的格式转换;boll与number之间的格式转换;boll与null之间的格式转换;number与null之间的格式转换。
需要说明的是,解析时需获得解析字段的名称,以便后续将所述解析字段名称映射到对应的内容/值上,形成完整的二维关系型表格。
示例性地,如图5所示,图中各项操作含义为:"encoding": "gbk",标记原始数据使用gbk进行解码,得到结果:'{ "date": "2023-01-09", "src": "172.10.0.1", "issuer": "app", "level": 1, "desc":"??? SQL 注入" }';"extract": {}—对解码后的字符串进行什么样的信息提取操作
{"action": "parse","type": "json","fields": [] }—对字符串进行json格式解析,并从中提取出“fields”中配置的字段;
{ "key": "date", "type": "string", "target": "date" }—提取关键字“date”,提取类型是string,并将提取结果最终映射到date字段;
{ "key": "src", "type": "string", "target": "source" }—提取关键字“src”,提取类型是string,并将结果最终映射到source字段;
{ "key": "level", "type": "number", "extract": {}}—提取关键字“level”,提取类型是number,提取结果需通过extract配置进一步提取;
"extract": { "action": "mapping", "parameters": [ [ [ 1, "high" ], [2, "medium" ], [ 3, "low" ] ] ], "type": "string","target": "level" }—“level”的值经过“mapping”函数转换,并使用“parameters”中的参数,将数字1映射为“high”,数字 2 映射为“medium”,数字 3 映射为“low”,结果类型是string,并将最终结果映射到level字段;
{ "key": "desc", "type": "string", "extract": {} }—提取关键字“desc”,提取类型时string,提取结果需要通过extract配置进一步提取;
"extract": { "action": "lstrip", "parameters": [ "???", 1 ], "target": "detail" }—“desc”的值经过“slice”函数转换,并使用“parameters”中的参数,结果类型是string,并将最终结果映射到detail字段;
经过上述解析过程后,最终得到结果表2:
表2
在一些实施例中,所述展开规则为:若所述解析日志是单层结构,则提取所述解析日志的关键字作为所述展开标识,并将所述展开标识与所述关键字的值进行对应,得到所述展开日志;若所述解析日志是多层结构,则依次提取所述解析日志的父层的关键字及所述解析日志的子层的关键字,将提取的所述子层的关键字拼接至所述父层的关键字上,得到所述展开标识,将所述展开标识与所述子层的关键字的值进行对应,得到所述展开日志;其中,所述展开日志为单层结构的json格式的日志。
在一些实施例中,所述展开规则还包括:若所述解析日志内包含数组,则将所述数组的顺序号拼接至所述数组的父层的关键字上,得到所述展开标识,将所述展开标识与所述数组的关键字的值进行对应,得到所述展开日志。
需要说明的是,因最终需要将解析日志泛化为二维关系型表格,且所述解析日志通常包括多层嵌套,故需将所述解析日志的多层嵌套内的内容展开,以形成单层的展开日志,便于后续的分析、存储、查看等,而在将所述解析日志内的内容展开时,需对嵌套内的内容/值分配一个唯一标识即展开标识,通常所述展开以关键字的形式体现,而嵌套内的内容以值的形式体现,以将所述关键字和值对应起来,其展开标识生成过程为:
1)、将下一层级的key与父级的key拼接形成新的key;
2)、将原key的值对应到新的key上;
3)、将新key添加到父级当中;
4)、如果遇到数组,则将数组顺序号作为子级的key,并按照上述1-3步骤执行;
5)、循环执行以上4个步骤,直到所有层级均被展开为止。
在一些实施例中,所述映射规则为:获取所述解析字段名称;若所述解析字段名称中包括含义相同且表述不同的解析字段名称,则对含义相同且表述不同的解析字段名称进行统一命名;将统一命名后的解析字段名称对应至所述展开日志上,得到所述泛化日志。
需要说明的是,因从不同设备采集的网络日志中可能存在着含义相同,但表述不同的解析字段名称,如时间、日期,在将所述解析字段名称映射至所述展开日志前,需先将含义相同且表述不同的解析字段名称进行统一命名,如将时间、日期统一成为日期,以免出现解析字段名称过多,造成映射不便、理解不便的问题,得到所述泛化日志后,可添加如表3所示的二维关系型表格:
表3
需要说明的是,在得到所述泛化日志后,可自动将所述泛化日志存储到数据库或本地,删除所述泛化引擎内的网络日志。
需要说明的是,本实施例的技术方案通过声明文件加泛化引擎的方式来实现对网络日志的信息提取,既能增加日志解析的灵活性,又能减少通过编写条件逻辑语句解析网络日志引起的准确率低的问题,并且通过分发声明文件和泛化引擎的方式,可以实现泛化能力的分发,即可将所述泛化引擎部署在客户端,无需仅在服务器端或云端进行泛化。
综上所述,本实施例提供了一种声明式日志泛化方法,通过编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;通过所述泛化引擎接收网络日志;编写声明文件;将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,能够解决现有日志泛化工作中存在的开发人员工作量大、调试时间长、准确率低及仅能在服务器端实现的问题,减少了开发人员的工作量、调试时间,提高了日志泛化的准确率及日志泛化的灵活性。
第二方面,如图2所示,本实施例提供了一种声明式日志泛化装置,包括:
引擎编写模块210,用于编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;
日志接收模块220,用于通过所述泛化引擎接收网络日志;
声明编写模块230,用于编写声明文件;以及
声明发送模块240,用于将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志。
在一些实施例中,所述通过所述泛化引擎接收网络日志,具体为:
是所述泛化引擎通过网络协议接收所述网络日志,其中,所述网络协议是TCP、UDP、HTTP中的至少一种。
在一些实施例中,所述声明文件包括解码规则、解析规则、展开规则及映射规则;所述将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,包括:将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述解码规则对所述网络日志的字节信息进行解码,得到字符串;使所述泛化引擎基于所述解析规则对所述字符串进行解析,得到解析字段名称及解析日志;使所述泛化引擎基于所述展开规则对所述解析日志进行展开,得到展开标识及展开日志;使所述泛化引擎基于所述映射规则将所述解析字段名称对应至所述展开日志上,得到所述泛化日志。
在一些实施例中,所述解码规则为:将所述网络日志的字节信息解析为unicode码;对所述unicode码进行编码,得到所述字符串,其中,所述编码的方式采用gbk编码或utf-8编码。
在一些实施例中,所述解析规则为:若所述字符串是单层结构,则对所述单层结构的字符串进行解析,得到所述解析字段名称及所述解析日志;若所述字符串是多层结构,则逐层对所述多层结构结构的字符串进行解析,得到所述解析字段名称及所述解析日志;其中,所述解析日志的格式是json格式。
在一些实施例中,所述展开规则为:若所述解析日志是单层结构,则提取所述解析日志的关键字作为所述展开标识,并将所述展开标识与所述关键字的值进行对应,得到所述展开日志;若所述解析日志是多层结构,则依次提取所述解析日志的父层的关键字及所述解析日志的子层的关键字,将提取的所述子层的关键字拼接至所述父层的关键字上,得到所述展开标识,将所述展开标识与所述子层的关键字的值进行对应,得到所述展开日志;其中,所述展开日志为单层结构的json格式的日志。
在一些实施例中,所述展开规则还包括:若所述解析日志内包含数组,则将所述数组的顺序号拼接至所述数组的父层的关键字上,得到所述展开标识,将所述展开标识与所述数组的关键字的值进行对应,得到所述展开日志。
在一些实施例中,所述映射规则为:获取所述解析字段名称;若所述解析字段名称中包括含义相同且表述不同的解析字段名称,则对含义相同且表述不同的解析字段名称进行统一命名;将统一命名后的解析字段名称对应至所述展开日志上,得到所述泛化日志。
第三方面,如图3所示,本实施例提供了一种电子设备300,包括处理器320和存储器310;
所述处理器320通过调用所述存储器310存储的程序或指令,用于执行如第一方面中任一实施例所述方法的步骤。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (9)
1.一种声明式日志泛化方法,其特征在于,包括:
编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;
通过所述泛化引擎接收网络日志;
编写声明文件;
将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志;
所述声明文件包括解码规则、解析规则、展开规则及映射规则;
所述将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,包括:
将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述解码规则对所述网络日志的字节信息进行解码,得到字符串;
使所述泛化引擎基于所述解析规则对所述字符串进行解析,得到解析字段名称及解析日志;
使所述泛化引擎基于所述展开规则对所述解析日志进行展开,得到展开标识及展开日志;
使所述泛化引擎基于所述映射规则将所述解析字段名称对应至所述展开日志上,得到所述泛化日志。
2.根据权利要求1所述的声明式日志泛化方法,其特征在于,所述通过所述泛化引擎接收网络日志,具体为:
使所述泛化引擎通过网络协议接收所述网络日志,其中,所述网络协议是TCP、UDP、HTTP中的至少一种。
3.根据权利要求2所述的声明式日志泛化方法,其特征在于,所述解码规则为:
将所述网络日志的字节信息解析为unicode码;
对所述unicode码进行编码,得到所述字符串,其中,所述编码的方式采用gbk编码或utf-8编码。
4.根据权利要求2所述的声明式日志泛化方法,其特征在于,所述解析规则为:
若所述字符串是单层结构,则对所述单层结构的字符串进行解析,得到所述解析字段名称及所述解析日志;
若所述字符串是多层结构,则逐层对所述多层结构结构的字符串进行解析,得到所述解析字段名称及所述解析日志;
其中,所述解析日志的格式是json格式。
5.根据权利要求2所述的声明式日志泛化方法,其特征在于,所述展开规则为:
若所述解析日志是单层结构,则提取所述解析日志的关键字作为所述展开标识,并将所述展开标识与所述关键字的值进行对应,得到所述展开日志;
若所述解析日志是多层结构,则依次提取所述解析日志的父层的关键字及所述解析日志的子层的关键字,将提取的所述子层的关键字拼接至所述父层的关键字上,得到所述展开标识,将所述展开标识与所述子层的关键字的值进行对应,得到所述展开日志;
其中,所述展开日志为单层结构的json格式的日志。
6.根据权利要求2所述的声明式日志泛化方法,其特征在于,所述展开规则还包括:
若所述解析日志内包含数组,则将所述数组的顺序号拼接至所述数组的父层的关键字上,得到所述展开标识,将所述展开标识与所述数组的关键字的值进行对应,得到所述展开日志。
7.根据权利要求2所述的声明式日志泛化方法,其特征在于,所述映射规则为:
获取所述解析字段名称;
若所述解析字段名称中包括含义相同且表述不同的解析字段名称,则对含义相同且表述不同的解析字段名称进行统一命名;
将统一命名后的解析字段名称对应至所述展开日志上,得到所述泛化日志。
8.一种声明式日志泛化装置,其特征在于,包括:
引擎编写模块,用于编写泛化引擎,所述泛化引擎用于实现声明式文件内的规则;
日志接收模块,用于通过所述泛化引擎接收网络日志;
声明编写模块,用于编写声明文件;以及
声明发送模块,用于将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志;
所述声明文件包括解码规则、解析规则、展开规则及映射规则;
所述将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述声明文件内的规则对所述网络日志进行泛化,得到泛化日志,包括:
将所述声明文件发送至所述泛化引擎,以使所述泛化引擎基于所述解码规则对所述网络日志的字节信息进行解码,得到字符串;
使所述泛化引擎基于所述解析规则对所述字符串进行解析,得到解析字段名称及解析日志;
使所述泛化引擎基于所述展开规则对所述解析日志进行展开,得到展开标识及展开日志;
使所述泛化引擎基于所述映射规则将所述解析字段名称对应至所述展开日志上,得到所述泛化日志。
9.一种电子设备,其特征在于,包括:
处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310565661.8A CN116303322B (zh) | 2023-05-19 | 2023-05-19 | 一种声明式日志泛化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310565661.8A CN116303322B (zh) | 2023-05-19 | 2023-05-19 | 一种声明式日志泛化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116303322A CN116303322A (zh) | 2023-06-23 |
CN116303322B true CN116303322B (zh) | 2023-08-11 |
Family
ID=86798200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310565661.8A Active CN116303322B (zh) | 2023-05-19 | 2023-05-19 | 一种声明式日志泛化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303322B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447099A (zh) * | 2015-11-11 | 2016-03-30 | 中国建设银行股份有限公司 | 日志结构化信息提取方法及装置 |
CN106294673A (zh) * | 2016-08-08 | 2017-01-04 | 杭州玳数科技有限公司 | 一种用户自定义规则实时解析日志数据的方法与系统 |
CN109885556A (zh) * | 2019-01-10 | 2019-06-14 | 四川长虹电器股份有限公司 | 一种设备数据模型的实现方法 |
CN113419772A (zh) * | 2021-06-30 | 2021-09-21 | 平安国际智慧城市科技股份有限公司 | 响应数据打包及拆包方法、打包装置、设备及介质 |
CN114840421A (zh) * | 2022-04-28 | 2022-08-02 | 中国工商银行股份有限公司 | 日志数据处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11372868B2 (en) * | 2019-01-14 | 2022-06-28 | Oracle International Corporation | Parsing of unstructured log data into structured data and creation of schema |
US11973780B2 (en) * | 2020-10-14 | 2024-04-30 | Palo Alto Networks, Inc. | Deobfuscating and decloaking web-based malware with abstract execution |
-
2023
- 2023-05-19 CN CN202310565661.8A patent/CN116303322B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447099A (zh) * | 2015-11-11 | 2016-03-30 | 中国建设银行股份有限公司 | 日志结构化信息提取方法及装置 |
CN106294673A (zh) * | 2016-08-08 | 2017-01-04 | 杭州玳数科技有限公司 | 一种用户自定义规则实时解析日志数据的方法与系统 |
CN109885556A (zh) * | 2019-01-10 | 2019-06-14 | 四川长虹电器股份有限公司 | 一种设备数据模型的实现方法 |
CN113419772A (zh) * | 2021-06-30 | 2021-09-21 | 平安国际智慧城市科技股份有限公司 | 响应数据打包及拆包方法、打包装置、设备及介质 |
CN114840421A (zh) * | 2022-04-28 | 2022-08-02 | 中国工商银行股份有限公司 | 日志数据处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于事件日志增强的时序活动表示学习方法;倪维健;孙宇健;曾庆田;刘彤;郭浩宇;刘聪;;计算机集成制造系统(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116303322A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108292323B (zh) | 使用数据源的元数据的数据库操作 | |
JP6922538B2 (ja) | Api学習 | |
EP2616965B1 (en) | Support for a parameterized query/view in complex event processing | |
US10949178B1 (en) | Method and system for decomposing a global application programming interface (API) graph into an application-specific API subgraph | |
CN110704479A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
US20040268306A1 (en) | Methods, systems and computer program products for language independent data communication and display | |
US20080208830A1 (en) | Automated transformation of structured and unstructured content | |
EP2924633A1 (en) | A system and method for extracting a business rule embedded in an application source code | |
WO2022126983A1 (zh) | 电子报表文件导出方法、装置、设备及存储介质 | |
US20090019432A1 (en) | Generating A Dynamic Content Creation Program | |
US11263062B2 (en) | API mashup exploration and recommendation | |
CA2760321C (en) | Tree structured data transform | |
CN111460241B (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
US9305032B2 (en) | Framework for generating programs to process beacons | |
KR20190058141A (ko) | 문서로부터 추출되는 데이터를 생성하는 방법 및 그 장치 | |
CN109284088B (zh) | 一种信令大数据处理方法及电子设备 | |
CN114385148A (zh) | 一种实现联动功能的方法、装置、设备和存储介质 | |
Liu et al. | An XML-enabled data extraction toolkit for web sources | |
CN116303322B (zh) | 一种声明式日志泛化方法及装置 | |
US10713014B2 (en) | Multi-platform interface framework | |
CN109408577B (zh) | Oracle数据库json解析方法、系统、装置及可存储介质 | |
US9886424B2 (en) | Web application framework for extracting content | |
US20150067475A1 (en) | Web Application Framework | |
CN110851678A (zh) | 一种爬取数据的方法和装置 | |
Le Zou et al. | On synchronizing with web service evolution |
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 |