CN101557291B - 日志聚合的方法和装置 - Google Patents
日志聚合的方法和装置 Download PDFInfo
- Publication number
- CN101557291B CN101557291B CN2009101437310A CN200910143731A CN101557291B CN 101557291 B CN101557291 B CN 101557291B CN 2009101437310 A CN2009101437310 A CN 2009101437310A CN 200910143731 A CN200910143731 A CN 200910143731A CN 101557291 B CN101557291 B CN 101557291B
- Authority
- CN
- China
- Prior art keywords
- log aggregation
- daily record
- space
- log
- early warning
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种日志聚合的方法和装置,该方法包括以下步骤:日志聚合实体获取日志聚合预警值以及预警时间;当达到所述预警时间时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率;当所述当前日志聚合空间使用率达到所述日志聚合预警值时,所述日志聚合实体对所述日志聚合空间的日志进行老化处理或对所述日志聚合空间进行扩展处理。本发明中,通过配置日志聚合预警值,在达到该预警值时发出警报,对日志聚合空间进行调整,减少由于临时空间不足,导致的日志丢失现象,使接收到的日志数据更全面,从而大大提高了利用日志进行统计分析等功能的准确度。
Description
技术领域
本发明涉及通信领域,尤其涉及一种日志聚合的方法和装置。
背景技术
随着通信技术和计算机技术的迅速发展,各种形式的信息交互越来越频繁,例如通过计算机网络的数据报文或多媒体信息交互、通过移动通信网络的短信或话音交互等等。在信息交互的过程中由于各种各样的需求,需要对所交互的信息的相关特征进行记录,例如网络安全设备为了便于对网络安全进行监管,需要在每次检测到入侵报文时,将入侵报文的攻击特征等信息记录在相应的文件中,以根据记录的入侵报文的攻击特征等信息分析网络设备的安全情况,采取相应的措施保证网络设备的安全使用;通信网络运营商为了统计用户终端对通信网络的使用情况,需要将用户通话或发送短信的号码、以及通话时间等特征记录在话单中,进一步根据话单中记录的用户通话特征确定用户应当支付的费用等;上述网络安全设备用于记录攻击特征的文件、或者通信网络运营商用于记录用户通话或短信使用情况的话单、以及其它用于记录各种形式的交互信息的特征的载体均可称为“日志”。
在很多情况下,由于信息交互频繁,例如频繁的攻击或者频繁的通话等,在通信设备上会产生大量的日志,对这些日志进行处理会影响通信设备的其它功能,尤其当大量重复日志需要处理时,可能会导致通信设备的网络拥塞。因此,为了方便通信设备对日志的管理,需要对所产生的大量重复日志进行聚合,即将多条具有相同特征的日志合成为一条日志,以减少日志的数量,进而降低通信设备进行日志处理的工作量,提高通信设备对日志统计分析的效率。例如,现有技术 中对通信设备检测到的攻击报文进行聚合时,攻击报文的相同特征可以为下述五个方面的参数中的一种或多种:攻击报文的源IP地址、目的IP地址、源端口、目的端口以及攻击方向,通信设备检测到攻击报文时,根据该攻击报文上述五个方面的参数的取值将攻击报文记录到攻击日志中,具体的,通信设备将上述五个方面的参数的取值相同的日志作为同一类日志进行聚合,并存储聚合后的一条日志。
现有技术中,进行日志聚合处理的主要实体结构如图1所示,包括Array(存储阵列)、freelink链表、datalink链表、hashmap以及hashlink链表。其中,Array为一系列日志聚合空间,不同的日志聚合空间分别对应不同的日志聚合空间指针,每一日志聚合空间中存储具有相同日志标识的一类日志。Array中存储的日志为待聚合的日志对象、或者聚合后的日志对象。当有新的日志对象需要向Array中的某一日志聚合空间内存储时,日志聚合实体将Array中的该日志聚合空间内的日志对象提出,与新的日志进行聚合,将聚合后的日志对象替代该日志聚合空间内原来存储的日志对象。Array的长度spacelength等于Array中日志聚合空间的个数,等于与Array相应的日志聚合空间指针的个数。
freelink链表和datalink链表分别由一系列链表节点组成,freelink链表的链表节点中存储有系统目前可用的日志聚合空间指针,datalink链表的链表节点中存储有系统目前已用的日志聚合空间指针,每一日志聚合空间指针指向Array中一个日志聚合空间;freelink链表和datalink链表中存储的日志聚合空间指针的个数和等于Array中日志聚合空间的个数。
hashmap与hashlink链表内存储有日志标识与日志聚合空间的对应关系,用来快速定位具有相同日志标识的日志。其中,日志标识即为多条日志具有的相同特征,例如,信息的来源IP地址、目的IP地址、来源端口、目的端口等。hashmap中存储日志的来源IP地址(Key,日志标识)与hashlink链表头节点的指针(value)的对应关系。hashlink链表的数量为多个,每个hashlink链表与一个来源IP地址对应,且每 个hashlink链表由一系列节点组成,各节点(包括头节点)中存储日志的目的IP地址与日志聚合空间指针的对应关系。具体的,通信设备根据日志的来源IP地址在hashmap中查找相应的hashlink链表头节点的指针,进一步在hashlink链表中从hashlink链表的头节点开始依次查找各节点,获取与日志的目的IP地址相应的日志聚合空间指针,根据该日志聚合空间指针获取相应的Array中的日志聚合空间的待聚合日志对象,并与新的日志进行聚合,将聚合后的日志对象存储到原来Array中的日志聚合空间。
利用图1所示的日志聚合实体结构进行日志聚合的流程如下所示,包括以下步骤:
1、获取new日志,提取该日志中的日志标识,包括日志的来源IP地址和目的IP地址;
2、在hashmap中查找上述日志的来源IP地址;若hashmap中没有上述new日志的来源IP地址,则执行6;
3、若查找到相应的日志的来源IP地址,则根据hashmap中该日志的来源IP地址对应的hashlink链表头节点的指针查找hashlink链表;
4、根据new日志的目的IP地址从hashlink链表的头节点开始依次查找hashlink链表中各节点,获取与new日志的目的IP地址相应的日志聚合空间指针,将该new日志定位到日志聚合空间指针指向的日志聚合空间,获取该日志聚合空间中待聚合的old日志;
5、对该new日志和old日志进行聚合处理;继续执行上述1-5的操作;
6、查找freelink链表中是否存在可用节点;若不存在则执行7,否则执行8;
7、等待手动老化datalink链表中的节点以获取空闲节点或者直接丢弃该new日志;
datalink链表中的节点存储指向已用日志聚合空间的指针,老化datalink链表中的节点具体为根据datalink链表中存储的所有指针获取Array中全部日志聚合空间,进而将该日志聚合空间中的日志输出至 其他存储介质,然后清空Array中的日志聚合空间;
8、在freelink链表中获取空闲空间节点freeNode;
9、在freeNode中的指针所指向的Array中存放上述new日志,该new日志的来源IP地址在上述2中无法在hashmap中找到;
10、根据9中new日志的日志标识在hashmap中插入key(该new日志的来源IP地址)、在hashlink链表中插入value作为指向该new日志聚合后存储的日志聚合空间的指针;
11、将freeNode从freelink链表中取出,链接到datalink链表的链尾,并执行上述1-5的操作。
此时,freeNode指向的日志聚合空间已经被使用,因此将该freeNode链接到datalink链表的链尾,表示该节点中的指针指向的日志聚合空间已经被使用。
上述过程中,当Array中存在足够的日志聚合空间时,可以顺利的对日志进行日志聚合或者存储具有新的日志标识的日志;但是,当系统检测的范围较广,或者多输入源时,需要记录的日志数量过大,非常容易导致Array中日志聚合空间不足,此时需要老化Array中的全部日志,由于在老化的过程中当前技术的限制,将一并丢弃具有新的日志标识的日志,从而造成原始报文部分丢失,造成后续统计数据不精确;另外,老化Array中全部日志同样会导致清空全部日志后的Array日志聚合率低,影响日志聚合性能。
发明内容
本发明提供了一种日志聚合的方法和装置,以实现通过引入动态预警,减少丢失报文的几率,在新的日志到达时,避免由于系统问题而导致日志丢失,从而大大提高利用日志进行统计分析等功能的准确度。
为了实现上述目的,本发明提供一种日志聚合的方法,包括以下步骤:
日志聚合实体获取日志聚合预警值以及预警时间;
当达到所述预警时间时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率;
当所述当前日志聚合空间使用率达到所述日志聚合预警值时,所述日志聚合实体判断所述日志聚合空间是否可以扩展;
若所述日志聚合空间不可以扩展,则所述日志聚合实体对所述日志聚合空间进行老化处理;否则
所述日志聚合实体根据预先配置的扩展步长扩展所述日志聚合空间,所述扩展步长等于所述日志聚合空间的长度。
所述日志聚合实体获取日志聚合预警值包括:
所述日志聚合实体获取历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率;所述日志聚合实体根据预先配置对所述历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率进行加权平均计算,获取所述日志聚合预警值;和/或
所述日志聚合实体获取预设的单位时间内日志聚合空间增加的日志条数的最大值,所述日志条数为具有新的日志标识的日志条数。
当达到所述预警时间时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率之前,还包括:
当单位时间内增加的具有新的日志标识的日志条数达到所述预设的最大值时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率。
所述日志聚合实体对所述日志聚合空间的日志进行老化处理包括:
所述日志聚合实体获取所述日志聚合空间内需要老化的日志条数的计算方式;
所述日志聚合实体根据所述计算方式计算需要老化的日志条数,所述需要老化的日志条数小于所述日志聚合空间内当前存储的全部日志条数;
所述日志聚合实体根据所述计算获得的需要老化的日志条数从 最早储存在所述日志聚合空间的日志开始依次进行老化处理;或者所述日志聚合实体根据所述计算获得的需要老化的日志条数从日志聚合频率最低的日志聚合空间的日志开始依次进行老化处理。
本发明提供一种日志聚合的装置,包括:
预警配置单元,用于获取日志聚合预警值以及预警时间;
预警获取单元,与所述预警配置单元连接,用于达到所述预警配置单元获取的预警时间时,获取日志聚合空间的当前日志聚合空间使用率;
预警处理单元,与所述预警配置单元和预警获取单元连接,用于当所述预警获取单元获取的当前日志聚合空间使用率达到所述日志聚合预警值时,对所述日志聚合空间的日志进行老化或对所述日志聚合空间进行扩展处理;
其中,所述预警处理单元包括:
判断子单元,用于判断所述日志聚合空间是否可以扩展;
老化子单元,与所述判断子单元连接,用于所述判断子单元判断所述日志聚合空间不可以扩展时,对所述日志聚合空间进行老化处理;
扩展子单元,与所述判断子单元连接,用于所述判断子单元判断所述日志聚合空间可以扩展时,扩展所述日志聚合空间。
所述预警配置单元包括:
使用率获取子单元,用于获取历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率;
计算子单元,与所述使用率获取子单元连接,用于根据预先配置对所述使用率获取子单元获取的历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率进行加权平均计算,获取所述日志聚合预警值;
时间配置子单元,用于获取进行日志聚合的时间;和/或
计数子单元,用于计数单位时间内日志聚合空间增加的具有新的日志标识的日志条数,当所述具有新的日志标识的日志条数达到所述预设的最大值时,通知所述预警获取单元对当前日志聚合空间进行计算,获取当前日志聚合空间使用率。
所述老化子单元具体用于:
获取所述日志聚合空间内需要老化的日志条数的计算方式,根据所述计算方式计算需要老化的日志条数,所述需要老化的日志条数小于所述日志聚合空间内当前存储的全部日志条数;根据所述计算获得的需要老化的日志条数从最早储存在所述日志聚合空间的日志开始依次进行老化处理,或者从日志聚合频率最低的日志聚合空间的日志开始依次进行老化处理。
所述扩展子单元具体用于:
根据预先配置的扩展步长扩展所述日志聚合空间,所述扩展步长等于所述日志聚合空间的长度。
与现有技术相比,本发明至少具有以下优点:
通过配置日志聚合预警值,在达到该预警值时,日志聚合实体对日志聚合空间进行处理,包括扩展日志聚合空间或者老化处理日志聚合空间内存储的日志,减少由于临时空间不足导致的日志丢失现象,使日志聚合实体接收到的日志数据更全面,从而大大提高了利用日志进行统计分析等功能的准确度。
附图说明
图1是现有技术中进行日志聚合处理的主要实体结构示意图;
图2为本发明提供的日志聚合方法的流程示意图;
图3为本发明一应用场景提供的日志聚合实体的结构示意图;
图4为本发明提供的日志聚合方法应用于图3所示的日志聚合实体时的流程示意图;
图5为本发明提供的日志聚合方法中预警方法应用于图3所示的日志聚合实体时的流程示意图;
图6为本发明提供的日志聚合实体动态调整预警值的方法应用于图3所示的日志聚合实体时的流程示意图;
图7为本发明提供的日志聚合方法中对日志进行老化处理方法应用于图3所示的日志聚合实体时的流程示意图;
图8为本发明提供的日志聚合装置的结构示意图;
图9为本发明提供的日志聚合装置的另一结构示意图。
具体实施方式
本发明的核心思想是:通过引入动态预警机制,在用于存储日志的日志聚合空间使用率达到预警值时,提前对日志聚合空间进行处理,包括扩展日志聚合空间或者老化处理日志聚合空间内存储的日志,在具有新的日志标识的日志到达时,不会由于存储空间不足而导致日志丢失,可以提高利用日志进行统计分析等功能的准确度;同时,本发明中提供可变的日志老化机制,即一次只老化日志聚合空间中的部分日志,从而提高新的日志聚合的命中率,减少聚合后的日志数量,提高日志聚合空间的使用效率。
本发明提供一种日志聚合的方法,如图2所示,包括以下步骤:
步骤s201,日志聚合实体获取日志聚合预警值以及预警时间;
步骤s202,当达到所述预警时间时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率;
步骤s203,当所述当前日志聚合空间使用率达到所述日志聚合预警值时,所述日志聚合实体对所述日志聚合空间进行老化或扩展处理。
通过采用本发明提供的日志聚合方法,日志聚合实体配置日志聚合预警值以及预警时间,在达到预警时间时,日志聚合实体获取日志聚合空间的当前日志聚合空间使用率,若当前日志聚合空间使用率达到预警值,日志聚合实体对日志聚合空间进行处理,包括扩展日志聚 合空间或者老化处理日志聚合空间内存储的日志,减少由于临时空间不足导致的日志丢失现象,使日志聚合实体接收到的日志数据更全面,从而大大提高了利用日志进行统计分析等功能的准确度。
如图3所示,其为应用本发明的日志聚合实体。该日志聚合实体可以为网络设备,例如服务器,或者网络设备中的一个硬件组成部分,还可以为网络设备安装的用于进行日志聚合的软件模块,用于存储网络设备接收和/或发送的日志,并对日志进行聚合。
具体的,如背景技术所述,本发明日志聚合实体同样包括Array(存储阵列)、hashmap、hashlink链表、freelink链表以及datalink链表,所述这些组件的功能与背景技术描述的均相同,在此不赘述。
与背景技术不同的是,本发明日志聚合实体进一步在freelink链表和datalink链表中,将各自链表中已经存储的日志聚合空间指针的个数记录在链表的头节点上,具体的,在freelink链表的链表头节点上,存储当前freelink链表中已存储日志聚合空间指针的个数Num1,Num1统计的为指向Array中目前可用的日志聚合空间的指针个数;在datalink链表的链表头节点上,存储当前datalink链表中已存储日志聚合空间指针的个数Num2,Num2统计的为指向Array中目前已用的日志聚合空间的指针个数;Num1和Num2的总和等于Array中日志聚合空间的个数,也就是Array的长度。Num1和Num2的值域为:0~array.length-1(Array的内存空间个数-1)。
如图4所示,其为本发明日志聚合方法在具体应用场景中的实现,包括以下步骤:
步骤s401,配置日志聚合实体存储日志的方式。
日志聚合实体在Array中记录的日志中可以包括日志聚合实体所在网络设备与其他设备交互的信息的下列特性:信息的来源IP地址、目的IP地址、来源端口、目的端口、流量方向等,本应用场景中,日志聚合实体将日志的来源IP地址和目的IP地址作为日志标识,将具有相同日志标识,也就是具有相同来源IP地址和目的IP地址的日志聚合后存储在同一日志聚合空间。
步骤s402,日志聚合实体获取new日志,根据new日志的日志标识在hashmap中定位该new日志。若hashmap中存在与该new日志的日志标识相应的value,则继续执行步骤s403;否则执行步骤s405。
具体地,日志聚合实体获取new日志,提取该new日志的日志标识,包括new日志的来源IP地址和目的IP地址。日志聚合实体根据new日志的来源IP地址在hashmap中查找key与value的对应关系,获取与new日志的来源IP地址相应的value。
步骤s403,日志聚合实体通过查找hashlink链表,获取与new日志相应的Array的日志聚合空间。
若日志聚合实体查找hashlink链表可以获取与new日志相应的Array的日志聚合空间指针,进而根据该指针获取相应的Array的日志聚合空间,继续执行步骤s404;否则,若日志聚合实体查找hashlink链表不能获取与new日志相应的Array的日志聚合空间,则执行步骤s405。
由于hashmap中的value指向hashlink链表的头节点,所以日志聚合实体在hashlink链表的头节点查找是否存在与new日志的目的IP地址相同的IP地址。由于hashlink链表由一系列节点组成,并且每一节点结束时都会指向下一节点,直到最后一个节点,因此,若日志聚合实体在hashlink链表的头节点中没有查找到与new日志的目的IP地址相同的IP地址,则日志聚合实体依次查找hashlink链表的所有节点。当日志聚合实体在hashlink链表的一节点中查找到与new日志的目的IP地址相同的IP地址时,日志聚合实体根据hashlink链表中该节点内存储的value获取Array中相应的日志聚合空间。
步骤s404,日志聚合实体从Array中相应的日志聚合空间获取待聚合的日志,进行日志聚合处理。
本应用场景提供的日志聚合方法中,日志聚合实体进行的日志聚合主要为流量聚合,日志中记录的信息包括经过网络设备的流量的开始时间、结束时间、来源IP地址、目的IP地址、来源端口、目的端口、流量方向、包数、字节数等参数;日志聚合实体将具有相同来源IP地 址和目的IP地址的日志进行聚合,聚合后的日志中的包数和字节数分别为聚合前各日志的包数的和以及字节数的和。
日志聚合实体将new日志与Array中的日志聚合空间内存储的日志进行聚合,将new日志的包数和字节数与Array中的日志聚合空间内原来存储的日志的包数和字节数相加,然后替换原来Array中的日志聚合空间内存储的日志。该聚合后的日志与new日志和原来Array中的日志聚合空间内存储的日志相比,具有相同的目的IP地址和来源IP地址,更大的包数和字节数。
步骤s405,日志聚合实体查询freelink链表,获取可用的空间节点。
本应用场景中,通过预设Array中小于1的预警值(该预警值具体为已用日志聚合空间占Array中总的日志聚合空间的比例),在Array中日志聚合空间的使用比例达到该预警值时,日志聚合实体对Array进行扩展或者老化处理Array中的日志聚合空间内存储的日志,保证了freelink链表中始终具有可用的空间节点,避免出现Array中地址空间被日志填满,丢弃new日志的情况。具体的预警及老化方法容后详述。
步骤s406,日志聚合实体根据获取的空间节点获取相应的Array中用于存放new日志的地址空间指针。
日志聚合实体在freelink链表中获取可用的空间节点,具体可以是从freelink链表的头节点开始逐次查找freelink链表中的各节点,获取可用的空间节点,进一步获取该可用的空间节点中存储的指向Array中的日志聚合空间的value,该被指向的日志聚合空间可用。
步骤s407,日志聚合实体根据new日志在Array中的存储信息修改hashmap、hashlink链表、freelink链表以及datalink链表等。
具体的,日志聚合实体在hashlink链表中增加value,该value指向new日志在Array中的日志聚合空间,hashlink链表中还存储与该value相应的该new日志的目的IP地址;日志聚合实体在hashmap中增加key值为上述new日志的来源IP地址,value指向hashlink链表的头节点。freelink链表中的链表头节点上标识Array中当前可用的日志聚合空间 数Num1减1;datalink链表中的链表头节点上标识Array中当前已用的日志聚合空间数Num2加1。
本应用场景中,系统初始化时,日志聚合实体根据需要为Array预先分配一定数量的日志聚合空间。当日志聚合实体获取new日志时,若该日志聚合实体刚刚系统初始化结束,Array中没有存储任何日志时,将该new日志存储到Array中最开始的日志聚合空间,并在hashlink链表头节点中记录指向该日志聚合空间的指针与该new日志的目的IP地址的对应关系,在hashmap中记录该new日志的来源IP地址与指向hashlink链表头节点的指针的对应关系。
在系统初始化时,freelink链表中的链表头节点上标识Array中当前可用的日志聚合空间指针数Num1等于Array中总的日志聚合空间指针数;datalink链表中的链表头节点上标识Array中当前已用的日志聚合空间指针数Num2等于0。当Array中每次写入一new日志后,Num1减1,Num2加1。
如图5所示,所述预警方法具体包括以下步骤:
步骤s501,日志聚合实体获取预警值以及其他预警参数,设置预警策略。
在系统启动时,日志聚合实体根据具体的网络情况预设Array的长度spacelength、预警时间以及预警值percentNum。其中,spacelength等于Array中日志聚合空间的个数;percentNum具体为Array中已存储日志的日志聚合空间与总的日志聚合空间的百分比;预警时间为日志聚合实体进行预警处理的时间周期,该时间可以根据需要灵活设置,例如设置为每一分钟开始时进行一次预警,或者每天的10:00进行一次预警,本应用场景中,预警时间设置为周期时间T分钟,每隔T分钟进行一次预警。具体的,日志聚合实体内可以设置一定时器,该定时器内配置进行预警的周期时间T分钟,在上一次预警结束时定时器从0开始计时,当到达T分钟时,日志聚合实体开始进行预警处理。
为了防止在预警周期内,日志聚合实体接收的日志突然大量增加,导致Array中的所有日志聚合空间被填满,日志聚合实体内进一步设置计数器,统计该具有新的日志标识的日志条数,即新占用的日志聚合空间的数目,若单位时间日志聚合实体新增被占用的日志聚合空间的数目达到或超过了预设最大值,则日志聚合实体进行预警处理。
由于freelink链表中Num1统计的为Array中可用日志聚合空间的数目,因此,计数器可以通过监测Num1的变化获知Array中被新占用的日志聚合空间数,若当前Num1减1,则计数器加1。
例如,日志聚合实体根据预设预警时间每2分钟执行一次预警处理,在上一次预警处理执行完之后,日志聚合实体在2分钟之内,即下一次预警时间到达之前,接收大量具有新的日志标识的日志,计数器统计该具有新的日志标识的日志条数,若1分钟内统计的日志条数达到或超过了预设最大值,则发出警报,日志聚合实体进行预警处理。
计数器内预设的计数最大值可以根据需要灵活设置,例如设置为:
N=(percentNum-percentNum2)*spacelength/2;
其中,percentNum为预警值,percentNum2为上一次预警处理时计算得到的Array中已用日志聚合空间的比例,spacelength为Array的长度。
当到达预设预警时间,日志聚合实体执行预警处理时,计数器清零,重新开始计数。若在上一次预警处理以后,下一次预警处理以前,计数器中的计数达到预设最大值,日志聚合实体进行预警处理,计数器清零,重新开始计时。
日志聚合实体内还预设percentNum0,该percentNum0用于判断是否需要扩展Array的日志聚合空间。
步骤s502,日志聚合实体进行预警处理,计算当前Array中日志聚合空间的占用比例。
日志聚合实体获取当前datalink链表中的num2的取值,num2的 取值等于Array中已占用内存空间的个数,计算num2与spacelength的比值,获取当前Array中日志聚合空间的占用比例percentNum2:
percentNum2=num2*100%/spacelength。
步骤s503,日志聚合实体比较percentNum2与percentNum的值,若percentNum2>percentNum,则日志聚合实体对Array进行预警处理。
例如,日志聚合实体预设
percentNum=80%,spacelength=100000,当前num2=85000,则
日志聚合实体计算percentNum2为:
percentNum2=85000*100%/100000=85%。
日志聚合实体比较percentNum2与percentNum的值,获知percentNum2=85%>percentNum=80%。
步骤s504,日志聚合实体比较percentNum2与percentNum0的大小,判断是否需要扩展Array的日志聚合空间。
具体的,percentNum0的值可以设置为95%,如果percentNum2>95%,则说明当前Array中的日志聚合空间使用率非常高,为了能够提供足够的日志聚合空间用于进行日志聚合和存储日志,日志聚合实体对Array进行扩展,增加Array中的日志聚合空间。具体的,日志聚合实体可以以Array中原有日志聚合空间的大小为步长进行扩展,例如Array中初始的spacelength长度为100000时,日志聚合实体以100000为步长进行扩展,增加Array的日志聚合空间,相应的增加freelink链表中Num1的值。如果此时已经不能扩展Array,则对Array中存储的日志进行老化处理。
如果percentNum2<95%,则说明当前Array中的日志聚合空间使用率并不高,没有必要扩展Array中的日志聚合空间,直接对Array中存储的日志进行老化处理。
本应用场景中,Array中日志聚合空间中日志的老化采用部分老化的方式,每次老化时,从最早储存在Array中的日志开始部分老化,也就是将已存储的日志中的一部分输出至其它存储介质,然后清空输出日志的日志聚合空间,这样可以在Array中保留一部分日志,以增 加新的日志在Array中存储时聚合发生的几率,具体老化方法容后详述。
本应用场景中,步骤s501中日志聚合实体获取的预警值percentNum,可以根据实际需要进行灵活设置,以后在检测过程中保持不变;也可以由日志聚合实体根据实际情况在初次设置取值后每隔一段时间重新进行调整,即预警值percentNum可以动态调整,具体的,如图6所示,日志聚合实体动态调整预警值percentNum的过程包括以下步骤:
步骤s601,日志聚合实体获取percentNum的调整时间。
本应用场景中,日志聚合实体调整percentNum的时间可以根据需要灵活设置,可以设置一较长的时间,例如一周,也可以设置一较短的时间,例如一分钟。本应用场景中,日志聚合实体每隔10分钟对percentNum进行一次调整。
步骤s602,日志聚合实体获取历史最大maxHistoryNum和最近N次的percentNum2。
其中,N的具体取值可以根据实际情况进行调整,本应用场景中N以10为例进行介绍。
例如,日志聚合实体保存至少最近10次的percentNum2,并且对于10次之前的percentNum2,与最近10次的percentNum2进行比较,保留最大的percentNum2,该最大的percentNum2可以在最近10次之中,或者在最近10次之外。
在每次进行预警时,将本次percentNum2与之前的percentNum2进行比较,保存较大的percentNum2,即历史最大percentNum2:maxHistoryNum。
系统初始化时,日志聚合实体中没有percentNum2,以后,日志聚合实体将1至10次percentNum2全部保留,并将该10次percentNum2中的最大percentNum2作为maxHistoryNum保存。从第11次预警开始,日志聚合实体将第一次percentNum2丢弃,同时比较第11次percentNum2与maxHistoryNum的大小,若第11次 percentNum2大于maxHistoryNum,则使用第11次percentNum2替换maxHistoryNum,作为新的maxHistoryNum;否则,继续保留原来的maxHistoryNum。以后日志聚合实体每次预警后,保留最近10次的percentNum2,并将新的percentNum2与maxHistoryNum进行比较,将两者中的较大值作为新的maxHistoryNum保存。
如果日志聚合实体未保存maxHistoryNum的值,则取maxHistoryNum=0。
步骤s603,日志聚合实体根据maxHistoryNum和最近N次的percentNum2计算新的预警值。
本应用场景中采取平均值计算方法,或者加权平均的方法,获取新的预警值percentNum,也就是对于系统保存的最近10次的percentNum2和maxHistoryNum分别赋予不同的权值,在计算新的预警值时,将最近10次percentNum2和maxHistoryNum计算加权平均,获取需要的新的预警值。
本应用场景中提供的预警值的动态调整方法可以但不限于上述提到的平均值或者加权平均的计算方法,可以根据需要灵活设置。
由于采用上述方法获取的预警值能够真实反映Array中日志聚合空间的使用情况,因此,日志聚合实体可以根据预警值的大小选择对Array进行日志聚合空间扩展或者老化日志。
本应用场景中,日志聚合实体动态调整预警值percentNum的操作可以在步骤s501之前,即首先获取到预警值percentNum,然后根据该percentNum进行预警处理;日志聚合实体动态调整预警值percentNum的操作也可以在步骤s502与步骤s503之间,即当到达预警时间时,日志聚合实体对日志进行预警处理,首先动态调整预警值percentNum,获取新的percentNum,然后根据新获取的percentNum继续执行预警处理。
通过以上操作,可以实现日志聚合过程中的动态预警机制,可以根据当前流量以及历史流量信息,决定是否调整预警线或是进行聚合空间的增删,从而大大提高整个聚合处理过程中的资源利用效率,同 时保证了聚合处理过程中的稳定性。
如图7所示,所述老化方法具体包括以下步骤:
步骤s701,日志聚合实体获取动态老化的基础值ageNumBase,以及老化百分比agePercent。
其中,ageNumBase<step(步长),用于系统具有可扩展数据空间的情况;agePercent为需要老化的日志条数占总的日志条数的百分比,用于系统内存耗尽、无可扩展数据空间的情况。本应用场景中可以设置ageNumBase为6万数据空间单位,设置agePercent为60%。
步骤s702,日志聚合实体判断系统空间是否可扩展,若不可以扩展,则执行步骤s703;否则,若系统空间可以扩展,执行步骤s704。
步骤s703,日志聚合实体获取老化日志的条数。
具体的,日志聚合实体获取老化日志的条数为:
ageNum=spacelength*agePercent。
其中,ageNum为需要老化的日志条数;spacelength为Array的长度;agePercent为需要老化的日志条数占总的日志条数的百分比。
步骤s704,日志聚合实体根据当前的预警值大小、Array的长度以及扩展步长,确定本次动态老化的日志条数。
具体的,日志聚合实体通过下述过程确定本次动态老化的日志条数:
A、计算当前Array的长度与初始Array的长度的倍数:
N=spacelength/step;
其中,spacelength为当前Array的长度,即当前日志聚合空间的大小;step为日志聚合空间的扩展步长,等于初始Array的长度。
B、计算本次老化日志条数:
ageNum=ageNumBase*N*(percentNum/100);
其中,ageNum为本次老化日志条数,ageNumBase为动态老化的基础值,N为上述计算得到的当前Array的长度与初始Array的长度的倍数,percentNum为当前预警值。
步骤s705,日志聚合实体从datalink链表的链表头节点开始逐次获取日志聚合空间的地址,对日志聚合空间进行老化,老化的数量为ageNum。
日志聚合实体还可以采用其它方式选择日志聚合空间进行老化,例如从日志聚合频率最低的日志聚合空间开始,老化日志聚合频率最低的前ageNum条日志聚合空间的日志。
具体的,日志聚合实体可以在dataLink链表的每一节点中增加一count域,该count域初始化为1,每聚合一次具有相同日志标识的日志时,count域增加1,即count的值越大,表明该节点相应的日志聚合空间的日志聚合频率越大,日志聚合实体需要对日志聚合空间中的日志进行老化处理时,从count域的值最小的日志聚合空间开始进行老化。
步骤s706,日志聚合实体更新freelink链表、datalink链表头节点中的Num1和Num2值。
日志老化后,在datalink链表中的原节点对应的日志聚合空间内的日志被清空,该存储节点为空节点,添加到freelink链表中,所以增加freelink链表中Num1的取值,相应的减少datalink中Num2的取值。
通过上述方法,当前预警值及Array中日志聚合空间越大,说明当前日志处理越活跃,需要动态老化的日志条数就越多,同时保留了一定数量的未老化日志,从而有效提高日志聚合的命中率,减少聚合后的日志数量。
本发明还提供一种日志聚合的装置,如图8所示,包括:
预警配置单元11,用于获取日志聚合预警值以及预警时间;
该单元获取的日志聚合预警值可以为预先配置的预警值,也可以为该单元根据日志聚合空间的使用情况,进行计算后得出的预警值,采用后者的方式预警配置单元11获取的日志聚合预警值为一变量,根据日志聚合空间使用情况的不同进行调整。预警时间可以是固定时 间,例如每天的10:00,也可以为其他时间,例如周期时间设定为T分钟,即每次预警处理后经过T分钟即到达下次预警时间。
预警获取单元12,与所述预警配置单元11连接,用于达到所述预警配置单元11获取的预警时间时,获取日志聚合空间的当前日志聚合空间使用率;
预警处理单元13,与所述预警配置单元11和预警获取单元12连接,用于当所述预警获取单元12获取的当前日志聚合空间使用率达到所述预警配置单元11获取的日志聚合预警值时,对所述日志聚合空间进行老化或扩展处理。具体地,该处理包括扩展日志聚合空间,或者老化处理日志聚合空间内存储的日志,清空部分日志聚合空间内存储的日志,得到更多空闲的日志聚合空间,用于存储具有新的日志标识的日志。
本发明提供的装置中,如图9所示,所述预警配置单元11进一步包括:
使用率配置子单元111,用于获取历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率;计算子单元112,与所述使用率配置子单元111连接,用于根据预先配置对所述使用率配置子单元111获取的历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率进行加权平均计算,获取所述日志聚合预警值;时间配置子单元113,用于配置进行日志聚合的时间;所述预警配置单元11还可以包括:计数子单元114,用于计数单位时间内日志聚合空间增加的具有新的日志标识的日志条数;当所述具有新的日志标识的日志条数达到所述预设的最大值时,通知所述预警获取单元12对当前日志聚合空间进行计算,获取当前日志聚合空间使用率。
所述预警处理单元13进一步包括:判断子单元131,用于判断所述日志聚合空间是否可以扩展;老化子单元132,与所述判断子单元131连接,用于所述判断子单元131判断所述日志聚合空间不可以扩展时,对所述日志聚合空间进行老化处理,具体的,老化子单元132可以具体用于获取所述日志聚合空间内需要老化的日志条数的计 算方式,根据所述计算方式计算需要老化的日志条数,所述需要老化的日志条数小于所述日志聚合空间内当前存储的全部日志条数;根据所述计算获得的需要老化的日志条数从最早储存在所述日志聚合空间的日志开始或者从日志聚合频率最低的日志聚合空间开始依次对日志聚合空间的日志进行老化处理;扩展子单元133,与所述判断子单元131连接,用于所述判断子单元131判断所述日志聚合空间可以扩展时,扩展所述日志聚合空间,具体的,扩展子单元133可以具体用于根据预先配置的扩展步长扩展所述日志聚合空间,所述扩展步长等于所述日志聚合空间的长度。
通过采用本发明提供的日志聚合装置,配置日志聚合预警值,在达到该预警值时,日志聚合实体对日志聚合空间进行处理,包括扩展日志聚合空间或者老化处理日志聚合空间内存储的日志,减少由于临时空间不足导致的日志丢失现象,使日志聚合实体接收到的日志数据更全面,从而大大提高了利用日志进行统计分析等功能的准确度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (8)
1.一种日志聚合的方法,其特征在于,包括以下步骤:
日志聚合实体获取日志聚合预警值以及预警时间;
当达到所述预警时间时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率;
当所述当前日志聚合空间使用率达到所述日志聚合预警值时,所述日志聚合实体判断所述日志聚合空间是否可以扩展;
若所述日志聚合空间不可以扩展,则所述日志聚合实体对所述日志聚合空间进行老化处理;否则
所述日志聚合实体根据预先配置的扩展步长扩展所述日志聚合空间,所述扩展步长等于所述日志聚合空间的长度。
2.如权利要求1所述的方法,其特征在于,所述日志聚合实体获取日志聚合预警值包括:
所述日志聚合实体获取历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率;所述日志聚合实体根据预先配置对所述历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率进行加权平均计算,获取所述日志聚合预警值;和/或
所述日志聚合实体获取预设的单位时间内日志聚合空间增加的日志条数的最大值,所述日志条数为具有新的日志标识的日志条数。
3.如权利要求2所述的方法,其特征在于,当达到所述预警时间时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率之前,还包括:
当单位时间内增加的具有新的日志标识的日志条数达到所述预设的最大值时,所述日志聚合实体获取日志聚合空间的当前日志聚合空间使用率。
4.如权利要求1所述的方法,其特征在于,所述日志聚合实体对所述日志聚合空间的日志进行老化处理包括:
所述日志聚合实体获取所述日志聚合空间内需要老化的日志条 数的计算方式;
所述日志聚合实体根据所述计算方式计算需要老化的日志条数,所述需要老化的日志条数小于所述日志聚合空间内当前存储的全部日志条数;
所述日志聚合实体根据所述计算获得的需要老化的日志条数从最早储存在所述日志聚合空间的日志开始依次进行老化处理;或者所述日志聚合实体根据所述计算获得的需要老化的日志条数从日志聚合频率最低的日志聚合空间的日志开始依次进行老化处理。
5.一种日志聚合的装置,其特征在于,包括:
预警配置单元,用于获取日志聚合预警值以及预警时间;
预警获取单元,与所述预警配置单元连接,用于达到所述预警配置单元获取的预警时间时,获取日志聚合空间的当前日志聚合空间使用率;
预警处理单元,与所述预警配置单元和预警获取单元连接,用于当所述预警获取单元获取的当前日志聚合空间使用率达到所述日志聚合预警值时,对所述日志聚合空间的日志进行老化或对所述日志聚合空间进行扩展处理;
其中,所述预警处理单元包括:
判断子单元,用于判断所述日志聚合空间是否可以扩展;
老化子单元,与所述判断子单元连接,用于所述判断子单元判断所述日志聚合空间不可以扩展时,对所述日志聚合空间进行老化处理;
扩展子单元,与所述判断子单元连接,用于所述判断子单元判断所述日志聚合空间可以扩展时,扩展所述日志聚合空间。
6.如权利要求5所述的装置,其特征在于,所述预警配置单元包括:
使用率获取子单元,用于获取历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率;
计算子单元,与所述使用率获取子单元连接,用于根据预先配置对所述使用率获取子单元获取的历史最大日志聚合空间使用率与多个最近的日志聚合空间使用率进行加权平均计算,获取所述日志聚合预警值;
时间配置子单元,用于获取进行日志聚合的时间;和/或
计数子单元,用于计数单位时间内日志聚合空间增加的具有新的日志标识的日志条数,当所述具有新的日志标识的日志条数达到预设的最大值时,通知所述预警获取单元对当前日志聚合空间进行计算,获取当前日志聚合空间使用率。
7.如权利要求5所述的装置,其特征在于,所述老化子单元具体用于:
获取所述日志聚合空间内需要老化的日志条数的计算方式,根据所述计算方式计算需要老化的日志条数,所述需要老化的日志条数小于所述日志聚合空间内当前存储的全部日志条数;根据所述计算获得的需要老化的日志条数从最早储存在所述日志聚合空间的日志开始依次进行老化处理,或者从日志聚合频率最低的日志聚合空间的日志开始依次进行老化处理。
8.如权利要求7所述的装置,其特征在于,所述扩展子单元具体用于:
根据预先配置的扩展步长扩展所述日志聚合空间,所述扩展步长等于所述日志聚合空间的长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101437310A CN101557291B (zh) | 2009-05-25 | 2009-05-25 | 日志聚合的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101437310A CN101557291B (zh) | 2009-05-25 | 2009-05-25 | 日志聚合的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101557291A CN101557291A (zh) | 2009-10-14 |
CN101557291B true CN101557291B (zh) | 2011-09-28 |
Family
ID=41175245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101437310A Active CN101557291B (zh) | 2009-05-25 | 2009-05-25 | 日志聚合的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101557291B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391772B (zh) * | 2015-10-16 | 2019-02-22 | 百度在线网络技术(北京)有限公司 | 业务请求处理方法、日志处理方法及装置 |
CN113656645B (zh) * | 2020-05-12 | 2024-08-20 | 北京字节跳动网络技术有限公司 | 日志消费方法和装置 |
CN112231191B (zh) * | 2020-10-23 | 2023-03-31 | 新华三信息安全技术有限公司 | 一种日志采集方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1506805A (zh) * | 2002-12-13 | 2004-06-23 | 英业达股份有限公司 | 动态日志记录方法 |
CN1975684A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 |
CN101087210A (zh) * | 2007-05-22 | 2007-12-12 | 网御神州科技(北京)有限公司 | 高性能的Syslog日志处理和存储方法 |
CN101140594A (zh) * | 2007-10-12 | 2008-03-12 | 中兴通讯股份有限公司 | 一种数据库空间自动扩展的方法及管理模块 |
-
2009
- 2009-05-25 CN CN2009101437310A patent/CN101557291B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1506805A (zh) * | 2002-12-13 | 2004-06-23 | 英业达股份有限公司 | 动态日志记录方法 |
CN1975684A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 |
CN101087210A (zh) * | 2007-05-22 | 2007-12-12 | 网御神州科技(北京)有限公司 | 高性能的Syslog日志处理和存储方法 |
CN101140594A (zh) * | 2007-10-12 | 2008-03-12 | 中兴通讯股份有限公司 | 一种数据库空间自动扩展的方法及管理模块 |
Also Published As
Publication number | Publication date |
---|---|
CN101557291A (zh) | 2009-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104715020B (zh) | 缓存数据的删除方法及服务器 | |
JP6716727B2 (ja) | ストリーミングデータ分散処理方法及び装置 | |
US7076544B2 (en) | Caching techniques for streaming media | |
CN110209348B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN105022761A (zh) | 群组查找方法和装置 | |
EP3282643A1 (en) | Method and apparatus of estimating conversation in a distributed netflow environment | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN106407224A (zh) | 一种键值存储系统中文件压实的方法和装置 | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
CN101394362A (zh) | 基于流分片的对多核网络处理器进行负载均衡的方法 | |
CN101557291B (zh) | 日志聚合的方法和装置 | |
CN112783644B (zh) | 一种基于高频键值计数的分布式倾斜流处理方法和系统 | |
CN110727727A (zh) | 一种数据库的统计方法及装置 | |
CN104572498B (zh) | 报文的缓存管理方法和装置 | |
CN108259426A (zh) | 一种DDoS攻击检测方法及设备 | |
CN111694518A (zh) | 一种集群扩容或缩容后数据自动迁移的方法、装置、设备 | |
CN104102646B (zh) | 数据处理的方法、装置及系统 | |
CN112506926A (zh) | 监控数据存储、查询方法及其相应的装置、设备、介质 | |
CN112486914A (zh) | 一种数据包存储与快查方法与系统 | |
Zhang et al. | Identifying elephant flows in internet backbone traffic with bloom filters and LRU | |
CN102137091A (zh) | 一种过负荷控制方法、装置、系统及客户端 | |
CN110069457A (zh) | 一种基于分布式文件存储系统中过期文件删除方法及系统 | |
CN113079062A (zh) | 一种资源调整方法、装置、计算机设备和存储介质 | |
CN100555282C (zh) | 一种内存数据库扩容的方法 | |
US8838774B2 (en) | Method, system, and computer program product for identifying common factors associated with network activity with reduced resource utilization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |