一种基于流处理的聚合模式检测日志的方法与流程

摘要: 本发明涉及电数字数据处理,尤其涉及一种基于流处理的聚合模式检测日志的方法。背景技术:1、大部分的日志审计系统主要是基于离线分析的方式,大致上是先将日志保存至数据...
一种基于流处理的聚合模式检测日志的方法与流程

本发明涉及电数字数据处理,尤其涉及一种基于流处理的聚合模式检测日志的方法。

背景技术:

1、大部分的日志审计系统主要是基于离线分析的方式,大致上是先将日志保存至数据库中,如elasticsearch、postgresql等,再去利用sql语句结合模式语句进行查询来检测是否有告警发生,这样的检测方法在许多场景下(如工业控制领域)的实时性差,没法第一时间发现日志,而且离线分析的方法的性能不稳定,cpu和内存都集中于“定时器”所设定好的那段时间内开始逐条查询所有的检测模式,当日志量源源不断过来时就会出现cpu和内存分析计算的分布不过于集中,造成较差的稳定性。因此本发明要基于实时分析的原则,对不间断的日志进行实时检测,让分析计算的时间均匀分布。

2、关于实时数据分析,许多发明仅基于spark-streaming的简单分析应用之后,就在算法层面上没有过多地深入,一旦检测的模式达到上百上千条时,算法的时间复杂度与检测的性能并没有显著提升,随着源源不断的日志流入,检测时间多于接收日志的时间,就会发生阻塞。并且这些发明也没有将现成的模式库结合起来,缺少实际应用的场景。因此本发明将实现一个检测框架,将现有的多模匹配、倒排索引等提升检测性能的算法通spark-streaming的检测逻辑结合起来,并融入sigma模式的生态,让其在性能方面与应用方面都有显著成就。

3、例如,公开号为cn119322717b的中国专利,公开了一种工作流的日志收集与可视化方法,提供了以下技术方案,包括:s1:接收来自所有微服务的日志数据;s2:采用ai检索,使用自然语言处理和机器学习进行日志的模式识别和关联分析;s3:采用链路追踪框架,在整个微服务架构中保持请求的上下文信息;s4:采用实时分析工具对日志流进行实时监控和异常检测;s5:结合事件驱动架构,对被分析认为重要的日志或模式,自动触发报警通知给相应的团队成员;s6:审计当前的日志级别和内容,优化日志输出,确保日志数据的质量和相关性。本发明通过实现一个集中式的日志聚合和标准化平台,不仅保证了日志的完整性和一致性,而且显著降低了日志检索的难度。但是,上述的一种工作流的日志收集与可视化方法,仅采用spark streaming进行常规实时监控,未涉及模式检测性能优化,依赖机器学习导致误报率高,且缺乏与sigma等模式库的整合,检测效率与实用性不足。

技术实现思路

1、本发明解决了现有技术中实时性差、性能不稳定、模式检测效率低的问题,提出了一种基于流处理的聚合模式检测日志的方法,达成了实时检测、稳定性高、性能高、兼容性高的目的。

2、为实现上述目的,本发明采用如下技术方案:

3、一种基于流处理的聚合模式检测日志的方法,包括:

4、将多条检测模式按聚合字段合并为模式组,为每个模式组构建ac自动机和倒排索引表;

5、将原始日志流输入流处理引擎,通过滑动窗口将日志划分为微批次,并利用水印机制丢弃超出窗口时长的日志;

6、遍历各模式组,将当前微批次日志中的字段送入对应模式组的ac自动机进行多模式匹配,得到匹配节点;

7、对匹配节点进行二次校验,将通过校验的节点经倒排索引表映射到模式标识,输出对应的报警结果。

8、作为优选,所述合并为模式组中,若多个模式包含相同的过滤条件,将该过滤条件合并为一个,不同模式之间采用逻辑或运算符连接;合并后的模式组以聚合字段为分组键,在spark流处理引擎中对同一窗口内的日志按该字段进行分组检测。

9、作为优选,所述spark流处理引擎将原始日志流按滑动窗口切分为多个微批次,每个微批次转换为弹性分布式数据集;对该数据集的每个分区,分别调用封装了ac自动机和倒排索引表匹配逻辑的用户自定义函数,各分区并行执行匹配,匹配结果在驱动端合并后输出。

10、作为优选,所述构建ac自动机和倒排索引表中,构建ac自动机包括将同一模式组下的所有模式的过滤条件值作为模式串加入字典树,并为每个节点添加失败指针;在匹配过程中,当日志字段值在字典树中匹配到某节点时,通过失败指针跳转继续匹配,在单次扫描时匹配多个模式串。

11、作为优选,所述构建ac自动机和倒排索引表中,构建倒排索引表包括提取每个模式组下所有过滤条件的键值对,将相同键的过滤条件合并,相同键下的所有值组合为一个列表,形成从字符串键到字符串数组的映射结构;在匹配完成后,通过所述映射结构根据匹配到的键快速定位到对应的模式标识列表。

12、作为优选,所述对匹配节点进行二次校验时,判断匹配到的过滤条件值是否包含通配符,若包含通配符且满足通配匹配模式,则保留匹配结果,并进入倒排索引映射步骤,若包含但不满足通配匹配模式,或不包含且无法与日志字段值完全匹配,则丢弃匹配结果。

13、作为优选,所述将通过校验的节点经倒排索引表映射到模式标识后,根据映射得到的模式标识提取对应的完整模式内容,并与日志字段进行二次校验,确认是否完全命中;所述二次校验仅针对已映射到的部分设定需要二次校验的模式执行。

14、作为优选,所述检测模式采用sigma模式格式,以键值对形式描述日志字段匹配条件,包括等值匹配、通配符匹配和正则匹配;在模式解析阶段,提取sigma模式的检测字段和条件值,构建ac自动机的模式串和倒排索引表的键值映射。

15、作为优选,所述滑动窗口采用固定窗口长度和滑动步长,窗口长度等于每个微批次中包含的日志数据的时间跨度,滑动步长等于窗口向前移动的时间偏移量;所述水印机制基于窗口长度设置延迟阈值,当日志事件时间早于当前窗口起始时间减去延迟阈值时,丢弃该日志。

16、作为优选,所述遍历各模式组后,当日志字段数量大于预设阈值时,对日志字段进行过滤,仅保留与当前模式组中存在的键相匹配的字段,并送入ac自动机匹配。

17、与现有技术相比,本发明的有益效果是。

18、1.本发明将连续日志流切分为均匀的小批次,在内存中完成模式检测,避免传统离线分析集中处理导致的cpu和内存峰值,并能将告警发现延迟降至秒级,资源占用平稳,满足对稳定性与实时性的双重要求。

19、2.本发明的ac自动机实现单次扫描多模式串匹配,时间复杂度与文本长度线性相关,倒排索引将匹配结果快速映射到模式id,避免逐条比对。两者结合使上千条模式下的检测性能大幅提升,杜绝日志积压与阻塞。

20、3.本发明将sigma模式无缝接入spark-streaming检测引擎,模式以键值对描述日志匹配条件,易于扩展和维护,模式解析阶段完成合并、分组、构建索引,检测阶段可以直接调用,提升安全检测准确性。

1.一种基于流处理的聚合模式检测日志的方法,其特征在于,包括:

2.根据权利要求1所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述合并为模式组中,若多个模式包含相同的过滤条件,将该过滤条件合并为一个,不同模式之间采用逻辑或运算符连接;合并后的模式组以聚合字段为分组键,在spark流处理引擎中对同一窗口内的日志按该字段进行分组检测。

3.根据权利要求2所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述spark流处理引擎将原始日志流按滑动窗口切分为多个微批次,每个微批次转换为弹性分布式数据集;对该数据集的每个分区,分别调用封装了ac自动机和倒排索引表匹配逻辑的用户自定义函数,各分区并行执行匹配,匹配结果在驱动端合并后输出。

4.根据权利要求3所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述构建ac自动机和倒排索引表中,构建ac自动机包括将同一模式组下的所有模式的过滤条件值作为模式串加入字典树,并为每个节点添加失败指针;在匹配过程中,当日志字段值在字典树中匹配到某节点时,通过失败指针跳转继续匹配,在单次扫描时匹配多个模式串。

5.根据权利要求3或4所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述构建ac自动机和倒排索引表中,构建倒排索引表包括提取每个模式组下所有过滤条件的键值对,将相同键的过滤条件合并,相同键下的所有值组合为一个列表,形成从字符串键到字符串数组的映射结构;在匹配完成后,通过所述映射结构根据匹配到的键快速定位到对应的模式标识列表。

6.根据权利要求5所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述对匹配节点进行二次校验时,判断匹配到的过滤条件值是否包含通配符,若包含通配符且满足通配匹配模式,则保留匹配结果,并进入倒排索引映射步骤,若包含但不满足通配匹配模式,或不包含且无法与日志字段值完全匹配,则丢弃匹配结果。

7.根据权利要求6所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述将通过校验的节点经倒排索引表映射到模式标识后,根据映射得到的模式标识提取对应的完整模式内容,并与日志字段进行二次校验,确认是否完全命中;所述二次校验仅针对已映射到的部分设定需要二次校验的模式执行。

8.根据权利要求1所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述检测模式采用sigma模式格式,以键值对形式描述日志字段匹配条件,包括等值匹配、通配符匹配和正则匹配;在模式解析阶段,提取sigma模式的检测字段和条件值,构建ac自动机的模式串和倒排索引表的键值映射。

9.根据权利要求8所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述滑动窗口采用固定窗口长度和滑动步长,窗口长度等于每个微批次中包含的日志数据的时间跨度,滑动步长等于窗口向前移动的时间偏移量;所述水印机制基于窗口长度设置延迟阈值,当日志事件时间早于当前窗口起始时间减去延迟阈值时,丢弃该日志。

10.根据权利要求1或9所述的一种基于流处理的聚合模式检测日志的方法,其特征在于,所述遍历各模式组后,当日志字段数量大于预设阈值时,对日志字段进行过滤,仅保留与当前模式组中存在的键相匹配的字段,并送入ac自动机匹配。