CN113076107A - 一种通过有限状态机对日志进行自动采集融合的方法 - Google Patents

一种通过有限状态机对日志进行自动采集融合的方法 Download PDF

Info

Publication number
CN113076107A
CN113076107A CN202110395569.2A CN202110395569A CN113076107A CN 113076107 A CN113076107 A CN 113076107A CN 202110395569 A CN202110395569 A CN 202110395569A CN 113076107 A CN113076107 A CN 113076107A
Authority
CN
China
Prior art keywords
attribute
lua
log
abstract syntax
value
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.)
Pending
Application number
CN202110395569.2A
Other languages
English (en)
Inventor
张召
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Upyun Technology Co ltd
Original Assignee
Hangzhou Upyun Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Upyun Technology Co ltd filed Critical Hangzhou Upyun Technology Co ltd
Priority to CN202110395569.2A priority Critical patent/CN113076107A/zh
Publication of CN113076107A publication Critical patent/CN113076107A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种通过有限状态机对日志进行自动采集融合的方法,包括:通过注入Lua代码,生成日志采集系统状态机的Lua文件;通过运行Lua虚拟机,执行Lua文件转化为目标语言的抽象语法树,生成目标语言的代码;状态机引擎执行该目标语言的生成代码,对日志采集系统的状态切换和动作进行控制。本发明中,当日志数据源发生变化或日志采集逻辑发生变化时,只需要在控制台使用Lua重写对应的规则即可,大幅减少了因业务逻辑变化等带来编译目标语言发布等上线流程,提升了日志采集系统稳定性和灵活性,提升了开发效率。

Description

一种通过有限状态机对日志进行自动采集融合的方法
技术领域
本发明涉及网络日志采集技术领域,具体涉及一种通过有限状态机对日志进行自动采集融合的方法。
背景技术
有限状态机能够有效、方便地描述系统和组件的动态行为,其广泛应用于日志采集应用开发。有限状态机具有有限个状态,一般包括状态及状态之间的转移关系。
网络中网关设备的数量较多,且分布不均的特点,用于从网关设备上获取网络日志的各网络日志服务器在物理上是分布式的,并需要将各自得到的日志采集数据通过网络传送至日志采集服务器,由于日志采集数据的数据量较大,将日志采集数据传送至日志采集服务器则需要较高的网络带宽资源,且当日志采集数据在保存时,也需要较多的存储资源。
因此,需要一种将Lua代码注入有限状态机的执行和应用方案,其能够减少采用静态语言的有限状态机时对象的数量,从而减少对运行该有限状态机的应用的存储空间的占用,降低运行时间开销,提高系统整体性能。
发明内容
本发明提供一种通过有限状态机对日志进行自动采集融合的方法,用以解决现有技术中存在的传输日志采集数据所需的网络带宽资源较多,存储日志采集数据所需的存储资源较多的问题。
一种通过有限状态机对日志进行自动采集融合的方法,包括以下步骤:
1)日志采集数据压缩,具体包括:
1.1)获取日志采集数据;
1.2)分别对所述日志采集数据中各属性字段的各属性值进行编码,得到与每个属性值对应的Lua代码;
1.3)使用得到的所述Lua代码,替换所述日志采集数据中对应的属性值,得到压缩后的日志采集数据。
2)日志采集数据解压缩。
步骤1.2)中,各属性字段可以包括:接入点名称、归属基站ID、IP、URL等。
步骤1.2)中,编码具体包括:
1.2.1)分别统计该属性字段的各属性值在所述日志采集数据中出现的次数;
1.2.2)根据各属性值在所述日志采集数据中出现的次数,对该属性字段的各属性值进行编码,得到与各属性值分别对应的Lua代码,其中,出现的次数大的属性值对应的Lua代码的数据量,不大于出现的次数小的属性值对应的Lua代码的数据量。
步骤1.2.2)中,根据各属性值在所述日志采集数据中出现的次数,对该属性字段的各属性值进行编码,得到与各属性值分别对应的Lua代码,具体包括:
1.2.2.1)根据各属性值在所述日志采集数据中出现的次数,构建抽象语法树,其中,所述抽象语法树中的各叶子节点,分别对应表征各属性值在所述日志采集数据中出现的次数,且所述抽象语法树中的父节点表征的数值,为该父节点的两个子节点表征数值的和值,且所述抽象语法树中每个节点表征的数值,不小于该节点所属等级的下一级节点表征的数值;
1.2.2.2)确定所述抽象语法树中叶子节点对应的属性值的Lua代码,将从根节点到该叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号,其中,所述抽象语法树中节点的左子树的弧值为0,右子树的弧值为1;或者所述抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
在确定所述抽象语法树中叶子节点对应的属性值的Lua代码之后,还包括:生成该属性字段的各属性值的编码表,所述编码表中包括所述抽象语法树的信息,以及所述抽象语法树的各叶子节点分别与各属性值的对应关系。
步骤2)中,日志采集数据解压缩具体包括:
2.1)获取压缩后的日志采集数据和未压缩的日志采集数据中各属性字段的各属性值的编码表;
2.2)使用所述编码表中与各Lua代码分别对应的属性值,替换所述压缩后的日志采集数据中对应的Lua代码,得到解压缩后的日志采集数据。
步骤2.1)中,所述编码表中包括与各压缩字段分别对应的抽象语法树,且每个抽象语法树中的各叶子节点,分别对应该抽象语法树对应属性字段的各属性值,且该抽象语法树中节点的左子树的弧值为0,右子树的弧值为1,或者该抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
步骤2.2)中,所述Lua代码为分别对所述日志采集数据中各属性字段的各属性值进行编码得到的,所述Lua代码为按照以下方式获得的:
针对每一属性字段,分别统计该属性字段的各属性值在所述日志采集数据中出现的次数;
根据各属性值在所述日志采集数据中出现的次数,对该属性字段的各属性值进行编码,得到与各属性值分别对应的Lua代码,其中,出现的次数大的属性值对应的Lua代码的数据量,不大于出现的次数小的属性值对应的Lua代码的数据量。
步骤2.2)中,使用所述编码表中与各Lua代码分别对应的属性值,替换所述压缩后的日志采集数据中对应的Lua代码,具体包括:
2.2.1)针对所述压缩后的日志采集数据中的每个属性字段的每个Lua代码,查询该属性字段对应的抽象语法树,确定该属性字段的该Lua代码对应的叶子节点,其中,将从根节点到该对应的叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号,与该Lua代码相同;
2.2.2)使用该Lua代码对应的叶子节点对应的属性值,替换该压缩后的日志采集数据中的该Lua代码。
本发明提供一种动态生成日志采集数据的方法,包括:
获取日志采集数据;
分别对所述日志采集数据中各属性字段的各属性值进行编码,生成日志采集系统状态机的Lua代码文件;
通过运行Lua虚拟机,执行Lua文件转化为目标语言的抽象语法树,生成目标语言的代码。
本发明还提供一种日志采集数据处理方法,包括:
获取压缩后的日志采集数据,和生成目标语言的代码;
将Lua代码注入有限状态机,替换所述压缩后的日志采集数据中对应的Lua代码,得到解压缩后的日志采集数据。
本发明还提供一种日志采集数据压缩装置,包括:
第一单元,用于获取日志采集数据;
第二处理单元,用于分别对所述日志采集数据中生成日志采集系统状态机的Lua代码文件,生成目标语言的代码;
第三处理单元,用于使用得到的Lua代码文件,替换所述日志采集数据中对应的目标语言的代码,得到压缩后的日志采集数据。
本发明实施例还提供一种日志采集数据处理装置,包括:
第一单元,用于获取压缩后的日志采集数据,和状态机引擎执行该目标语言的生成代码;
解压缩单元,用于使用所述编码表中与各Lua代码分别对应的属性值,通过有限状态机动态执行代码对日志采集器的行为进行控制。
解压缩单元,用于使用所述编码表中与各Lua代码分别对应的属性值,用于分别对所述日志采集数据中生成日志采集系统状态机的Lua代码文件,生成目标语言的代码。
解压缩单元,用于将Lua代码注入有限状态机,替换所述压缩后的日志采集数据中对应的Lua代码,得到解压缩后的日志采集数据。
与现有技术相比,本发明具有如下优点:
本发明公开了一种通过有限状态机(Finite-State Machine)对日志进行动态融合的方法,包括以下步骤:通过Web管控平台注入Lua代码,生成日志采集系统状态机的Lua文件;通过运行Lua虚拟机,执行Lua文件转化为目标语言的抽象语法树(Abstract SyntaxTree),生成目标语言的代码;状态机引擎执行该目标语言的生成代码,对日志采集系统的状态切换和动作进行控制。本发明通过有限状态机动态执行代码对日志采集器的行为进行控制,通过Web管控平台配置日志采集器的状态切换和动作模型,当日志数据源发生变化或日志采集逻辑发生变化时,只需要在控制台使用Lua重写对应的规则即可,大幅减少了因业务逻辑变化等带来编译目标语言发布等上线流程,提升了日志采集系统稳定性和灵活性,提升了开发效率.
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的日志采集数据压缩方法的流程图;
图2为本发明实施例提供的日志采集数据解压缩方法的流程图;
图3为本发明实施例1中提供的对日志采集数据中属性字段的属性值进行编码的处理流程图;
图4为本发明实施例1中建立的抽象语法树的结构示意图之一;
图5为本发明实施例1中建立的抽象语法树的结构示意图之二;
图6为本发明实施例1中建立的抽象语法树的结构示意图之三;
图7为本发明实施例1中建立的抽象语法树的结构示意图之四;
图8为本发明实施例1中建立的抽象语法树的结构示意图之五;
图9为本发明实施例2中提供的日志采集数据解压缩方的流程图;
图10为本发明实施例3中提供的日志采集数据压缩装置的结构示意图;
图11为本发明实施例4中提供的日志采集数据解压缩装置的结构示意图。
具体实施方式
为了给出减少传输日志采集数据所需的网络带宽资源,以及减少存储日志采集数据所需的存储资源的实现方案,本发明实施例提供了一种日志采集数据压缩方法、解压缩方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供一种日志采集数据压缩方法,如图1所示,包括:
步骤101、获取日志采集数据。
步骤102、分别对日志采集数据中各属性字段的各属性值进行编码,得到与每个属性值对应的Lua代码。
步骤103、使用得到的Lua代码,替换日志采集数据中对应的属性值,得到压缩后的日志采集数据。
相应的,本发明实施例还提供一种日志采集数据解压缩方法,如图2所示,包括:
步骤201、获取压缩后的日志采集数据,和未压缩的日志采集数据中各属性字段的各属性值的编码表。
步骤202、使用该编码表中与各Lua代码分别对应的属性值,替换压缩后的日志采集数据中对应的Lua代码,得到解压缩后的日志采集数据。
下面结合附图,用具体实施例对本发明提供的方法及装置进行详细描述。
实施例1:
本发明实施例1中针对上述日志采集数据压缩方法,提出一种具体实施方式。
在上述步骤101中获取的日志采集数据可以为一段时间内,采用日志处理规则,对从网关设备获取的原始日志数据进行处理得到的。
日志采集数据可以通过一定格式的平面文件保存,其中每条记录可以对应一个用户标识,并包括该用户标识对应的各属性字段的属性值,例如,各属性字段可以包括:接入点名称、归属基站ID、IP、URL等。
在获取到日志采集数据后,即可以执行上述步骤102,分别对日志采集数据中各属性字段的各属性值进行编码,得到与每个属性值对应的Lua代码。
例如,以URL域名字段为例,日志采集数据中URL域名字段的属性值可以包括很多具体的URL域名,如“WWW.sina.com”、uWffff.qq.com”、uWffff.sohu.com”、uWffff.163.com”、“www.baidu.com”、“WWW.google.cn”和“WWW.3g.cn”等,上述步骤102即针对每个具体的属性值进行编码,得到与该属性值对应的Lua代码,且该Lua代码的数据量小于该对应属性值的数据量。
具体可以采用现有技术中的各种编码方式,例如,比较简单的,针对一个属性字段的各属性值的编码,可以根据该属性字段的各属性值的数量,采用足够数量的比特位进行二进制编码,以上述7个属性值为例,可以采用4个比特位进行二进制编码,每个编码对应一个属性值。
较佳的,考虑到在日志采集数据中,每个属性值一般均具有重复出现的特性,即针对不同的用户标识,同一属性字段的属性值可能是相同的,且一个属性字段的各属性值分别在日志采集数据中出现的次数,通常符合幂率分布的特性,所以,针对一个属性字段的各属性值,可以根据各属性值在日志采集数据中出现的次数,对该属性字段的各属性值进行编码,得到与各属性值分别对应的Lua代码,并且,优先使用数据量小的Lua代码,并保证出现的次数大的属性值对应的Lua代码的数据量,不大于出现的次数小的属性值对应的Lua代码的数据量,从而使得后续得到的压缩后的日志采集数据的数据量更少。
具体的,本发明实施例1中提出如下一种具体编码处理方式,针对日志采集数据中的一个属性字段的各属性值,如图3所示,具体采用如下方式进行编码:
步骤301、分别统计该属性字段的各属性值在日志采集数据中出现的次数。
后续可以根据该属性字段的各属性值在日志采集数据中出现的次数,构建抽象语法树,其中,该抽象语法树中的各叶子节点,分别对应表征各属性值在日志采集数据中出现的次数,且该抽象语法树中的父节点表征的数值,为该父节点的两个子节点表征数值的和值,且该抽象语法树中每个节点表征的数值,不小于该节点所属等级的下一级节点表征的数值。
具体的,可以采用如下步骤实现:
步骤302、首先按照出现次数从低到高的顺序,将各属性值出现的次数进行排列,相同次数的可以随机确定先后顺序。
步骤303、然后从当前排列的各数值(包括各属性值出现的次数,和后续计算得到和值)中,选择最小的两个值,作为抽象语法树的两个节点,且这两个节点分别对应表征这两个值。
步骤304、将这两个数值的和值,作为这两个节点的父节点,该父节点表征该和值。
步骤305、将所选的最小的这两个值排除,然后判断排列的各数值中是否存在剩余的数值(可以是属性值对应的出现次数,也可以是已建立的父节点表征的数值),如果存在,进入步骤306,如果不存在,进入步骤307。
步骤306、按照数值从低到高的顺序,将剩余的数值和最新建立的该父节点表征的和值进行排列,作为当前排列的各数值,然后进入步骤303。
步骤307、将最新建立的该父节点作为该抽象语法树的根节点,完成抽象语法树的构建。
下面以5个属性值分别出现的次数为1、2、3、3和4为例,对采用上述步骤301-步骤306所示的抽象语法树的构建进行举例描述:
首先选择最小的次数1和次数2作为抽象语法树的两个节点(即叶子节点),并将次数1和次数2的和值3,作为次数1对应节点和次数2对应节点的父节点,如图4所示;
排除次数1和次数2后,从剩余次数3、3和4,以及数值3(最新建立的父节点)中,选择最小的两个值,例如,选择次数3与数值3,并将次数3作为抽象语法树的一个节点(即叶子节点),并将与数值3的和值6,作为该次数3对应节点与数值3对应节点的父节点,如图5所示;
排除已建立对应节点的次数3和数值3,从剩余次数3和4,以及数值6(最新建立的父节点)中,选择最小的次数3和次数4,并将该次数3和次数4作为抽象语法树的两个节点(即叶子节点),并将该次数3和次数4的和值7,作为该次数3对应节点和次数4对应节点的父节点,如图6所示;
排除已建立对应节点的次数3和次数4,从剩余的数值6和数值7(最新建立的父节点)中,选择最小的两个值,即选择数值6和数值7,并将数值6和数值7的和值13,作为数值6对应节点与数值7对应节点的父节点,此时没有剩余的次数或数值,则最后建立的表征数值13的父节点,即为建立的抽象语法树的根节点,完成抽象语法树的建立,如图7所示。
从图7中可见,抽象语法树的各叶子节点分别对应表征次数1、2、3、3和4,且该抽象语法树中的每个节点表征的数值,不小于该节点所属等级的下一级节点表征的数值。
步骤308、在针对该属性字段建立对应的上述抽象语法树后,即可以根据该抽象语法树确定该属性字段的各属性值的Lua代码,具体为:
确定抽象语法树中叶子节点对应的属性值的Lua代码为,将从根节点到该叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号;
其中,抽象语法树中节点的左子树的弧值为0,右子树的弧值为1;或者抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
以抽象语法树中节点的左子树的弧值为0,右子树的弧值为1为例,如图8所示,为图7所示的抽象语法树中各子树的弧值示意图,则可以确定次数4对应属性值的Lua代码为11,一个次数3对应属性值的Lua代码为10,另一个次数3对应属性值的Lua代码为01,次数2对应属性值的Lua代码为001,次数1对应属性值的Lua代码为000。
从中可见,采用上述编码方式对同一属性字段的各属性值进行编码后,出现次数多的属性值的Lua代码的数据量,不会大于出现次数少的属性值的Lua代码的数据量,从而使得后续压缩后的日志采集数据的数据量更少,从而进一步更有效的减少日志采集数据保存所需的存储资源,以及减少日志采集数据传送所需要的网络带宽资源,并且可以提高传送效率。
步骤309、在通过上述步骤301-步骤308的处理流程,对日志采集数据中各属性字段的各属性值进行编码后,即可以使用得到的Lua代码,替换日志采集数据中对应的属性值,得到压缩后的日志采集数据。
并且,为了后续解压缩的需要,还可以生成各属性值的编码表,编码表中携带了各属性值分别与对应Lua代码的对应关系。具体的,编码表中可以包括上述抽象语法树的信息,以及该抽象语法树的各叶子节点分别与各属性值的对应关系。
例如,编码表中包括与各压缩字段分别对应的抽象语法树,且每个抽象语法树中的各叶子节点,分别对应该抽象语法树对应属性字段的各属性值,且该抽象语法树中节点的左子树的弧值为0,右子树的弧值为1,或者该抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
当采用上述通过构建抽象语法树的方式进行编码时,编码表中可以直接包括构建的抽象语法树,和各叶子节点分别与对应属性值的对应关系,相比采用字典方式的编码表,包括抽象语法树的该编码表的数据量更少,从而能够在后续将编码表传送给日志采集服务器时,使用更少的网络带宽资源。
在对日志采集数据进行上述压缩后,可以保存该压缩后的日志采集数据和编码表;也可以向日志采集服务器发送该压缩后的日志采集数据和该编码表。
较佳的,在发送时,可以对该压缩后的日志采集数据和编码表,使用通用的压缩算法进行再次压缩后传输,例如,使用GZIP、RAR、ZIP或TAR等压缩算法。
实施例2:
针对本发明实施例1中提出的日志采集数据压缩方法,本发明实施例2中提出如下日志采集数据解压缩方法,如图9所示,包括:
步骤901、获取压缩后的日志采集数据,和未压缩的日志采集数据中各属性字段的各属性值的编码表。
其中,该编码表中包括与各压缩字段分别对应的抽象语法树,且每个抽象语法树中的各叶子节点,分别对应该抽象语法树对应属性字段的各属性值,且该抽象语法树中节点的左子树的弧值为0,右子树的弧值为1,或者该抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
步骤902、针对该压缩后的日志采集数据中的每个属性字段的每个Lua代码,具体采用如下方式确定该Lua代码对应的叶子节点:
查询该属性字段对应的抽象语法树,确定该属性字段的该Lua代码对应的叶子节点,其中,将从根节点到该对应的叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号,与该Lua代码相同。
具体可以根据组成该Lua代码的各二进制数值从前到后的顺序,以及该抽象语法树中各子树的弧值,从该抽象语法树的根节点开始,对抽象语法树的节点路径进行查询,得到该Lua代码对应的叶子节点。
例如,以图8所示抽象语法树为例,针对Lua代码001,首先根据第一个二进制数值0,从根节点的左子树(左子树弧值为0)查询到数值6对应节点,然后根据第二个二进制数值0,从数值6对应节点的左子树查询到数值3对应节点,然后根据第三个二进制数值1,从数值3对应节点的右子树(右子树弧值为1)查询到次数2对应的叶子节点,从而确定该Lua代码001对应的叶子节点为,次数2对应的叶子节点。
步骤903、查询编码表中叶子节点与属性值的对应关系,确定该Lua代码对应的叶子节点对应的属性值,将该属性值确定为该Lua代码对应的属性值。
步骤904、使用该Lua代码对应的属性值,替换该压缩后的日志采集数据中的该Lua代码。
在针对日志采集数据中的所有Lua代码,完成上述替换的处理流程后,得到解压缩后的日志采集数据,即未压缩的日志采集数据。
实施例3:
基于同一发明构思,根据本发明上述实施例提供的日志采集数据压缩方法,相应地,本发明实施例3还提供了一种日志采集数据压缩装置,该装置可应用于网络日志服务器中,其结构示意图如图10所示,具体包括:
第一单元,用于获取日志采集数据;
第二处理单元(压缩1),用于分别对所述日志采集数据中各属性字段的各属性值进行编码,得到与每个属性值对应的Lua代码;
第三处理单元(压缩2),用于使用得到的所述Lua代码,替换所述日志采集数据中对应的属性值,得到压缩后的日志采集数据。
进一步的,第二处理单元,具体用于针对所述日志采集数据中的每个属性字段的各属性值,采用如下方式进行编码:
分别统计该属性字段的各属性值在所述日志采集数据中出现的次数;
根据各属性值在所述日志采集数据中出现的次数,对该属性字段的各属性值进行编码,得到与各属性值分别对应的Lua代码,其中,出现的次数大的属性值对应的Lua代码的数据量,不大于出现的次数小的属性值对应的Lua代码的数据量。
进一步的,第二处理单元,具体用于根据各属性值在所述日志采集数据中出现的次数,构建抽象语法树,其中,所述抽象语法树中的各叶子节点,分别对应表征各属性值在所述日志采集数据中出现的次数,且所述抽象语法树中的父节点表征的数值,为该父节点的两个子节点表征数值的和值,且所述抽象语法树中每个节点表征的数值,不小于该节点所属等级的下一级节点表征的数值;
确定所述抽象语法树中叶子节点对应的属性值的Lua代码为,将从根节点到该叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号;
其中,所述抽象语法树中节点的左子树的弧值为0,右子树的弧值为1;或者所述抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
进一步的,还包括:
生成单元,用于生成该属性字段的各属性值的编码表,所述编码表中包括所述抽象语法树的信息,以及所述抽象语法树的各叶子节点分别与各属性值的对应关系。
实施例4:
基于同一发明构思,根据本发明上述实施例提供的日志采集数据解压缩方法,相应地,本发明实施例4还提供了一种日志采集数据解压缩装置,该装置可应用于网络日志服务器中,也可以应用于日志采集服务器中,其结构示意图如图11所示,具体包括:
第二获取单元(即压缩2),用于获取压缩后的日志采集数据,和未压缩的日志采集数据中各属性字段的各属性值的编码表;
解压缩单元,用于使用所述编码表中与各Lua代码分别对应的属性值,替换所述压缩后的日志采集数据中对应的Lua代码,得到解压缩后的日志采集数据。
进一步的,第二获取单元获取的所述编码表中包括与各压缩字段分别对应的抽象语法树,且每个抽象语法树中的各叶子节点,分别对应该抽象语法树对应属性字段的各属性值,且该抽象语法树中节点的左子树的弧值为0,右子树的弧值为1,或者该抽象语法树中节点的左子树的弧值为1,右子树的弧值为0;
解压缩单元,具体用于针对所述压缩后的日志采集数据中的每个属性字段的每个Lua代码,具体采用如下方式进行解压缩处理:
查询该属性字段对应的抽象语法树,确定该属性字段的该Lua代码对应的叶子节点,其中,将从根节点到该对应的叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号,与该Lua代码相同;
使用该Lua代码对应的叶子节点对应的属性值,替换该压缩后的日志采集数据中的该Lua代码。
综上所述,本发明实施例提供的方案,包括:获取日志采集数据;并分别对日志采集数据中各属性字段的各属性值进行编码,得到与每个属性值对应的Lua代码;以及使用得到的Lua代码,替换日志采集数据中对应的属性值,得到压缩后的日志采集数据。采用本发明实施例提供的方案,减少了传输日志采集数据所需的网络带宽资源,以及减少了存储日志采集数据所需的存储资源。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (7)

1.一种通过有限状态机对日志进行自动采集融合的方法,其特征在于,包括以下步骤:
1)日志采集数据压缩,具体包括:
1.1)获取日志采集数据;
1.2)分别对所述日志采集数据中各属性字段的各属性值进行编码,得到与每个属性值对应的Lua代码;
1.3)使用得到的所述Lua代码,替换所述日志采集数据中对应的属性值,得到压缩后的日志采集数据;
2)日志采集数据解压缩。
2.根据权利要求1所述的通过有限状态机对日志进行自动采集融合的方法,其特征在于,步骤1.2)中,各属性字段可以包括:接入点名称、归属基站ID、IP、URL。
3.根据权利要求1所述的通过有限状态机对日志进行自动采集融合的方法,其特征在于,步骤1.2)中,编码具体包括:
1.2.1)分别统计该属性字段的各属性值在所述日志采集数据中出现的次数;
1.2.2)根据各属性值在所述日志采集数据中出现的次数,对该属性字段的各属性值进行编码,得到与各属性值分别对应的Lua代码,其中,出现的次数大的属性值对应的Lua代码的数据量,不大于出现的次数小的属性值对应的Lua代码的数据量。
4.根据权利要求3所述的通过有限状态机对日志进行自动采集融合的方法,其特征在于,步骤1.2.2)中,根据各属性值在所述日志采集数据中出现的次数,对该属性字段的各属性值进行编码,得到与各属性值分别对应的Lua代码,具体包括:
1.2.2.1)根据各属性值在所述日志采集数据中出现的次数,构建抽象语法树,其中,所述抽象语法树中的各叶子节点,分别对应表征各属性值在所述日志采集数据中出现的次数,且所述抽象语法树中的父节点表征的数值,为该父节点的两个子节点表征数值的和值,且所述抽象语法树中每个节点表征的数值,不小于该节点所属等级的下一级节点表征的数值;
1.2.2.2)确定所述抽象语法树中叶子节点对应的属性值的Lua代码,将从根节点到该叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号,其中,所述抽象语法树中节点的左子树的弧值为0,右子树的弧值为1;或者所述抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
5.根据权利要求1所述的通过有限状态机对日志进行自动采集融合的方法,其特征在于,步骤2)中,日志采集数据解压缩具体包括:
2.1)获取压缩后的日志采集数据和未压缩的日志采集数据中各属性字段的各属性值的编码表;
2.2)使用所述编码表中与各Lua代码分别对应的属性值,替换所述压缩后的日志采集数据中对应的Lua代码,得到解压缩后的日志采集数据。
6.根据权利要求5所述的通过有限状态机对日志进行自动采集融合的方法,其特征在于,步骤2.1)中,所述编码表中包括与各压缩字段分别对应的抽象语法树,且每个抽象语法树中的各叶子节点,分别对应该抽象语法树对应属性字段的各属性值,且该抽象语法树中节点的左子树的弧值为0,右子树的弧值为1,或者该抽象语法树中节点的左子树的弧值为1,右子树的弧值为0。
7.根据权利要求5所述的通过有限状态机对日志进行自动采集融合的方法,其特征在于,步骤2.2)中,使用所述编码表中与各Lua代码分别对应的属性值,替换所述压缩后的日志采集数据中对应的Lua代码,具体包括:
2.2.1)针对所述压缩后的日志采集数据中的每个属性字段的每个Lua代码,查询该属性字段对应的抽象语法树,确定该属性字段的该Lua代码对应的叶子节点,其中,将从根节点到该对应的叶子节点的路径所包括的各子树分别对应的弧值,进行排列得到的二进制编号,与该Lua代码相同;
2.2.2)使用该Lua代码对应的叶子节点对应的属性值,替换该压缩后的日志采集数据中的该Lua代码。
CN202110395569.2A 2021-04-13 2021-04-13 一种通过有限状态机对日志进行自动采集融合的方法 Pending CN113076107A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110395569.2A CN113076107A (zh) 2021-04-13 2021-04-13 一种通过有限状态机对日志进行自动采集融合的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110395569.2A CN113076107A (zh) 2021-04-13 2021-04-13 一种通过有限状态机对日志进行自动采集融合的方法

Publications (1)

Publication Number Publication Date
CN113076107A true CN113076107A (zh) 2021-07-06

Family

ID=76617476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110395569.2A Pending CN113076107A (zh) 2021-04-13 2021-04-13 一种通过有限状态机对日志进行自动采集融合的方法

Country Status (1)

Country Link
CN (1) CN113076107A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114793245A (zh) * 2022-06-22 2022-07-26 杭州又拍云科技有限公司 一种灵活可配置的流式信息处理方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010032765A1 (de) * 2010-07-29 2012-02-02 Schumann Consulting Gmbh Automatische Verifizierung von Übersetzungen
CN103379136A (zh) * 2012-04-17 2013-10-30 中国移动通信集团公司 一种日志采集数据压缩方法、解压缩方法及装置
CN111443898A (zh) * 2019-11-14 2020-07-24 天津津航计算技术研究所 基于优先级队列与有限状态机的流程式控制软件设计方法
CN111596974A (zh) * 2020-04-24 2020-08-28 中建八局第二建设有限公司 一种基于有限状态机算法的智能化采集系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010032765A1 (de) * 2010-07-29 2012-02-02 Schumann Consulting Gmbh Automatische Verifizierung von Übersetzungen
CN103379136A (zh) * 2012-04-17 2013-10-30 中国移动通信集团公司 一种日志采集数据压缩方法、解压缩方法及装置
CN111443898A (zh) * 2019-11-14 2020-07-24 天津津航计算技术研究所 基于优先级队列与有限状态机的流程式控制软件设计方法
CN111596974A (zh) * 2020-04-24 2020-08-28 中建八局第二建设有限公司 一种基于有限状态机算法的智能化采集系统及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114793245A (zh) * 2022-06-22 2022-07-26 杭州又拍云科技有限公司 一种灵活可配置的流式信息处理方法及系统

Similar Documents

Publication Publication Date Title
CN109104405B (zh) 二进制协议编码、解码方法和装置
CN111580884B (zh) 配置更新方法、装置、服务器和电子设备
CN101061688B (zh) 基于简单网络管理协议的网络管理设备和方法
CN105740337B (zh) 一种基于内容的发布订阅系统中的事件快速匹配方法
CN111061498B (zh) 一种配置信息管理系统
CN103379140A (zh) 一种日志处理规则同步方法及相关设备和系统
CN111629081A (zh) 互联网协议ip地址数据处理方法、装置及电子设备
EP1990737B1 (en) Document transformation system
CN110535928A (zh) 一种区块链的java智能合约的事件推送方法
CN110334103B (zh) 推荐服务的更新方法、提供装置、访问装置和推荐系统
CN113076107A (zh) 一种通过有限状态机对日志进行自动采集融合的方法
CN113746487A (zh) 一种数据压缩方法、装置及电子设备和存储介质
CN103500129A (zh) 一种备份对象的发送、备份方法、生产端、灾备端及系统
CN103051480B (zh) 一种dn的存储方法及dn存储装置
CN110413338B (zh) 一种配置大数据平台的方法、设备及可读介质
CN111124542A (zh) 一种配置信息管理系统
CN103646015A (zh) 发送、接收以及传输xml报文的方法和系统
CN114996361B (zh) 数据处理方法及系统
KR20180108505A (ko) 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 변형 방법 및 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 전송 시스템
CN112835896B (zh) 一种实时数据库数据热点均衡方法、装置、设备及介质
KR20190088112A (ko) 신재생에너지의 발전량 데이터를 모니터링하는 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 변형 방법 및 신재생에너지의 발전량 데이터를 모니터링하기 위한 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 전송 시스템
KR100256686B1 (ko) 다중 균형 트리 구조를 이용한 관리정보 트리에서의 노드 검색,생성 및 삭제 방법
CN113992549B (zh) 一种测试方法、装置、电子设备及存储介质
CN113641352B (zh) 一种自动生成snmp代码的方法及系统
CN113824589B (zh) 基于RESTful的切片能力开放接口映射方法

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210706