1. 引言
近年来,通信技术迅猛发展,通信网络的规模与其拓扑结构的复杂性也在快速增长。在一个大型通信网络中,网络设备之间存在业务上的逻辑关系或者是物理上的链路连接,即使是某个微小的设备故障并产生告警信息时,也会对网络的稳定性造成较大影响。而在政企专线业务中,由于传输信息的重要性,对通信网络线路的稳定性提出了更高要求。因此及时地处理设备告警信息,定位并解决告警,维持网络的稳定性对于网络运营商以及国家来说具有重要意义。
当前场景下,为保证政企专线通信的稳定运行,运营商需要运维人员对政企路由进行端到端、全程、全天候的高强度监控。为减轻维保部门工作人员的运维压力,提高政企线路的稳定性,运营企业亟需一套系统,能将业务路由中的设备告警、性能等日志数据进行关联分析[1]-[3],挖掘性能与告警之间的时序关联规则。基于这些关联规则,运维人员能在设备性能劣化初始阶段,根据历史规则及时预检修相关告警设备,降低专线的故障率[4]。
早期,大量学者对通信设备告警之间的关联性进行了分析研究。文献[5]利用矩阵的方式重构告警数据集,使用频繁项集挖掘规则的方法满足了工程速度需求;文献[6]-[8]则针对设备告警数据的序列特性,引入时序频繁项集挖掘的概念,进一步解释了设备告警的传导规则,能更好地预测告警的发生;文献[9]-[11]则在系统设计上提出了在线更新的增量知识库挖掘模型,加速了基于频繁项集挖掘告警数据关联规则算法的工程落地。上述研究主要关注通信设备告警数据关联问题,成功将频繁项集挖掘告警关联方法应用于通信设备的告警数据的时序与非时序规则的挖掘中。
但近年来,有学者发现性能数据与告警存在密不可分的关系,往往是性能数据的逐渐劣化,进而导致了设备告警[12] [13]的发生。因此仅仅研究告警之间的关联性,无法准确解释告警的发生原因。
基于此,本文提出了一套基于通信设备劣化性能与告警数据的关联规则生成系统。系统主要分为构建统一维度数据集、时序关联规则挖掘、知识库构建与分析三个模块。在构建统一维度数据集时,引入AE模型,分析设备性能数据的异常转移状态,实现了劣化性能数据的定义与挖掘,成功将性能数据这一连续属性值布尔化,使之与告警数据维度统一。而在时序关联规则挖掘时,引入Jaccard系数定义并压缩了强伴生劣化性能,极大加速了挖掘规则的效率。最后将离线学习与在线更新策略融合,通过离线学习劣化性能时序关联关系,在线更新知识库并匹配分析现有劣化性能传导链条,最终实现对告警的溯果追因与定位定界。
本文分为四章。第一章是本文的引言部分,主要介绍了当前通信告警关联系统的研究现状,然后讲述本文的研究内容。第二章详细讲述本文系统流程和具体的实现步骤。第三章利用运营商真实通信数据进行运行测试。第四章进行总结与展望。
2. 通信设备劣化性能与告警数据的关联分析系统
本文设计实现了一套劣化性能与告警数据的关联分析系统来挖掘海联性能与告警数据中的关联规则。下面从框架与流程以及各个系统模块下的具体功能来介绍本文所设计的系统。
2.1. 系统框架与流程
通信设备劣化性能与告警数据的关联分析系统分为:构建统一维度数据集、时序关联规则挖掘、知识库构建与分析三个模块,其系统流程框架如图1所示。
Figure 1. System flow chartam
图1. 系统流程图
本文系统第一个模块为构建统一维度数据集模块,该模块的功能为将连续性能数据布尔化,实现连续性能数据与离散告警数据的维度统一,构建可供时序挖掘算法挖掘的二值数据集。该模块分为三个步骤,第一个步骤是周期读入设备性能数据与时间区间内的告警数据,组合表单内设备与对应性能数据。第二个步骤是利用Auto-Encoder无监督模型寻找离散化连续告警数据的区间数,实现连续性能数据的智能分区与离散化。第三个步骤针对落在不同离散区间的设备性能利用马尔科夫链性质,计算前一个时刻与后一时刻的性能转移概率矩阵,而转移概率低于所设置的先验知识阈值的性能即可定义其为异常性能,从而实现设备性能组合的异常状态定义,令异常状态性能为1,非异常状态性能为0,最终实现连续性能的布尔化,将之与告警数据在时间轴上对齐,生成可供时序关联规则挖掘的时空二维数据库格式。
第二个模块为时序关联规则挖掘算法,该模块分为两步。第一步,利用Jaccard系数压缩数据集,在时间上严格覆盖率高的异常性能数据可近似认为同时发生或消失,视作时间强伴生性能,将多个高覆盖率强伴生性能压缩为一个,大大降低后续时序挖掘的数据规模,提高时序挖掘速度,同时也保留了原始数据特征。之后采用Apriori算法中对于挖掘关系型规则中频繁集的定义,加入时序特性,采用深度优先的原则,寻找性能间的时序关联关系。之后将相应设备告警在时间维度上与性能时序链条对齐,嵌入学习所得的性能关联规则链条中,实现劣化性能与告警之间的时序关联,最终输出劣化性能与告警的传导规则链条。
本文算法系统的第三个模块是知识库构建与分析,该模块的功能是将计算出的时序关联规则链条与在线输入的性能数据进行链条匹配分析。通过不断挖掘在线数据可能存在的劣化性能链条,寻找其与所存在的知识库链条的匹配关系。根据匹配关系,对在线输入数据中的劣化性能进行定位定界与因果分析,输出可能存在的通信故障,并根据时间周期,不断累积性能数据链条,当达到一定数量时,再次更新原始数据集,学习生成新的告警知识库。
2.2. 构建维度统一数据集模块
2.2.1. 周期性读入性能与告警数据
构建维度统一数据集第一步是周期性读入性能与告警数据,其中连续性能数据与告警分开,其在于告警数据的时间离散型与偶发性,其在时间规模上并不与连续性能数据能够对齐,因此采用性能时序挖掘,告警根据其所属设备以及所处时间线插入链条,实现性能与告警的正确关联。
Figure 2. Dataset structure
图2. 数据集结构
周期性读入的性能与告警数据主要来源于真实运营数据其中主要数据结构如图2所示。不同通信功能分区下的设备具有不同的性能字段与设备主键,取出部分表单数据字段,如表1所示。
Table 1. Partial form data fields
表1. 部分表单数据字段
文件 |
主键 |
性能字段1 |
性能字段2 |
性能字段3 |
Upf |
NE_ID |
maxqosflows |
meanqosflows |
n6discpk |
Smf |
rmuid |
maxqosflows |
n6incoct |
n6ogpkt |
Pm |
dnnname |
succ_cnt |
req_cnt |
successc |
其中各表原始数据集规模如图3。
Figure 3. Dataset structure
图3. 数据集结构
每张表代表动环、无线等通信不同功能分区所包含的设备与性能数据,具有空间不均匀与维度差距较大的特性。主键即为设备唯一标识符,通过将主键与性能的直接组合,能够批量化处理数据,将设备与性能的组合视作后续关联对象,组合后的设备性能字段,设备用于定界,性能用于后续时序关联分析。
同时分析原始数据可发现,不同功能区通信设备性能记录字段具有极大的差异,某些设备主要记录鉴权成功率,上下行传输流量,而某些设备主要记录连接失败率,鉴权失效率,因此采用简单的绝对劣化性能值,或是单一形式的性能上升下降都不能表示性能是否出现劣化,也为后续劣化定义的广泛性提出要求。
2.2.2. 连续性能数据AE智能分区
由于性能数据的连续性特征,无法直接采用时序关联规则挖掘算法进行分析处理,因此需要将连续性能数据合理离散化,并保留其原始的数据特征。
数据离散方式主要有等频离散、等距离离散传统离散方式,以及Chimerge2等自下而上的学习方式。由于在线学习的工程实践性需求,要求数据离散的快速高效,因此采用传统等频、等距离散对连续性能离散化,能够保证采样周期内算法运行的高效性。
Figure 4. Similar performance on the same device
图4. 同设备类似性能
Figure 5. Different types of performance on the same device
图5. 同设备不同类性能
采样部分连续性能数据我们发现,不同性能数据分布具有较大差异。一方面同一设备类似性能具有类似分布,如图4所示;另一方面,同一设备不同性能,或是不同设备不同性能之间存在极大的差异,如图5所示。故而直接采用固定值等频或等距分区会发生丢失数据特性的情况。因此本文提出采用无监督学习方式,利用Auto-Encoder模型,针对不同设备性能之间的组合,对数据实现非线性压缩提取,寻找特征表示能力强的潜变量分区数,实现智能分区。之后针对分区数,将连续性能数据均分,实现等距分区。
输入的数据为一列列设备性能组合数据,不同设备相同性能数据利用补零等方式实现对齐,从增加实现类似性能的数据集模型,提高模型学习准确性。同时针对不同长度数据,保证其输入维度一致,用于维护设备性能数据的一致性。
设备性能数据每15 min从数据库中进行采样,针对每一列长度为的数据,采用如式(1)所示的最大最小归一化方法,将不同属性区间的数据映射至[0, 1]之间,从而保证模型输入格式的统一,使得后续损失函数能够收敛。
每个训练batch设置为32,将32列长度为抽样长度L的数据作为一组数据输入自编解码模型之中。在编码阶段,为了使得变量尽可能泛化地表示原始输入数据的聚类特征,中间隐藏层采用Relu作为损失函数,而在潜变量输出层则使用tanh作为激活函数,尽可能将原数据归一化至[−1, 1]区间,尝试寻找最合适的聚类区间;而在解码阶段,采用sigmod激活函数,重新将数据归一化回[0, 1]区间,用于与最初的输入数据进行损失函数的计算,加快模型收敛。
(1)
自编解码模型选择采用MSE作为损失函数。训练中最小化MSE损失函数,使得通过降维找到的潜变量,能够完美还原原始输入数据特征。则此时潜变量的聚簇个数即为本文所需要的分区数。
(2)
因此本文的模型如图6所示,最终中间变量输出维度最大定为20,这是因为连续性能数据多为0至100的连续数据,过多的分区容易使得轻微扰动被视作异常状态,不利于算法的有效性。
Figure 6. Auto-Encoder model
图6. Auto-Encoder模型
通过最小化输入变量X与重构变量Y的损失函数,使得模型中间变量Z能够更准确地表述原始高维数据。将某一设备性能数据meanqosflow输入模型测试,输出中间变量如图7所示,可得到meanqosflow的无监督模型下可聚类数目约为5,即整体数据可按照分区数为5进行区间均分,实现等距离散化处理。
Figure 7. Intermediate variable partitioning
图7. 中间变量分区
2.2.3. 离散性能数据布尔化维度统一
本文采用马尔科夫链原理,由于性能数据在数据库中每15 min采样一次,本文认为后一采样时刻的性能数据只与当前时刻的性能数据有关,即满足公式(3)。
(3)
而根据连续性能数据前后状态的分布,可得到特定数据的状态转移概率矩阵,以某设备的maxqosflows为例,其可均分为三个状态区间。因此可计算出某个时间点的转移概率矩阵为:
(4)
而根据先验经验知识,当概率低于特定0.05时,可认为该状态发生概率极低。如式(4)所示,当maxqosflows性能数据出现从状态区间2跳转至状态区间1或是状态区间2跳转至状态区间3时,出现了性能状态的不常规变化。从数据分布角度来说,即发生了不常见的陡升,陡降等状态急变情况。因此从概率的角度可认为是该设备该性能在该时间点出现了异常。
最终,将连续性能数据转为二值型数据库,数据库横轴为异常设备性能组合字段,将绝对时间转为针对数据起点而定的相对时间轴,0即为该性能在当前时间点并未发生异常状态,1即为异常状态,从而实现基于时间对齐的布尔数据库的构建。
2.3. 时序关联规则挖掘模块
2.3.1. 强伴生异常性能融合
通过式(5)所示Jaccard相似系数融合强伴生性能的方法,能将向量空间内相似度极高的不同性能实现去冗余,将高时间覆盖率的不同性能实现融合,提高信息量。
(5)
设置阈值为80%,即要求告警覆盖时间必须大于80%才视为可融合的强伴生异常性能,将这些告警以其排序最靠前的性能代表表示,并将被融合性能列删去,降低数据量。
2.3.2. 时序关联规则挖掘
传统Apriori关联规则挖掘,主要由连接步,减枝步而通过对候选项目的连接,生成候选集,之后通过剪枝与式(6)所示支持度对候选项集进行过滤,挖掘出频繁集后,通过所设置的式(7)所示置信度,实现将频繁项集转换成特定场景下的不同强关联规则,具体的关联规则挖掘流程如图8所示。
Figure 8. Association rule mining
图8. 关联规则挖掘
(6)
而类Apriori的深度优先时序关联算法,一方面将非时序的样例根据时序特性组合,分别表示同时和先后发生两种关系,利用支持度与置信度,判断其时序关联特性;同时不再采用上述所描述的逐层遍历所有时序关联规则的特征,而是采用深度优先与头部自增长的原理,单次挖掘某个时间起点下所关联的最长时序关联规则。通过该方法,能够避免广度优先场景下类Apriori算法可能导致的某一代迭代时出现的过多组合的情况,最终使得算法时间复杂度能够满足工程应用。
(7)
利用深度优先时序挖掘算法可得到关联规则链条如图9所示。
可视化图中,前缀利用“,”连接即为同时发生的两个劣化性能,而利用“-”前缀连接的即为具有传导关系的先后发生的两个劣化性能,箭头方向即为传导方向。而传导途中某些性能被频繁关联,可一定程度上认定其具有重要性。
同时,由于告警数据天生的布尔型,即仅有发生与未发生两种情况,在计算出最终的关联规则链条后,将链条的时间轴提取为单独时间尺度,将某些设备告警根据计算的相对时间嵌入规则链条之中。告警正是由于这些设备连续性能发生劣化而导致的,其在实践中具有因果关联性,因此根据时间关系将告警嵌入,即可将异常性能与最终告警在时间上实现关联。告警部分时间链条如表2所示。
Figure 9. Association rule mining
图9. 关联规则挖掘
Table 2. Alarm timeline
表2. 告警时间链条
告警 |
告警发生时间链条 |
Ala___R_LOS___ALARM_STATUS |
[14981, 15609, 15976, 16551, 16555] |
Ala___LSR_WILL_DIE___ALARM_STATUS |
[14620, 15154, 15666, 16619] |
Ala___[衍生告警]互联网专线群障 |
[14616, 14620, 14625, 14631, 14634, 14635] |
2.4. 知识库构建与分析模块
2.4.1. 告警链条在线匹配定位定界
在线匹配阶段,需要连续读入一个时间窗口的连续性能数据,单条性能数据不具备最低告警链条生成原则。初步定义时间颗粒度为15 min采样一次,一个时间窗口为20条采样性能即300 min。此时,将20条采样数据作为小型更新数据链,输入算法,但仅计算该20条更新数据的异常状态时序关联规则链条current_path,如表3所示。
Table 3. Online association rule chain
表3. 在线关联规则链条
当前时刻劣化性能 |
关联链条 |
1017 |
[1013-3301-3211, 3214-1143-1017] |
9280 |
[7717, 7310-7432-9280] |
2833 |
[8312-9132, 7124-6603, 6321-2833] |
此时,与告警知识库进行规则链条匹配,由于实时更新的特性,current_path的最后一个关联性能必为当前采样时间点的劣化性能,其具有重要价值,因此要求知识库匹配链条中必须包含当前采样时间点的相关性能。通过与知识库链条匹配,能够实现从原有知识库中分析当前采样时间点下的异常性能的根因,即当前规则链条的起始劣化性能,并根据当前规则链条上存在的告警,分析该时间点下异常性能可能导致的设备故障。
2.4.2. 数据库周期离线学习在线更新
本模块总共分为两部分如图10所示。一为周期离线学习。周期离线学习出于性能告警数据的时序有效性,每30天需要从总数据库中读入新的数据,并根据读入数据的时效性,将原始数据库中旧数据覆盖,而此步骤为离线学习状态,其与在线更新不同,其更新存入redis缓存数据库中的原始数据,并进行离线更新计算新的告警关联知识库,此时在线更新与离线更新处于串行状态,仅在离线更新全部完成后,将旧知识库进行覆盖后,才进行在线更新,从而防止脏数据的引入导致的异常检测的准确性下降。
Figure 10. Offline learning and online update system
图10. 离线学习在线更新系统
3. 运行测试
3.1. 功能测试
1) 构建统一维度数据集模块
输入运营商2022年3月至2023年3月一整年数据。首先利用AE等距离分区得到表4所示部分性能可分区数。
Table 4. Number of partitionable regions for partial performance
表4. 部分性能的可分区数
功能分区 |
设备 |
性能 |
可分区数 |
Upf |
CCUPFm011BZX |
maxqosflows |
15 |
Smf |
HBUPF009BZX |
attinitreg |
13 |
Pm |
SYSUPFm002BHW |
meanqosflows |
18 |
分区离散后的性能数据利用转移矩阵,定义劣化性能,并最终输出布尔数据集如表5所示。
Table 5. Boolean database
表5. 布尔数据库
时间\性能 |
upf_n6ogpk |
Dnn_maxqosflows |
upf_maxqosflows |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
2 |
0 |
1 |
1 |
3 |
0 |
0 |
0 |
2) 时序关联规则挖掘模块
利用Jaccard相似系数最终实现如表6所示的强伴生性能融合效果,不同序号即为不同性能之编码。
Table 6. Partial compression alarm example
表6. 部分压缩告警
示例 |
压缩后表示量 |
总压缩对象 |
1 |
709 |
[709, 1091] |
2 |
712 |
[712, 1027, 1053, 1102] |
3 |
1051 |
[1051, 1106] |
将压缩后的强伴生性能数据利用深度优先时序挖掘算法,寻找性能之间的关联关系,并将告警根据时间链条嵌入其中,可得最终学习所得关联规则如表7所示。
Table 7. Time-series association rule chain
表7. 时序关联规则链条
示例 |
时间链条 |
1 |
[1013-3301-3211, 3214-Ala___LSR_WILL-1143-1017] |
2 |
[7717, 7310-7432-Ala___R_LOS___ALARM] |
3 |
[8312-9132, 7124-6603, Ala___R_LOS群障-6321-2833] |
3) 知识库构建与分析模块
将学习所得的关联规则最终输出成知识库。不断采样实时数据,通过在线学习方式分析当前时间段下的性能关联时间链。由于其时序特征,链条的末端即为当前时刻的劣化性能,与知识库关联链条进行匹配如图11所示。
Figure 11. Knowledge base matching
图11. 知识库匹配
链条1即为当前待匹配链条,当前时刻劣化性能为1017。链条2为知识库原有匹配链条,根据子序列匹配的方法,可推测出当前时刻性能劣化可能产生的告警为“LSR_WILL_DIE”。将编码根据映射表,映射当前性能劣化及告警,寻找到设备所属功能分区,实现劣化性能的在线匹配与告警设备的定位定界。
3.2. 性能测试
1) Auto-Encoder智能分区合理性测试
Figure 12. Elbow and ARI method for finding number of clusters
图12. 肘部法与ARI法寻K
Figure 13. Intermediate variable
图13. 中间变量聚簇数
如图12的子图a所示,利用肘部法寻找鸢尾花数据集聚类数可发现,当K为3时,出现了SEE值下降速度减缓的情况,即意味着利用肘部法得最佳聚类数为3。而利用ARI法如图12子图b所示,当K为3时,所得调整兰德指数最大,即当聚类数为3时可得到最佳聚类效果。同时,利用Auto-Enocder模型输出无监督下中间变量聚簇数如图13所示,可发现聚类数亦为3,与前两者相同,由此证实Auto-Enocder的合理性。而不同于肘部法或是ARI法由于缺乏先验经验即无标签而不得不遍历分类区间的方法,采用Auto-Enocder无监督学习法能够利用模型的学习收敛能力,学习部分性能数据中的潜变量而无需遍历,提高了运算速度,同时为无先验经验下的数据等距离散化提供了另一角度的方法。
2) Jaccard系数压缩有效性测试
针对交并比压缩后的性能数据库与未压缩性能数据库,分别采用时序关联的方式进行频繁集挖掘,分析压缩算法所节省的时间性能。最终计算出各代所用挖掘频繁项集时间如图14所示。可见较之未压缩数据集,在第二代压缩后的数据仅需要压缩前近1/3的时间便能完成挖掘,加快了算法运行速度。
Figure 14. Excavation time for each generation
图14. 每代挖掘时间
4. 结论
本文创新性地设计并实现了一个通信设备劣化性能与告警数据间关联规则自动生成系统。该系统通过分析在线性能数据,挖掘设备的劣化性能及其时序传导关系,从而推测可能导致关联的设备,帮助运维人员提前定位检修告警设备。为实现这一目标,系统采用了AE模型结合转移矩阵的方法,重新定义并分离出劣化性能数据,使得该数据与告警数据能够在维度上统一,从而为两者之间的关联性分析提供了有效且一致的数据预处理手段。同时,系统首创性地将Jaccard分数引入了时序挖掘关联规则模块,根据劣化性能间在时间轴上的共同覆盖率,压缩强伴生性能数据,降低关联对象规模,减少频繁项集组合运算量,显著提升系统的运行速度。此外,系统结合在线更新机制与离线学习策略,对关联规则知识库实施增量式更新,确保输出及时最新且可靠的关联规则,实现全天候实时监测政企路由性能变化,辅助快速定位告警和性能劣化设备。本系统通过在运营商的真实数据集及实际平台环境中的应用验证,测试结果表明,系统能够准确、快速、有效地推导出劣化性能与告警数据的传导关系,并生成关联规则,从而实现告警设备的在线预测及定位。
基金项目
本论文由国家自然科学基金(项目号:61773290)及中央高校基本科研业务费专项资金(项目号:22120230311)资助。
NOTES
*通讯作者。