具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
经过分析,各种安全设备的日志虽然具有量大,持续增加的特点,但日志的数据结构相对比较简单,且不存在多表联合操作的场景,因此在本技术方案中没有使用关系型数据库的方式来存储日志数据,而采用二进制文件存储日志数据,以保证采集到的安全日志数据能够实时***文件***中。
每个日志采集器上的日志数据都是按照日志接收时间顺序来采集安全日志数据的,为了便于在大量的日志中查找到相关的日志,便于***管理员分析***的安全性能,本发明实施例将日志数据分成若干数据块存放,即数据块相当于是存放数据的存储空间,数据块按照时间片划分大小,将数据块按时间段分目录存放,时间段的长短可以根据日志量的大小进行调整,根据目录结构和数据块的名称在内存中建立起针对时间的多级索引。
本发明实施例利用日志接收时间有序的特点,采用目录中日志数据的起始时间给目录命名,对于每个数据块,均采用“数据类型+数据块中日志数据的起始时间”的命名方式给数据块命名,即每个数据块的名称中亦包含了时间段信息。以下将以一个二级索引结构为例对本发明实施例所示的存储结构及存储方法进行详细阐述。
图1为本发明实施例一所提供的安全日志集中存储的存储方案示意图,所述存储方案包括如下步骤:
步骤101,根据时间建立至少两个数据块,所述数据块用于存放日志数据;
步骤102,将数据块分级存放在各级目录下,所述目录根据时间生成;
步骤103,根据各级目录以及目录中的数据块建立针对日志数据的N(N≥2)级索引。
步骤102中将数据块分级存放在各级目录下的过程如图2所示,在本发明实施例所示的数据块分目录、分级存放过程是在接收并存储日志数据的过程中动态完成的,如图2所示,本发明实施例一所提供的安全日志集中存储方法包括如下步骤:
步骤201,接收日志,所述日志是二进制形式的数据;
步骤202,判断当前数据块是否还有存储日志数据的空间,如果有则直接进入步骤208,否则进入步骤203;
当前数据块是指正在存储日志数据的数据块,由于日志数据具有时间有序的特点,因此,为了节省日志数据存储的时间,将正在接收日志的数据块存储起来,接收日志数据时,首先看当前数据块是否有存储空间,如果有空间的话则可以直接进入步骤208,将日志数据存储在当前数据块中,如果当前数据块已经存满日志数据,则进入步骤203。
步骤203,遍历目录;
步骤204,判断该级目录中是否有存放该时间段的数据块的相应目录,如果有则进入步骤206,否则进入步骤205;
步骤205,新建目录,所述新建目录的级别和步骤203中所遍历的目录级别一致,进入步骤207;
步骤206,判断该目录是否还存在下级目录,如果存在下级目录则进入步骤203开始遍历目录,否则进入步骤207;
步骤207,在该目录中新建数据块;
步骤208,在数据块中存放日志数据。
步骤103中根据各级目录以及目录中的数据块建立针对日志数据的N(N≥2)级索引的具体过程如图3所示,图3为本发明实施例一所提供的安全日志集中存储方法中的索引结构的建立和维护方法示意图,为方便描述,以建立和维护一个二级索引结构为例,具体步骤如下所述:
步骤301,遍历所有目录,建立第一级索引;
在本实施例中,由于根据步骤102及图2所示,存放日志的数据块是按照分目录存放的,并且统一采用目录中数据的起始时间给目录命名,因此,下一个目录的开始时间就是上一个目录的结束时间,根据相邻的两个目录,就可以获取这个目录中数据的起始时间和开始时间,通过遍历所有文件***下的所有目录,就可以在内存中建立针对数据时间的第一级索引。
步骤302,遍历每个目录下的日志数据块,建立第二级索引;
在本实施例中,由于数据块是分目录存放的,即一个目录下包含了多个数据块,而由于对于每个数据块,均采用“数据类型+数据块中日志数据的起始时间”的命名方式给数据块命名,即每个数据块的名称中亦包含了时间段信息,因此,通过遍历同一目录下的数据块,可以建立起针对数据时间的第二级索引。
步骤303,动态同步维护索引;
步骤304,判断***是否继续运行,如果继续运行则继续进入步骤303进行动态维护索引,否则结束操作。
步骤303对索引进行动态维护的过程具体包括如下步骤:
步骤3031,发现有新增一个目录时则新增一个相应的第一级索引节点,否则进入步骤304;
步骤3032,发现删除一个目录时,删除一个相应的第一级索引节点,否则进入步骤304;
步骤3033,新增一个数据块时,增加一个相应的第二级索引节点,否则进入步骤304。
根据图3所示步骤建立的本发明实施例的二级索引结构如图4所示,在图4所示的安全日志集中存储方法中的二级索引结构示意图中,一级索引信息是根据文件***中的各目录名称建立的,二级索引信息是根据目录中的数据块名称所建立的。如根据图4中的Dayl目录的目录名称所形成的索引信息指向第一天的数据块,由于数据块的命名都是采用“数据类型+数据块中日志数据的起始时间”的方式,因此根据数据块名称中所包含的时间段信息形成第二级索引信息,根据第二级索引信息即可找到该数据块里的日志数据。
由于本发明实施例所述技术方案是将日志数据分块存放,并将数据块按时间段分目录、分级存放,时间段的长短可以根据日志量的大小进行调整,可以将一天或几天的数据存放在一个目录,也可以将一小时或几小时的数据存放一个目录,因此根据时间段的长短可以建立多级目录,从而可以根据所述多级目录结构以及目录中的数据块命名规则建立起针对数据时间的多级索引结构。
在本发明实施例所示的存储方案中,并不保存索引表,而是通过文件***中的目录结构,以及目录中的数据块的命名规则在内存中形成索引信息,即本发明实施例中的索引信息是目录结构和数据块命名中的时间段信息。
从以上本发明实施例所提供的安全日志集中存储方法可以看出,由于本发明实施例所述技术方案动态的将安全日志分成若干数据块,并将这些数据块按时间段分目录、分级存放,在此基础上对安全日志建立了针对数据时间的多级索引,并在***运行过程中,根据文件***中日志文件的变化对该多级索引进行同步维护,由于索引与时间相关,就能够根据索引在海量日志数据中快速查找到日志数据,方便了安全日志的查找定位,有利于实时分析和告警。
图5为本发明实施例二所提供的安全日志集中存储方法示意图,由于本发明实施例一所示的安全日志集中存储方法中采用了基于文件***的存储方式,因此本发明实施例二在实施例一所示存储方法的基础上还提供了一个的较优的对文件***管理方案。图6为本实施例二所提供的安全日志集中存储方法中的文件***队列的管理示意图,通过将存储日志的多个文件***挂载在一个统一的文件***目录下,并将所有文件***编组为一个循环队列,存储日志文件时多个文件***按序列循环存储,从而实现对大容量的磁盘进行管理,支持对存储空间的动态扩容。如图5所示,所述安全日志集中存储方法包括如下步骤:
步骤101,根据时间建立至少两个数据块,所述数据块用于存放日志数据;
步骤102,将数据块分级存放在各级目录下,所述目录根据时间生成;
步骤103,根据各级目录以及目录中的数据块建立针对日志数据的N(N≥2)级索引。
步骤104,文件***按队列存储日志数据,在所有文件***都存满日志数据的情况下删除其中最老的日志数据,继续存储日志数据。
步骤102和步骤104中将数据块分目录、分级存放在文件***中的过程如图7所示,在本发明实施例所示的数据块根据时间分目录、分级存放过程是在接收并存储日志数据的过程中动态完成的,如图7所示,本发明实施例二所提供的安全日志集中存储方法包括如下步骤:
步骤201,接收日志,所述日志是二进制形式的数据;
步骤202,判断当前数据块是否还有存储日志数据的空间,如果有则直接进入步骤208,否则进入步骤203;
当前数据块是指正在存储日志数据的数据块,由于日志数据具有时间有序的特点,因此,为了节省日志数据存储的时间,将正在接收日志的数据块存储起来,接收日志数据时,首先看当前数据块是否有存储空间,如果有空间的话则可以直接进入步骤208,将日志数据存储在当前数据块中,如果当前数据块已经存满日志数据,则进入步骤203。
步骤203,遍历目录;
步骤204,判断该级目录中是否有存放该时间段的数据块的相应目录,如果有则进入步骤206,否则进入步骤205;
步骤205,新建目录,所述新建目录的级别和步骤203中所遍历的目录级别一致,进入步骤207;
步骤206,判断该目录是否还存在下级目录,如果存在下级目录则进入步骤203开始遍历目录,否则进入步骤207;
步骤207,在该目录中新建数据块;
步骤208,在数据块中存放日志数据。
步骤209,文件***按序列存储日志数据;
步骤210,判断所有文件***是否都已存满,如果都存满则进入步骤211,否则进入步骤209文件***继续存储日志数据;
步骤211,删除文件***中最老的数据,并进入步骤209,继续存储日志数据;
步骤212,判断***运行是否结束,如果没有结束运行则进入步骤209,否则结束操作。
步骤103中所述建立和维护索引的过程如图3所示,所述索引结构示意图如图4所示,在描述实施例一时已有描述,此处不再赘述。
本发明实施例二所述的安全日志的集中存储方案,不仅采用了动态的将安全日志数据分成若干数据块,并将这些数据块按时间段分目录、分级存放,在此基础上对安全日志建立了针对数据时间的多级索引的方式,使在海量日志中快速查找日志数据成为可能,而且在此基础上还提供了一个对文件***进行循环队列管理使用的方法,在采用多个文件***存储日志数据时,使多个文件***滚动存储日志数据,不仅保证了日志分析的实时性,还能够在不中断业务的情况下对存储空间进行动态扩容。
图8为本发明实施例一所提供的安全日志集中存储装置示意图,如图所示,本发明实施例所述的安全日志存储装置包括:
数据处理单元801,用于根据时间建立至少两个数据块,所述数据块用于存放日志数据;
数据存储单元802,用于将数据处理单元801所述数据块存放在各级目录下,所述目录根据时间生成;
数据管理单元803,用于根据数据存储单元802中所述的各级目录以及目录中的数据块建立针对时间的N(N≥2)级索引;
所述N为大于1的自然数。。
图9为本发明实施例一所提供的安全日志集中存储装置中的数据存储单元802的结构示意图,如图所示,所述数据存储单元802包括:
接收子单元8021,用于接收日志数据,并判断当前数据块是否还有存储日志数据的空间,如果有空间则将日志数据存储于当前数据块,否则触发遍历子单元8022;
遍历子单元8022,用于判断该级目录是否有存放该时间段的数据块的相应目录,有则触发判断子单元8023,否则在这一级新建目录;
判断子单元8023,用于判断该目录是否还存在下级目录,如果存在下级目录则触发遍历子单元8022处理,否则由存储子单元8024进行处理;
存储子单元8024,用于在该级目录中新建数据块,并将日志数据存放于所述数据块中。
图10为本发明实施例一所提供的安全日志集中存储装置中的数据管理单元803的结构示意图,如图所示,所述数据管理单元803包括:
第一建立索引子单元8031,用于通过遍历各级目录得到目录列表以及每个目录中所存储数据的开始时间和结束时间,建立针对时间的第1级至第N-1级索引;
第二建立索引子单元8032,用于通过遍历同一目录下的数据块以及每个数据块中所存储日志数据的开始时间和结束时间,获取目录下面的数据块列表,建立针对时间的第N级索引;
维护索引子单元8033,用于维护索引,***运行过程中,新增一个数据目录,则同时新增一个第1级至第N-1级中相应的索引节点,删除一个目录,则同时删除一个第1级至第N-1级中相应的索引节点,新增一个数据块,同时新增一个第N级索引节点。
图11为本发明实施例二所提供的安全日志集中存储装置的结构示意图,所述文件***管理装置包括:
数据处理单元801,用于根据时间建立至少两个数据块,所述数据块用于存放日志数据;
数据存储单元802,用于将数据处理单元所述的数据块存放在各级目录下,所述目录根据时间生成;
数据管理单元803,用于根据数据存储单元802中所述的各级目录以及目录中的数据块建立针对时间的N(N≥2)级索引,所述N为大于1的自然数;
文件***管理单元804,用于使文件***按队列存储日志数据,在所有文件***都存满日志数据的情况下删除其中最老的日志数据,继续存储日志数据。
所述数据存储单元802的结构示意图如9图所示,所述数据存储单元802具体包括:
接收子单元8021,用于接收日志,并判断当前数据块是否还有存储日志数据的空间,如果有空间则将日志数据存储于当前数据块,否则触发遍历子单元8022;
遍历子单元8022,用于判断该级目录是否有存放该时间段的数据块的相应目录,有则触发判断子单元8023,否则在这一级新建目录;
判断子单元8023,用于判断该目录是否还存在下级目录,如果存在下级目录则触发遍历子单元8022处理,否则由存储子单元8024进行处理;
存储子单元8024,用于在该级目录中新建数据块,并将日志数据存放于所述数据块中。
所述数据管理单元803的结构示意图,如10图所示,所述数据管理单元803包括:
第一建立索引子单元8031,用于通过遍历各级目录,获取目录列表以及每个目录中所存储数据的开始时间和结束时间,建立针对时间的第1级至第N-1级索引;
第二建立索引子单元8032,用于通过遍历同一目录下的数据块以及每个数据块中所存储日志数据的开始时间和结束时间,获取目录下面的数据块列表,建立针对时间的第N级索引;
维护索引子单元8033,用于维护索引,***运行过程中,新增一个数据目录,则同时新增一个第1级至第N-1级中相应的索引节点,删除一个目录,则同时删除一个第1级至第N-1级中相应的索引节点,新增一个数据块,同时新增一个第N级索引节点;所述N为大于1的自然数。
由于本发明实施例所述技术方案动态的将安全日志分成若干数据块,并将这些数据块按时间段分目录、分级存放,在此基础上对安全日志建立了针对数据时间的多级索引,并在***运行过程中,根据文件***中日志数据块的变化对该多级索引进行同步维护,因此,使在海量日志数据中能够快速的根据目录和数据块命名中的时间信息快速查找日志数据成为可能,方便了安全日志的查找定位,有利于实时分析和告警。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。