本发明涉及it运维领域,具体地,涉及一种流量统计日志的相似性向量化方法及系统。
背景技术:
在it运维领域,流量统计信息在系统状态监测、故障诊断、异常分析复盘的重要依据。流量统计信息中会包含固定时间片段内各种指标的统计值,最典型的比如每种协议的数据包的数量。这些指标中,仅就不同独立类型的协议可能就有数百至数千种,独立类型的协议会嵌套使用产生复合类型的协议,这将进一步导致协议类型的急剧扩张。因此流量统计日志的体量非常庞大。目前,对于流量统计日志通常采取直接保存或者压缩保存的方法。如果采用直接保存方法,会消耗巨大的存储空间;如果采用压缩的保存方法,可以减小存储的消耗,使用前需要先解压缩,但压缩和解压缩都将消耗计算资源和时间。
专利文献为cn110830450a的发明专利公开了一种基于统计的异常流量监测方法,包括:收集预设时间段内的用户访问日志记录并进行清洗与变换处理,生成标准用户访问数据;统计标准用户访问数据对应的统计特征分别在不同时间维度上的分布;将统计特征在不同时间维度上的分布映射成对应的多元高斯分布并分别进行参数估计;计算当前网络流量对应的统计特征在各时间维度内分别对应的高斯分布概率值;判断高斯分布概率值是否小于当前网络流量所在时间维度内的预置告警阈值;若是,则判定当前网络流量为异常流量。本发明还公开了一种基于统计的异常流量监测装置、设备及存储介质。本发明易于部署且实施成本低,并可灵活应对不同时间周期不同业务场景的异常流量实时告警。但是上述方案无法实现存储空间的节约。
技术实现要素:
针对现有技术中的缺陷,本发明的目的是提供一种流量统计日志的相似性向量化方法及系统。
根据本发明提供的一种流量统计日志的相似性向量化方法,包括如下步骤:
流量统计信息压缩步骤:将原始流量统计信息转化成可近似还原的压缩编码和压缩还原模型;
相似性修正步骤:对压缩编码相似性修正,形成相似性压缩编码;
时间跨度对准步骤:将不同时间段之间的相似性压缩编码转化到同一向量空间,生成最终的编码向量;
相似性压缩还原模型生成步骤:针对最终的编码向量调整压缩还原模型。
优选地,所述流量统计信息压缩步骤包括:
向量表示步骤:读取原始流量统计信息,并表示为原始向量;
构建步骤:构建encoder-decoder模型;
训练步骤:将原始向量代入encoder-decoder模型中训练,得到压缩编码l-encode和压缩还原模型。
优选地,所述相似性修正步骤包括:
数据读取步骤:读取生成的l-encode以及原始流量统计信息;
计算步骤:计算原始流量统计信息之间的相似度得到sim-raw-set;
相似度模型构建步骤:构建相似度拟合模型;
相似性压缩向量生成步骤:用相似度拟合模型训练得到相似性压缩向量l-sim-encode。
优选地,所述时间跨度对准步骤包括:
训练数据构建步骤:利用时间重叠部分构建对准训练数据train-align;
深度模型构建步骤:构建输入输出宽度均为w-encode的向量的深度模型;
训练模型步骤:利用train-align训练所述深度模型;
深度模型计算步骤:将l-sim-encode的数据用深度模型计算得到结果l-result。
优选地,所述相似性压缩还原模型生成步骤包括:
还原模型训练数据构建步骤:构建还原模型训练数据;
数据加载步骤:加载所述压缩还原模型;
还原模型生成步骤:使用还原模型训练数据训练压缩还原模型,得到相似性压缩还原模型。
根据本发明提供的一种流量统计日志的相似性向量化系统,包括如下模块:
流量统计信息压缩模块:将原始流量统计信息转化成可近似还原的压缩编码和压缩还原模型;
相似性修正模块:对压缩编码相似性修正,形成相似性压缩编码;
时间跨度对准模块:将不同时间段之间的相似性压缩编码转化到同一向量空间,生成最终的编码向量;
相似性压缩还原模型生成模块:针对最终的编码向量调整压缩还原模型。
优选地,所述流量统计信息压缩模块包括:
向量表示模块:读取原始流量统计信息,并表示为原始向量;
构建模块:构建encoder-decoder模型;
训练模块:将原始向量代入encoder-decoder模型中训练,得到压缩编码l-encode和压缩还原模型。
优选地,所述相似性修正模块包括:
数据读取模块:读取生成的l-encode以及原始流量统计信息;
计算模块:计算原始流量统计信息之间的相似度得到sim-raw-set;
相似度模型构建模块:构建相似度拟合模型;
相似性压缩向量生成模块:用相似度拟合模型训练得到相似性压缩向量l-sim-encode。
优选地,所述时间跨度对准模块包括:
训练数据构建模块:利用时间重叠部分构建对准训练数据train-align;
深度模型构建模块:构建输入输出宽度均为w-encode的向量的深度模型;
训练模型模块:利用train-align训练所述深度模型;
深度模型计算模块:将l-sim-encode的数据用深度模型计算得到结果l-result。
优选地,所述相似性压缩还原模型生成模块包括:
还原模型训练数据构建模块:构建还原模型训练数据;
数据加载模块:加载所述压缩还原模型;
还原模型生成模块:使用还原模型训练数据训练压缩还原模型,得到相似性压缩还原模型。
与现有技术相比,本发明具有如下的有益效果:
1、本发明可以将原始网络流量统计信息编码成较短的定长向量,节约了存储空间,并且可以通过计算近似还原出原始流量的统计信息。
2、本发明所生成的向量之间存在近似于“原始流量统计信息在不同时刻之间的相似性”。基于这一特性,编码向量无需原状,即可进行许多种类的分析,如基于聚类的异常检测等。
3、本发明的压缩数据保有原始数据的相似属性,可在非还原状态下进行聚类、异常检测等计算。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为流量统计日志的相似性向量化方法步骤流程图。
图2为基于深度网络的流量统计信息压缩步骤示意图。
图3为压缩编码的相似性修正步骤示意图。
图4为编码空间的时间跨度对准步骤示意图。
图5为相似性压缩还原模型生成步骤示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
如图1至图5所示,本发明提供了一种流量统计日志的相似性向量化方法及系统,包括基于深度网络的流量统计信息压缩步骤,参考图2,该步骤读取:原始流量统计信息;该步骤产生:压缩编码向量、压缩还原模型;用于生成可近似还原的压缩向量和压缩还原模型。
压缩编码的相似性修正步骤,参考图3,该步骤读取:压缩编码后的向量、原始流量统计信息;该步骤产生:相似性压缩编码;用于调整压缩向量为其添加“相似性”表达能力。
编码空间的时间跨度对准步骤,参考图4,该步骤读取:连续两个时间段的“相似性压缩编码”,较晚的时间段所对应的编码为待对准对象;该步骤产生:对准后的相似性压缩编码,即“相似性向量化”的结果向量。用于将不同时间段之间的编码向量转化到同一向量空间,生成最终的编码向量。
相似性压缩还原模型生成步骤,参考图5,该步骤读取:对准后的相似性压缩编码、原始流量统计信息、压缩还原模型;该步骤产生:相似性压缩还原模型,针对最终的编码向量调整压缩还原模型。
步骤1:基于深度网络的流量统计信息压缩步骤,包括如下子步骤:
步骤1.1:读取时间跨度为ts,时间片大小为tp的原始流量统计信息,并将其转化生成为原始向量。ts是一个较长的时间段落,如12小时、24小时等,当前ts的开始时间点须与上一ts有重复的部分,将重复的时间范围定义为span-overlap,其长度如1个小时;tp是一个较小的时间段落,如100毫秒、1秒、1分钟等,每个ts包含整数个tp;流量统计信息是指ts时间跨度内,流量中的各项指标的统计值,原始流量统计信息以(tp起始时间点,原始流量统计)的二元组形式表示,如(1613842307000,{tcp:100m,udp:300m,rtsp:600m});将流量统计信息的每个指标转化为向量的一个维度,指标取值转化为向量值,如(1613842307000,{tcp:100m,udp:300m,rtsp:600m})可以转化为(1613842307000,[100,300,600]),其中tcp、udp、rtsp分别对应的维度为0、1、2;
步骤1.2:构建“encoder-decoder”模型。模型的中间层宽度为w-encode,如128、256等,即为最终编码向量的长度,encoder-decoder模型的输入输出支持大于等于0的浮点数。举例来说,encoder可以由卷积层、池化层、全连接层、softmax层组成,损失函数为mse;
步骤1.3:使用步骤1.1生成的原始向量,训练步骤1.2的模型。训练完毕后,每条原始数据输入模型的encoder部分得到的向量即为“压缩编码向量”,以二元组形式表示每个时间点对应的压缩编码向量,形如(tp起始时间点,压缩编码向量),将三元组按时间由小到大添加入数组,记为l-encode;模型的decoder部分即为“压缩还原模型”。
步骤2:压缩编码的相似性修正步骤,包括如下子步骤:
该步骤读取:压缩编码后的向量、原始流量统计信息;该步骤产生:相似性压缩编码;
步骤2.1:读取步骤1.3生成的l-encode,读取原始流量统计信息,按照时间序由小到大组成为(tp起始时间点,原始流量统计)数组,记为l-raw;
步骤2.2:计算原始流量统计记录之间的相似度。定义集合sim-raw-set,对l-raw中的每条记录r-raw[i]执行下列操作:
步骤2.2.1:对于r-raw[i],从l-raw中任意抽取n条记录,每条记录记为r-raw[j],其中i不等于j;
步骤2.2.2:分别计算r-raw[i]与每条r-raw[j]的相似度,计算方法可使用如余弦相似度,得到相似度sim-raw[i,j],该结果用三元组形式表示为(i,j,sim-raw[i,j]),将三元组添加入sim-raw-set;
步骤2.3,构建模型用于将拟合相似度。模型输入为embedding层,输出的激活函数为sigmoid,损失函数为交叉熵损失函数。其中embedding层向量宽度为w-encode,embedding向量数量为ts中所包含tp的数量,即l-encode的长度。将embedding使用l-encode中的向量依次从上往下初始化。模型所实现的效果可以表示为公式:
其中i和j是两个整数,ei和ej对应embedding层中对应位置的向量,即l-encode中对应位置的向量;
步骤2.4:迭代sim-raw-set中的每条数据,使用其数据(i,j,sim-raw[i,j])中的i、j作为步骤2.3定义模型的输入,sim-raw[i,j]作为模型的输出,训练模型,得到优化后的embedding层,将embedding中的向量依次添加到数组,记为l-sim-encode。
步骤3:编码空间的时间跨度对准步骤,包括如下子步骤:
步骤3.1:当前时间跨度ts的上一时间跨度记为ts’,span-overlap为ts与ts’在时间上的重合部分。将ts’中已经完成编码的向量记为l-result’,其中位于span-overlap区间的部分记为l-result-overlap’,将l-sim-encode中位于span-overlap区间的部分记为l-sim-encode-overlap。将l-result-overlap’与l-sim-encode-overlap中对应的记录按照时间join,得到集合train-align,其中每个元素三元组形如(tp开始时间点,于l-result-overlap’中的编码向量,于l-sim-encode-overlap中的编码向量);
步骤3.2:构建深度模型,要求输入输出宽度均为w-encode的向量,中间可以是全连接层等的各种组合,损失函数为交叉熵损失函数;
步骤3.3:使用步骤3.1的数据训练步骤3.2的模型,以三元组中“于l-result-overlap’中的编码向量”作为模型的输入,“于l-sim-encode-overlap中的编码向量”作为模型的输出;
步骤3.4:将l-sim-encode中的所有数据输入步骤3.3的模型,将输出结果按照时间序组成数组,记为l-result,l-result即为相似性向量化编码的结果。
步骤4:相似性压缩还原模型生成步骤,包括如下子步骤:
步骤4.1:将l-result与l-raw中的数据按照tp的开始时间点做join,得到三元组形如(tp开始时间点,l-result中的向量,l-raw中的向量);
步骤4.2:加载步骤1.3得到的“压缩还原模型”;
步骤4.3:使用步骤4.1数据中的“l-result中的向量”为输入,“l-raw中的向量”为输出训练“压缩还原模型”,得到“相似性压缩还原模型”,记为unzip-decoder。将l-result中的数据逐一输入unzip-decoder即可得到近似原始数据。
本发明还提供了一种流量统计日志的相似性向量化系统,包括如下模块:流量统计信息压缩模块:将原始流量统计信息转化成可近似还原的压缩编码和压缩还原模型;相似性修正模块:对压缩编码相似性修正,形成相似性压缩编码;时间跨度对准模块:将不同时间段之间的相似性压缩编码转化到同一向量空间,生成最终的编码向量;相似性压缩还原模型生成模块:针对最终的编码向量调整压缩还原模型。
进一步地,所述流量统计信息压缩模块包括:向量表示模块:读取原始流量统计信息,并表示为原始向量;构建模块:构建encoder-decoder模型;训练模块:将原始向量代入encoder-decoder模型中训练,得到压缩编码l-encode和压缩还原模型。所述相似性修正模块包括:数据读取模块:读取生成的l-encode以及原始流量统计信息;计算模块:计算原始流量统计信息之间的相似度得到sim-raw-set;相似度模型构建模块:构建相似度拟合模型;相似性压缩向量生成模块:用相似度拟合模型训练得到相似性压缩向量l-sim-encode。所述时间跨度对准模块包括:训练数据构建模块:利用时间重叠部分构建对准训练数据train-align;深度模型构建模块:构建输入输出宽度均为w-encode的向量的深度模型;训练模型模块:利用train-align训练所述深度模型;深度模型计算模块:将l-sim-encode的数据用深度模型计算得到结果l-result。所述相似性压缩还原模型生成模块包括:还原模型训练数据构建模块:构建还原模型训练数据;数据加载模块:加载所述压缩还原模型;还原模型生成模块:使用还原模型训练数据训练压缩还原模型,得到相似性压缩还原模型。
实施例1:
根据本发明提供的流量统计日志的相似性向量化方法,包括:
步骤1:基于深度网络的流量统计信息压缩步骤,执行如下子步骤:
步骤1.1:读取时间跨度为ts=25小时(前一日的23:00到当前日的24:00),时间片为tp=5秒的原始流量统计信息,并将其转化生成为原始向量。重复的时间范围span-overlap为[前一日23:00,前一日24:00],长度为1个小时;将流量统计信息的每个指标转化为向量的一个维度(总指标数为3000个),指标取值转化为向量值,即将(1613841306023,{tcp:200m,udp:700m,rtsp:900m,…})等转化为(1613841306023,[100,300,600,…])等,其中tcp、udp、rtsp分别对应的维度为0、1、2;
步骤1.2:构建“encoder-decoder”模型。模型的中间层宽度为w-encode=256,encoder由卷积层、池化层、全连接层、softmax层组成,损失函数为mse;
步骤1.3:使用步骤1.1生成的原始向量,训练步骤1.2的模型。训练完毕后,每条原始数据输入模型的encoder部分得到的向量即为“压缩编码向量”,以二元组形式表示每个时间点对应的压缩编码向量,为(1613841306023,[0.23,0,000012,0.8,0.9,0,0,0.27,…]),将三元组按时间由小到大添加入数组,记为l-encode;模型的decoder部分即为“压缩还原模型”;
步骤2:压缩编码的相似性修正步骤,执行如下子步骤:
该步骤读取:压缩编码后的向量、原始流量统计信息;该步骤产生:相似性压缩编码;
步骤2.1:读取步骤1.3生成的l-encode,读取原始流量统计信息,按照时间序由小到大组成为(tp起始时间点,原始流量统计)数组,记为l-raw;
步骤2.2:计算原始流量统计记录之间的相似度。定义集合sim-raw-set,对l-raw中的每条记录r-raw[i]执行下列操作:
步骤2.2.1:对于r-raw[i],从l-raw中任意抽取n=500条记录,每条记录记为r-raw[j],其中i不等于j;
步骤2.2.2:分别计算r-raw[i]与每条r-raw[j]的相似度,计算方法可使用如余弦相似度,得到相似度sim-raw[i,j],该结果用三元组形式表示为(i,j,sim-raw[i,j]),将三元组添加入sim-raw-set;
步骤2.3,构建模型用于将拟合相似度。模型由embedding层、全连接层、输出层构成,激活函数为sigmoid,损失函数为交叉熵损失函数。其中embedding层向量宽度为w-encode=256,embedding向量数量为18000,即l-encode的长度。
步骤2.4:迭代sim-raw-set中的每条数据,使用其数据(i,j,sim-raw[i,j])中的i、j作为步骤2.3定义模型的输入,sim-raw[i,j]作为模型的输出,训练模型,得到优化后的embedding层,将embedding中的向量依次添加到数组,记为l-sim-encode,其中的一条数据为:
(1613841306023,[0.0035,0.12,0,0.25,0.999,0,0.12,0.0002,…]);
步骤3:编码空间的时间跨度对准步骤,执行如下子步骤:
步骤3.1:将“上一次ts计算得到的相似性向量化编码的23:00到24:00点片段”与“当前ts通过2.4步骤计算得到的l-sim-encode中的23:00到24:00部分”通过实践进行对准,得到数据集合,其中的一条数据为:
(1613841306023,[0.072,0.12,0.23,0.22,0.953,0,0,0.013,…],[0.0035,0.12,0,0.25,0.999,0,0.12,0.0002,…]);
步骤3.2:构建深度模型,输入输出宽度均为w-encode=256的向量,中间包含两个全连接层,损失函数为交叉熵损失函数;
步骤3.3:使用步骤3.1的数据训练步骤3.2的模型,以三元组中“于l-result-overlap’中的编码向量”作为模型的输入,“于l-sim-encode-overlap中的编码向量”作为模型的输出;
步骤3.4:将l-sim-encode中的所有数据输入步骤3.3的模型,将输出结果按照时间序组成数组,记为l-result,l-result即为相似性向量化编码的结果,其中的一条数据为:
(1613841306023,[0.0712,0.119,0.227,0.231,0.954,0.0001,0,0.021,…];
步骤4:相似性压缩还原模型生成步骤,执行如下子步骤:
步骤4.1:将l-result与l-raw中的数据按照tp的开始时间点做join,得到三元组形如(tp开始时间点,l-result中的向量,l-raw中的向量),其中的一条数据为:
(1613841306023,[0.0712,0.119,0.227,0.231,0.954,0.0001,0,0.021,…],[100,300,600,…]);
步骤4.2:加载步骤1.3得到的“压缩还原模型”;
步骤4.3:使用步骤4.1数据中的“l-result中的向量”为输入,“l-raw中的向量”为输出训练“压缩还原模型”,得到“相似性压缩还原模型”,记为unzip-decoder。将l-result中的数据[0.0712,0.119,0.227,0.231,0.954,0.0001,0,0.021,…]输入unzip-decoder即可得到近似原始数据[100.00002,299.99997,600.001,…]。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。