一种在大数据量环境下的实时异常检测系统

未命名 07-12 阅读:101 评论:0


1.本发明涉及网络数据监控技术领域,具体而言,涉及一种在大数据量环境下的实时异常检测系统。


背景技术:

2.网络异常通常指网络运营偏离正常网络行为的情况,造成异常的原因包括很多种,例如网络过载、蠕虫网络入侵、路由策略修改以及分布式拒绝服务(ddos)攻击。网络流量异常是网络异常中最常见的威胁。网络异常流量可能导致中心网络速率降低甚至引起网络瘫痪,会对网络环境造成严重的损坏。
3.在过去的几年中,机器学习在异常识别、分类取得了很高的准确性,然而将机器学习方法应用到实际生产环境中功能性方面取得很精确性的成功,但性能仍然存在许多挑战,其中一个挑战就是在时效性。传统有监督学习算法的分类过程是在分类模型训练好的前提下,将待评估检测的数据通过模型去预测分类。这时存在两种情况,如果接入网关侧将流量数据持久化成pcap包时间策略设置过长,则实时性检测时效性大打折扣;若时间策略设置过短,则每次完成打包后系统中就要从磁盘中加载模型,这个过程频繁发生会使得检测效率低下。
4.在模型优化方面,当有新的带标签的数据集到来时,我们优化模型重新上传到系统,这个过程首先会让系统整体停顿然后更换模型重新上线,这一过程可能会导致一段时间内系统不可用,在不可用的时间段内流量数据会丢失,无法检测。
5.除此之外,在完成检测工作后,传统关系型数据库对于大数据量环境下异常检测结果的查询工作在时间性能方面也是存在巨大挑战。虽然传统数据库在查询方面做出了许多优化,例如优化索引和主从分离等手段,但是在数据量到达千万级别时效果甚微,可能会造成系统界面长时间停顿甚至与数据库连接中断不可用。
6.针对于上述描述,我们发现目前的网络异常检测方法存在的缺陷主要是以下三个方面:
7.1)在特征提取和分类预测过程中,cicflowmeter在生成特征流量数据时,需要计算出流量数据包所有数据以及将数据落盘到磁盘后,再进行预测,导致效率低下,实时性较差;
8.2)在主业务中会进行额外的数据同步操作,使得数据检索和存储性能较低;
9.3)流量密集时,处理速度不能与之匹配可能会导致流量数据丢失,性能较差。


技术实现要素:

10.本发明在于提供一种在大数据量环境下的实时异常检测系统,其能够缓解上述问题。
11.为了缓解上述的问题,本发明采取的技术方案如下:
12.一种在大数据量环境下的实时异常检测系统,实时异常检测系统的异常检测流程
包括以下步骤:
13.s1、启动实时异常检测系统,同时加载机器学习模型;
14.s2、将系统接入侧路由器网关的流量打包,得到流量数据包;
15.s3、通过cicflowmeter软件计算得到流量数据包的特征数据,并发送至消息队列;
16.s4、机器学习模型从消息队列获取特征数据,并采用多检测线程的方式,同时对多个特征数据进行异常检测,得到异常检测结果,并写入消息队列;
17.s5、实时统计模块从消息队列获取异常检测结果,并进行数据统计,得到异常统计结果;
18.s6、实时统计模块将异常检测结果,以及异常统计结果发送至mysql集群,mysql集群对异常检测结果和异常统计结果进行添加持久化操作,并将新增变动的数据同步至elasticsearch集群;
19.s7、elasticsearch集群根据新增变动的数据,进行数据查询,并将查询结果返回至实时统计模块的数据大盘。
20.在本发明的一较佳实施方式中,步骤s3中,cicflowmeter软件每计算出一条特征数据,则发一条未发往消息队列的特征数据至消息队列。
21.在本发明的一较佳实施方式中,步骤s3中,实时异常检测系统采用调用的方式获取cicflowmeter软件服务,且cicflowmeter软件内部持久化策略修改为发送计算得到的特征数据到消息队列。
22.在本发明的一较佳实施方式中,在启动实时异常检测系统时,将机器学习模型直接加载到系统运行工作内存中,机器学习模型订阅消息队列中对应的流量特征主题,获取该主题对应的特征数据。
23.在本发明的一较佳实施方式中,步骤s6中,mysql集群与elasticsearch集群数据同步,具体包括以下步骤:
24.s61、监听mysql集群的binlog日志,获取变动数据;
25.s62、根据变动数据的操作类型,将变动数据转换为不同类型的对象;
26.s63、将变动数据对应的数据库表、操作类型以及不同类型的对象初始化为binlog传输服务对象;
27.s64、将binlog传输服务对象转换为json类型并发送到消息队列中的数据同步主题;
28.s65、初始化添加/删除/更新列表,对从消息队列的数据同步主题接收到的数据对象操作类型,即binlog传输服务对象的操作类型进行分类,并添加到操作类型对应的列表中;
29.s67、根据不同的变动数据的操作类型,生成不同的请求方法发送到elasticsearch实现数据同步。
30.在本发明的一较佳实施方式中,步骤s7中,海量数据检索中使用elasticsearch检索,具体步骤如下:
31.s71、根据用户界面输入的查询条件,生成数据请求体;
32.s72、将数据请求体发送到es集群获取数据响应体;
33.s73、若响应成功,则从数据响应体中抽出数据对应的主键索引集合后,执行步骤
s74,否则根据数据请求体直接在mysql集群进行全表查询后跳转至步骤s75;
34.s74、根据主键索引集合到mysql集群进行反表查询;
35.s75、根据获取到查询结果,返回给用户。
36.在本发明的一较佳实施方式中,实时异常检测系统基于查询结果,采用docker-kubernetes批量滚动更新机器学习模型。
37.与现有技术相比,本发明的有益效果是:
38.提出了在特征提取和分类预测模型中实现流式处理的流程,cicflowmeter在生成特征流量数据时,不再需要计算出流量数据包所有数据以及将数据落盘到磁盘后,再进行预测,而是引入消息队列中间件,减少落盘过程以及提前预测时间,进一步提升实时性。
39.提出elasticsearch和mysql主从架构做为海量数据异常检索,结合elasticsearch高性能的全文检索以及mysql高可靠的持久化存储,利用各自搜索存储引擎的优点,同时在数据更新同步方面设计专门的同步模块,不会在主业务中进行额外的数据同步操作,使得数据检索和存储性能大大提升。
40.搭建kubernetes服务器,是针对于流量密集场景下,核心检测部分下线更新重新上线的过程,为了防止流量密集过多避免消息队列中流量丢失的现象,在系统中更新完分类模型后,使用kubernetes滚动更新,保证业务时刻在线上运行,同时kubernetes也可以监控系统cpu使用情况过多也就是异常检测流量数据过多,异常检测线程使用过多的情况下也可以实现系统水平迁移,保证数据不丢失以及提升系统实时性。
41.为使本发明的上述目的、特征和优点能更明显易懂,下文特举本发明实施例,并配合所附附图,作详细说明如下。
附图说明
42.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
43.图1是实时异常检测系统的架构图;
44.图2是消息队列生产侧流程图;
45.图3是消息队列消费侧流程图;
46.图4是监听binlog流程图;
47.图5是更新es流程图;
48.图6是异常检索流程图。
具体实施方式
49.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
50.如图1、图2和图3所示,本发明提供了一种在大数据量环境下的实时异常检测系统,实时异常检测系统的异常检测流程包括以下步骤:
51.s1、启动实时异常检测系统,同时加载机器学习模型,而不是等待检测算法预测特征数据时,再启动,减少了频繁启动机器学习模型的情况,提升了检测效率。
52.s2、将系统接入侧路由器网关的流量打包,得到流量数据包。
53.s3、通过cicflowmeter软件计算得到流量数据包的特征数据,并发送至消息队列;
54.s4、机器学习模型从消息队列获取特征数据,并采用多检测线程的方式,同时对多个特征数据进行异常检测,得到异常检测结果,并写入消息队列。
55.s5、实时统计模块从消息队列获取异常检测结果,并进行数据统计,得到异常统计结果。
56.s6、实时统计模块将异常检测结果,以及异常统计结果发送至mysql集群,mysql集群对异常检测结果和异常统计结果进行添加持久化操作,并将新增变动的数据同步至elasticsearch集群。
57.s7、elasticsearch集群根据新增变动的数据,进行数据查询,并将查询结果返回至数据大盘模块。
58.在本发明中,将打包好的流量数据包,通过第三方软件cicflowmeter生成对应的流量包的特征数据,同时改写cicflowmeter的特征数据持久化策略,不再写入磁盘,而是接入消息队列,订阅主题。主题类似于数据库表,订阅主题类似于生产者生产的数据发送到指定的数据库表,消费者从指定数据库表中取出数据。每次计算出一条特征数据,直接发往消息队列,而不再写入磁盘csv文件,减少写入磁盘时间,而且也不必等待流量包所有特征数据写完在进行分类预测,降低时间延迟。
59.在本发明中,在启动实时异常检测系统时,将机器学习模型直接加载到系统运行工作内存中,机器学习模型订阅消息队列中对应的流量特征主题,获取该主题对应的特征数据,如图3所示。异常检测算法部分订阅对应特征生成的主题,同时引入线程池,在高密集流量到来时,可多个检测线程同时运行,提升检测速度和效率,降低时延,最后再将分类预测结果保存到数据库。
60.在本发明中,在特征数据预测结果中筛选异常检测结果的过程,是结合关系型数据库主从架构的特点,引入elasticsearch全文搜索引擎负责数据查询即主业务,mysql负责数据的增删改操作即从业务,如图4和图5所示,elasticsearch与mysql数据同步和检索的具体步骤如下:
61.s61、监听mysql集群的binlog日志,获取变动数据;
62.s62、根据变动数据的操作类型,将变动数据转换为不同类型的对象;
63.s63、将变动数据对应的数据库表、操作类型以及不同类型的对象初始化为binlog传输服务对象;
64.s64、将binlog传输服务对象转换为json类型并发送到消息队列中的数据同步主题;
65.s65、初始化添加/删除/更新列表,对从消息队列的数据同步主题接收到的数据对象操作类型,即binlog传输服务对象的操作类型进行分类,并添加到操作类型对应的列表中;
66.s67、根据不同的变动数据的操作类型,生成不同的请求方法发送到elasticsearch实现数据同步。
67.在本发明中,使用数据同步服务去消费消息队列中binlog增量日志内容,图5为根据获取到mysql变动的数据更新es的流程,根据对象类型生成对应操作类型的列表,根据列表中数据对象所属对象表,执行es客户端请求方法更新es,实现数据同步。
68.在本发明中,海量数据检索中使用elasticsearch检索,如图6所示,具体步骤如下:
69.s71、根据用户界面输入的查询条件,生成数据请求体;
70.s72、将数据请求体发送到es集群获取数据响应体;
71.s73、若响应成功,则从数据响应体中抽出数据对应的主键索引集合后,执行步骤s74,否则根据数据请求体直接在mysql集群进行全表查询后跳转至步骤s75;
72.s74、根据主键索引集合到mysql集群进行反表查询;
73.s75、根据获取到查询结果,返回给用户。
74.在本发明中,检索流量特征异常数据的时候,使用elasticsearch服务器做为主要查询方式,mysql查询做为兜底策略,流程如图6所示。根据用户侧输入的查询条件,生产es查询请求体,发送到es服务器,如果响应成功,获取到对应范围数据的主键索引集合,去mysql数据库服务器做回表查询;如果查询响应失败,则直接根据sql查询语句在mysql中查询。
75.在本发明中,滚动更新机器学习模型的方法包括:采用gitlab作为代码管理仓库,建立docker私人仓库,将最新代码打包成镜像推送到私人仓库中,kubernetes通过容器镜像做滚动发布,保证线上始终有系统副本在运行即业务始终在运行,不会因为更新模型而导致系统业务不可用。
76.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种在大数据量环境下的实时异常检测系统,其特征在于,实时异常检测系统的异常检测流程包括以下步骤:s1、启动实时异常检测系统,同时加载机器学习模型;s2、将系统接入侧路由器网关的流量打包,得到流量数据包;s3、通过cicflowmeter软件计算得到流量数据包的特征数据,并发送至消息队列;s4、机器学习模型从消息队列获取特征数据,并采用多检测线程的方式,同时对多个特征数据进行异常检测,得到异常检测结果,并写入消息队列;s5、实时统计模块从消息队列获取异常检测结果,并进行数据统计,得到异常统计结果;s6、实时统计模块将异常检测结果,以及异常统计结果发送至mysql集群,mysql集群对异常检测结果和异常统计结果进行添加持久化操作,并将新增变动的数据同步至elasticsearch集群;s7、elasticsearch集群根据新增变动的数据,进行数据查询,并将查询结果返回至实时统计模块的数据大盘。2.根据权利要求1所述在大数据量环境下的实时异常检测系统,其特征在于,步骤s3中,cicflowmeter软件每计算出一条特征数据,则发一条未发往消息队列的特征数据至消息队列。3.根据权利要求1所述在大数据量环境下的实时异常检测系统,其特征在于,步骤s3中,实时异常检测系统采用调用的方式获取cicflowmeter软件服务,且cicflowmeter软件内部持久化策略修改为发送计算得到的特征数据到消息队列。4.根据权利要求1所述在大数据量环境下的实时异常检测系统,其特征在于,在启动实时异常检测系统时,将机器学习模型直接加载到系统运行工作内存中,机器学习模型订阅消息队列中对应的流量特征主题,获取该主题对应的特征数据。5.根据权利要求1所述在大数据量环境下的实时异常检测系统,步骤s6中,mysql集群与elasticsearch集群数据同步,具体包括以下步骤:s61、监听mysql集群的binlog日志,获取变动数据;s62、根据变动数据的操作类型,将变动数据转换为不同类型的对象;s63、将变动数据对应的数据库表、操作类型以及不同类型的对象初始化为binlog传输服务对象;s64、将binlog传输服务对象转换为json类型并发送到消息队列中的数据同步主题;s65、初始化添加/删除/更新列表,对从消息队列的数据同步主题接收到的数据对象操作类型,即binlog传输服务对象的操作类型进行分类,并添加到操作类型对应的列表中;s67、根据不同的变动数据的操作类型,生成不同的请求方法发送到elasticsearch实现数据同步。6.根据权利要求1所述在大数据量环境下的实时异常检测系统,步骤s7中,海量数据检索中使用elasticsearch检索,具体步骤如下:s71、根据用户界面输入的查询条件,生成数据请求体;s72、将数据请求体发送到es集群获取数据响应体;s73、若响应成功,则从数据响应体中抽出数据对应的主键索引集合后,执行步骤s74,
否则根据数据请求体直接在mysql集群进行全表查询后跳转至步骤s75;s74、根据主键索引集合到mysql集群进行反表查询;s75、根据获取到查询结果,返回给用户。7.根据权利要求1所述在大数据量环境下的实时异常检测系统,其特征在于,实时异常检测系统基于查询结果,采用docker-kubernetes批量滚动更新机器学习模型。

技术总结
本发明公开了一种在大数据量环境下的实时异常检测系统,涉及网络数据监控技术领域,该系统在特征提取和分类预测模型中实现流式处理的流程,CICFlowMeter在生成特征流量数据时,引入消息中间件,提出Elasticsearch和MySQL主从架构作为海量数据异常检索,结合Elasticsearch高性能全文检索以及MySQL高可靠的持久化存储,利用各自搜索存储引擎的优点,同时在数据更新同步方面设计专门的同步模块,搭建Kubernetes服务器,在系统中更新完分类模型后,使用Kubernetes滚动更新,保证业务时刻在线上运行。为了防止流量密集过多避免消息队列中流量丢失的现象,Kubernetes也可以监控系统CPU使用情况过多也就是异常检测流量数据过多,异常检测线程使用过多的情况下也可以实现系统水平迁移,保证数据不丢失以及提升系统实时性。统实时性。统实时性。


技术研发人员:丁熠 李恒宇 刘瑶 周尔强 朱国斌 赵洋 曹明生 邓伏虎
受保护的技术使用者:电子科技大学
技术研发日:2023.05.05
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐