具体实施方式
下面将结合本实施例中的附图,对本实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为在遭受非法攻击时对系统中的日志风暴进行抑制,避免重要的系统日志被覆盖,本实施例提供了一种抑制日志风暴的方法,如图1所示,该方法包括:
101、按照时间间隔粒度对日志进行归并,获得归并日志。
在进行日志归并时,首先按照当前的时间间隔粒度,或者初始设置的时间间隔粒度对某一归并时段内产生的日志进行归并。例如,按照10秒的时间间隔粒度,在每个10秒的归并时段内对系统中产生的日志进行归并,本实施例不对当前时间间隔粒度或初始时间间隔粒度的具体数值进行限定。
此外如前所述,日志归并还涉及到日志归并策略,日志归并策略包括选择何种归并维度对日志进行归并,例如以源端口号作为归并维度,将除端口号以外其他属性信息相同的多条日志归并为一条归并日志。本实施例主要对日志归并使用的时间间隔粒度进行改进,对于选择何种归并维度本实施例不做过多关注。
102、根据归并日志生成反馈信息。
所述反馈信息用于反映系统中单位时间日志数量的增减变化,表征单位时间日志数量上升或下降的趋势,在本实施例的一种实现方式中,所述反馈信息为具体的单位时间日志数量。
103、根据反馈信息调整时间间隔粒度,得到调节时间间隔粒度。
在进行日志归并时,提高时间间隔粒度可以归并较多的日志,降低系统中的日志总量;反之,降低时间间隔粒度则归并的日志数量较少,相对会增加系统中的日志总量。例如,假设系统中每秒产生100条日志(包括垃圾日志和常规的系统日志),当按照10秒的时间间隔粒度进行日志归并时,每10秒需要归并的日志数量为100*10=1000个。假设以端口号为归并维度,且每秒产生的100条日志涉及3种不同的非归并维度属性信息,那么一次日志归并可以将1000条日志归并为3个归并日志,在一分钟的时间里,可以将总数为6000条日志归并为3*(60/10)=18条日志。如果将10秒的时间间隔粒度提高到30秒,则每次归并的日志数量为100*30=3000个,一次日志归并可以将3000条日志归并为3个归并日志,在一分钟的时间里,可以将总数为6000条日志归并为3*(60/30)=6条日志。
由此可以看出,时间间隔粒度越大归并后的日志数量就越少,因此为在系统中单位时间日志数量增加的情况下降低归并后的日志数量,需要保证时间间隔粒度与系统中单位时间日志数量呈正相关关系,即当单位时间内的日志数量增加时,提高时间间隔粒度,以减少归并后的日志数量。本实施例仅对日志数量与时间间隔粒度之间的调整关系进行定性阐述,不做定量分析。
104、按照调节时间间隔粒度进行下一次日志归并。
在确定调节时间间隔粒度后,根据调节时间间隔粒度在下一归并时段内继续进行日志归并。需要说明的是,下一归并时段的时长为调节时间间隔粒度所确定的时长。例如,先前的时间间隔粒度为10秒,则每10秒进行一次日志归并,即归并时段为10秒钟;在将时间间隔粒度提高到20秒后,后续则每20秒进行一次日志归并,即将归并时段调整为20秒钟。
在现有的日志归并的过程中,系统仅仅按照固定的归并时段进行日志归并,在归并策略不变的前提下,随着时间的推移归并后的日志数量将累加增长,无法真正达到减少日志数量的目的。本实施例提供的抑制日志风暴的方法,能够根据前一次日志归并后产生的归并日志确定当前系统的单位时间日志数量,并且依据单位时间日志数量的增减趋势对应调整时间间隔粒度的大小。与现有技术相比,可以通过日志归并的结果对时间间隔粒度进行反馈,在单位时间内日志数量增加时扩大日志归并的样本范围,当以同样的策略进行归并时,可以将更多的日志归并为一个归并日志,由此减少归并后的日志数量。
下面,对本实施例方法的技术效果进行定量分析:在归并策略不变的前提下,归并后的日志数量与时间间隔粒度的提高程度成反比关系。例如当系统中每秒产生100条日志时,如果以10秒的时间间隔粒度可以将10秒内的1000条日志归并为3条日志,即一分钟内产生的归并日志数量为3*(60/10)=18条,则将时间间隔粒度提高到30秒时可以将30秒内的3000条日志归并为3条日志,即一分钟内产生的归并日志数量为3*(60/30)=6条。由此可以看出当将时间间隔粒度提高三倍时,归并后的日志数量减少到原来的归并日志的三分之一,即归并日志减少的比例与时间间隔粒度的倍数一致,也就是说在本实施例中,仅将时间间隔粒度提高一倍就可以减少一半的归并日志数量,这种呈几何形态的日志缩减对于抑制系统日志风暴而言,具有实质意义。
需要说明的是,本实施例中所指的减少归并后的日志数量是相对现有技术中归并后的日志数量而言的,由于提高了日志归并的时间间隔粒度,因此从一个较大的时间范围来看,将更多的日志归并为了有限的几个归并日志,从而实现对日志风暴的抑制。
进一步的,作为对图1所示方法的细化,本实施例还提供了一种抑制日志风暴的方法,如图2所示,该方法包括:
201、按照时间间隔粒度对日志进行归并,获得归并日志。
本步骤的实现方式与图1中步骤101的实现方式相同,此处不再赘述。
202、将时间间隔粒度写入到归并日志中。
在本实施例中,需要在归并日志中增加一个用于写入时间间隔粒度的字段,事例性的可以在归并日志的末尾扩展一个长度为N比特的时间间隔粒度字段,其中N为正整数。在步骤101获得归并日志后,将日志归并所使用的时间间隔粒度写入到该时间间隔粒度字段中。例如对于10秒的时间间隔粒度,可以在时间间隔粒度字段写入二进制字符“1010”以表示时间间隔粒度为10秒。
此外,在进行日志归并后,还需要在归并日志中写入日志归并的命中次数。所述命中次数是指该条归并日志归并的日志个数。例如,将13个日志归并为1个归并日志,则该归并日志中写入的命中次数为“1101”,即命中次数为13。
203、从归并日志中读取日志命中次数以及时间间隔粒度。
在获得归并日志后,就可以根据归并日志生成反馈信息了。系统对归并日志中记录的日志命中次数与时间间隔粒度进行相除,计算得到系统中的单位时间日志数量,即归并时段内单位时间上系统中所产生的日志数量。例如,系统对10秒钟内产生的700条日志进行归并,得到一条归并日志,则归并日志中记录的命中次数为700、时间间隔粒度为10秒。以命中次数700除以时间间隔粒度10秒,即得10秒钟内系统中平均每秒产生的日志数量为70条。
204、根据系统中单位时间日志数量的变化生成反馈信息。
通常,日志归并的处理在时间维度上是一个持续的过程,例如每10秒进行一次日志归并。所述日志数量的变化是指本次日志归并时计算得到的单位时间日志数量与前一次日志归并时计算得到的单位时间日志数量相比,产生的数量变化,这种数量变化包括数量增加、数量减少或数量持平。在根据单位时间日志数量的比对得到单位时间日志数量的变化后,生成反馈信息。
如前所述,反馈信息用于反映系统中单位时间日志数量的增减变化,只要能够反映出本次归并的单位时间日志数量相对前一次归并过程中的单位时间日志数量的变化的数据信息均可作为反馈信息。
在本实施例的一种实现方式中,反馈信息具体为本次单位时间日志数量与前次单位时间日志数量的差值,该差值为正数时表示系统中的单位时间日志数量呈增长趋势,该差值为负数时表示系统中的单位时间日志数量呈减少趋势,该差值为0时表示系统中的单位时间日志数量保持不变。
在本实施例的另一种实现方式中,反馈信息具体为本次单位时间日志数量与前次单位时间日志数量的比值,该比值大于1时表示系统中的单位时间日志数量呈增长趋势,该比值小于1时表示系统中的单位时间日志数量呈减少趋势,该比值为1时表示系统中的单位时间日志数量保持不变。
本实施例可以通过单位时间内日志数量的比对反映出系统中日志数量增长率的变化趋势,并以此作为后续调整时间间隔粒度的理论依据。
205、根据反馈信息对当前使用的时间间隔粒度进行调整,得到调节时间间隔粒度。
在调整时间间隔粒度时,保证时间间隔粒度与单位时间日志数量两者之间呈正相关关系。具体的,当系统中的单位时间日志数量增加时,提高时间间隔粒度,当系统中的单位时间日志数量减少时,降低时间间隔粒度。
本实施例中,调整时间间隔粒度的方式包括但不限于:
1)网络运维人员根据单位时间日志数量以及日常运维过程中的经验值,对时间间隔粒度进行量化调整。
2)在系统中预置量化映射关系,规定单位时间日志数量与时间间隔粒度之间一一映射的关系。
事例性的,所述量化映射关系可以如下表所示:
3)在系统中预置比例关系,根据预设的比例关系调整时间间隔粒度。
对于线性的比例关系而言,可以设定单位日志变化量与时间间隔粒度调节量之间的对应关系,例如“△日志数量=500<——>△粒度调节量=3”;
对于非线性的比例关系而言,可以设定如下表所示的对应关系集合:
△日志数量(单位:条) |
△粒度调节量(单位:秒) |
500 |
3 |
600 |
3 |
…… |
…… |
6000 |
18 |
8000 |
26 |
以上具体数值以及数值之间的对应关系仅为说明之用,不作为对本实施例的限定。
在本实施例的一个优选方案中,可以为时间间隔粒度的调整设置一个映射函数y=f(x),其中x为作为自变量的单位时间日志数量,y为作为因变量的调节时间间隔粒度。在对时间间隔粒度进行调整时,将步骤204中计算得到的单位日志数输入到映射函数中,直接得到调整后的调节时间间隔粒度。为保证单位时间日志数量与调节时间间隔粒度之间呈正相关关系,须保证所述映射函数为增函数。
进一步的,在本实施例的另一个优选方案中,还可以根据不同的日志类型特点为日志的归并设定特定的映射函数。设定映射函数的原则是:对于单位时间内日志数量较多的业务类型,设定变化率更高的映射函数。例如对于能够产生大量攻击日志的蠕虫攻击类型业务,使用指数函数,而对于单位时间内日志数量较少的业务类型则可以使用线性函数。本实施例不对映射函数的具体形式进行限定,事例性的,所述映射函数可以是y=5x+2、y=x2等,对于某些特定情况,还可以使用分段映射函数,例如:
进一步的,为避免通过映射函数计算出的调节时间间隔粒度脱离实际范围,还可以预设一个粒度区间用以对计算出的调节时间间隔粒度进行限制。在通过步骤205计算出调节时间间隔粒度后,判断该调节时间间隔粒度是否属于粒度区间内,若调节时间间隔粒度小于粒度区间的下限值,则将粒度区间的下限值确定为调节时间间隔粒度,若调节时间间隔粒度大于粒度区间的上限值,则将粒度区间的上限值确定为调节时间间隔粒度,由此保证调节时间间隔粒度符合实际应用条件。在本实施例的一种实现方式中,所述粒度区间可以设置为10秒至60秒的闭区间。
再进一步的,在本实施例的另一个优选方案中,为避免频繁反馈调整时间间隔粒度造成的系统资源负担,还可以设定一个统计周期,该统计周期大于使用的时间间隔粒度,然后按照该统计周期生成反馈信息并对时间间隔粒度进行调整。通常将统计周期设置为时间间隔粒度的倍数,例如,对于10秒的时间间隔粒度,可以将统计周期设置为30秒。系统每30秒进行一次时间间隔粒度的调整,在生成反馈信息时分别计算三次日志归并的单位时间日志数量,然后对三个单位时间日志数量取平均值,得到反馈信息。此外,为避免短期内非常规业务对时间间隔粒度调整的错误影响,系统在每次调整时间间隔粒度时,还可以根据以往调节过程中计算得到的单位时间日志数量,对本次的单位时间日志数量进行累加计算,由此使得计算出的单位时间日志数量可以对一段时间内日志数量的变化进行较为平稳的反映。例如时,在第一次调整时间间隔粒度时,计算得到的单位时间日志数量为1000,在第二次调整时间间隔粒度时,计算得到的单位时间日志数量为1400,则对单位时间日志数量1000与单位时间日志数量1400取平均值,得到单位时间日志数量1200作为第二次调整时间间隔粒度使用的单位时间日志数量。
最后,为进一步提高日志归并的命中次数,减少归并后的日志数量,在本实施例的另一个优选方案中,还可以在调整时间间隔粒度的基础上,进一步对日志归并策略进行调整。具体的,当系统中单位时间日志数量增加时,增加归并策略中的归并维度,而当系统中单位时间日志数量减少时,减少归并策略中的归并维度。在进行日志归并时,增加归并维度的数量,可以提高日志归并的命中次数,因此,当系统中单位时间日志数量增加时,可以通过增加归并维度数量的方式将归并维度变为归并维度组合,由此使得归并后的日志数量进一步减少。
事例性的,如图3所示,待归并的5条日志涉及的属性信息包括:1)源端口号、2)源IP地址、3)目标端口号、4)目的IP地址。当以其中一种属性信息作为归并维度时,例如,以源端口号作为归并维度,5条日志的非归并维度属性信息可以划分为3种组合:1)源IP地址15+目标端口号a+目的IP地址23;2)源IP地址12+目标端口号a+目的IP地址23;3)源IP地址16+目标端口号b+目的IP地址22。依据这3种划分结果可以将日志1和日志2归并为一条归并日志,将日志3归并为一条归并日志,将日志4和日志5归并为一条归并日志,由此得到3条归并日志。
当增加一个归并维度,例如以源端口号+源IP地址的归并维度组合进行日志归并时,5条日志的非归并维度属性信息可以划分为2种组合:1)目标端口号a+目的IP地址23;2)目标端口号b+目的IP地址22依据这2种划分结果可以将日志1、日志2和日志3归并为一条归并日志,将日志4和日志5归并为一条归并日志,由此得到2条归并日志。
通过上述举例可以看出,在进行日志归并时,使用的归并维度越多,剩余的非归并维度属性信息就越少,因而能够减少非归并维度属性信息的组合数量,因此可以提高日志归并的命中次数,减少归并后的日志数量。
本实施例提供的抑制日志风暴的方法,除了可以根据系统中单位时间日志数量灵活调整日志归并的时间间隔粒度,还可以根据不同的日志类型设置不同变化率的映射函数,以加强对网络攻击日志等数量巨大日志的归并效果,进一步减少归并后的日志数量。此外,当系统中单位时间日志数量变化时,还可以在调整时间间隔粒度的基础上对日志归并使用的归并维度数量进行增减,进一步在日志归并的过程中实现对归并日志数量的灵活控制。本实施例提供的抑制日志风暴的方法,更加优选的应用到缓存受到限制的系统中,例如嵌入式系统,由于其内存较小,当产生垃圾日志时,重要的系统日志被覆盖的速度更快。因此采用本实施例提供的抑制日志风暴的方法,可以有效解决小存储介质系统中垃圾日志过多的问题。
进一步的,参考图1或图2所示方法的实现,本实施例还提供了一种抑制日志风暴的装置,该装置位于系统内部,可以用于实现图1或图2所示的方法。如图4所示,所述装置包括:归并单元41、反馈单元42以及粒度调整单元43,其中,
归并单元41,用于按照时间间隔粒度对日志进行归并,获得归并日志;
反馈单元42,用于根据归并单元41归并后的归并日志生成反馈信息,反馈信息用于反映系统中单位时间日志数量的增减变化;
粒度调整单元43,用于根据反馈单元42生成的反馈信息调整时间间隔粒度,得到调节时间间隔粒度;
归并单元41还用于按照粒度调整单元43调整后的调节时间间隔粒度进行下一次日志归并。
进一步的,如图5所示,该装置还包括:
读写单元51,用于在归并单元41按照时间间隔粒度对日志进行归并之后,在归并日志中增加时间间隔粒度字段,将时间间隔粒度写入到时间间隔粒度字段中。
进一步的,如图6所示,反馈单元42,包括:
读取子单元61,用于从归并日志中读取日志命中次数以及时间间隔粒度;
计算子单元62,用于根据读取子单元61读取的日志命中次数与时间间隔粒度的比值,计算得到单位时间日志数量。
进一步的,粒度调整单元43用于当单位时间日志数量增加时,提高时间间隔粒度;当单位时间日志数量减少时,降低时间间隔粒度。
进一步的,粒度调整单元43用于将反馈单元42计算的计算得到的单位时间日志数量作为自变量输入到预设函数中,计算得到作为因变量的调节时间间隔粒度,其中,预设函数为增函数。
进一步的,如图7所示,该装置还包括:
维度调整单元71,与归并单元41和反馈单元42相连,用于当单位时间日志数量增加时,增加归并策略中的归并维度,当单位时间日志数量减少时,减少归并策略中的归并维度。
进一步的,如图8所示,该装置还包括:
判断单元81,用于在粒度调整单元43根据反馈信息调整时间间隔粒度,得到调节时间间隔粒度之后,判断调节时间间隔粒度是否属于预设的粒度区间内;
粒度调整单元43还用于:
当判断单元81判断调节时间间隔粒度小于粒度区间的下限值时,将粒度区间的下限值确定为调节时间间隔粒度;
当判断单元81判断调节时间间隔粒度大于粒度区间的上限值时,将粒度区间的上限值确定为调节时间间隔粒度。
进一步的,如图9所示,该装置还包括:
设置单元91,用于设定统计周期,统计周期大于时间间隔粒度;
反馈单元42还用于按照设置单元91设置的统计周期生成反馈信息。
本发明实施例提供的抑制日志风暴装置,能够根据归并后的归并日志生成反馈信息,以此反映系统中单位时间日志数量的增减变化。然后根据该反馈信息,对归并使用的时间间隔粒度进行调整,得到调节时间间隔粒度,最后按照调节时间间隔粒度进行下一次日志归并。由此可以在系统中单位时间日志数量增加的情况下,通过增加时间间隔粒度的方式延长归并时段,从而实现对更长时间段内日志的归并,进而减少系统的日志总量。与现有技术中按照固定的归并时段进行日志归并相比,可以随系统中单位时间日志数量的变化灵活调整日志归并的时间间隔粒度,稳定系统中的日志总量,避免系统中日志数量急剧上升导致的日志风暴。
此外,本实施例提供的抑制日志风暴的装置,除了可以根据系统中单位时间日志数量灵活调整日志归并的时间间隔粒度,还可以根据不同的日志类型设置不同变化率的映射函数,以加强对网络攻击日志等数量巨大日志的归并效果,进一步减少归并后的日志数量。此外,当系统中单位时间日志数量变化时,还可以在调整时间间隔粒度的基础上对日志归并使用的归并维度数量进行增减,进一步在日志归并的过程中实现对归并日志数量的灵活控制。本实施例提供的抑制日志风暴的装置,更加优选的应用到缓存受到限制的系统中,例如嵌入式系统,由于其内存较小,当产生垃圾日志时,重要的系统日志被覆盖的速度更快。因此采用本实施例提供的抑制日志风暴的装置,可以有效解决小存储介质系统中垃圾日志过多的问题。
进一步的,参考图1或图2所示方法的实现,本实施例还提供了一种抑制日志风暴的装置,该装置位于系统内部,可以用于实现图1或图2所示的方法。如图10所示,所述装置包括:所述处理器101、读写电路102、运算电路103、逻辑电路104、输入输出电路105以及总线106,其中,
处理器101,用于按照时间间隔粒度对日志进行归并,获得归并日志,然后根据归并后的归并日志生成反馈信息,反馈信息用于反映系统中单位时间日志数量的增减变化,接着根据生成的反馈信息调整时间间隔粒度,得到调节时间间隔粒度,最后,按照调整后的调节时间间隔粒度进行下一次日志归并。
读写电路102,用于在处理器101按照时间间隔粒度对日志进行归并之后,在归并日志中增加时间间隔粒度字段,将时间间隔粒度写入到时间间隔粒度字段中。
读写电路102还用于从归并日志中读取日志命中次数以及时间间隔粒度;
运算电路103用于根据读写电路102读取的日志命中次数与时间间隔粒度的比值,计算得到单位时间日志数量。
进一步的,处理器101用于当单位时间日志数量增加时,提高时间间隔粒度;当单位时间日志数量减少时,降低时间间隔粒度。
处理器101用于运算电路103计算的计算得到的单位时间日志数量作为自变量输入到预设函数中,计算得到作为因变量的调节时间间隔粒度,其中,预设函数为增函数。
进一步的,处理器101用于当单位时间日志数量增加时,增加归并策略中的归并维度,当单位时间日志数量减少时,减少归并策略中的归并维度。
逻辑电路104,用于在处理器101根据反馈信息调整时间间隔粒度,得到调节时间间隔粒度之后,判断调节时间间隔粒度是否属于预设的粒度区间内;
处理器101还用于:
当逻辑电路104判断调节时间间隔粒度小于粒度区间的下限值时,将粒度区间的下限值确定为调节时间间隔粒度;
当逻辑电路104判断调节时间间隔粒度大于粒度区间的上限值时,将粒度区间的上限值确定为调节时间间隔粒度。
输入输出电路105,用于接收设定的统计周期,统计周期大于时间间隔粒度;
处理器101还用于按照输入输出电路105接收的统计周期生成反馈信息。
以上,所述处理器101、读写电路102、运算电路103、逻辑电路104以及输入输出电路105分别与总线106相连,通过总线106进行数据交互。
本发明实施例提供的抑制日志风暴装置,能够根据归并后的归并日志生成反馈信息,以此反映系统中日志数量的增减变化。然后根据该反馈信息,对归并使用的时间间隔粒度进行调整,得到调节时间间隔粒度,最后按照调节时间间隔粒度进行下一次日志归并。由此可以在系统中单位时间日志数量增加的情况下,通过增加时间间隔粒度的方式延长归并时段,从而实现对更长时间段内日志的归并,进而减少系统的日志数量。与现有技术中按照固定的归并时段进行日志归并相比,可以随系统中单位时间日志数量的变化灵活调整日志归并的时间间隔粒度,稳定系统中的日志总量,避免系统中日志数量急剧上升导致的日志风暴。
此外,本实施例提供的抑制日志风暴的装置,除了可以根据系统中单位时间日志数量灵活调整日志归并的时间间隔粒度,还可以根据不同的日志类型设置不同变化率的映射函数,以加强对网络攻击日志等数量巨大日志的归并效果,进一步减少归并后的日志数量。此外,当系统中单位时间日志数量变化时,还可以在调整时间间隔粒度的基础上对日志归并使用的归并维度数量进行增减,进一步在日志归并的过程中实现对归并日志数量的灵活控制。本实施例提供的抑制日志风暴的装置,更加优选的应用到缓存受到限制的系统中,例如嵌入式系统,由于其内存较小,当产生垃圾日志时,重要的系统日志被覆盖的速度更快。因此采用本实施例提供的抑制日志风暴的装置,可以有效解决小存储介质系统中垃圾日志过多的问题。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。