一种泛在电力物联网系统数据的智能基线确定及告警方法与流程

文档序号:20437793发布日期:2020-04-17 22:11阅读:135来源:国知局

本发明属于运维系统优化领域,具体地说是一种泛在电力物联网系统数据的智能基线确定及告警方法。



背景技术:

当前,处于数据大爆炸的时代,不同的公司都有自己的运维系统,这些运维系统负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体roi。由于系统数量众多,系统间关联关系复杂,接口状态不明及集成现状不清晰,传统运维系统往往力不从心;同时,由于系统间集成关系复杂,数据再多个系统间传输,再发生传输故障时难以快速定位具体式哪个接口发生故障,这就使得故障难以定位,给运维人员排查造成负担。这些因素导致了过去互联网的运维经验无法满足现今的需求,必须针对现在企业架构设计专有方法和技术。

现有的一些告警信息优化的方法,往往利用的传统的apriori算法,不能够对日益复杂的传输链路,不断扩展的系统架构进行智能化处理,这对于大型企业显然是不适用的。



技术实现要素:

本发明为了克服现有技术存在的不足之处,提出一种泛在电力物联网系统数据的智能基线确定及告警方法,以期能快速、有效、动态地发现故障、产生告警并智能推送,从而为运维人员高效排除系统故障提供可靠的技术支持。

本发明为解决技术问题采用如下技术方案:

本发明一种泛在电力物联网系统数据的智能基线确定及告警方法,所述泛在电力物联网系统数据包含n个设备的系统资源日志,记为d={d1,d2,...,di,...,dn},其中,di表示第i个设备的系统资源日志,1≤i≤n;第i个设备的系统资源日志di由m个条目构成,记为其中,表示第i个设备的系统资源日志di的第k个条目,1≤k≤m;第i个设备的系统资源日志di的第k个条目共有8个属性,记为其特点是,所述智能基线确定及告警方法是按如下步骤进行:

步骤一、对所述系统资源日志d进行智能基线分析,得到所有设备的出口访问流量基线集合outbaseline,入口访问流量基线集合inbaseline,错误率基线集合errorrate,时间基线集合easyerror;

步骤二、对所述系统资源日志d构造孤立森林;

步骤三、根据所述步骤一得到各个基线集合和所述孤立森林,以及第i个设备当前产生的数据条目判断当前第i个设备的工作状态,并根据不同的工作状态按照推送策略,智能推送告警信息给运维人员。

本发明所述的智能基线确定及告警方法的特点是,所述步骤一是按如下步骤进行:

步骤1.1、定义第i个设备的出口访问流量基线为outbaselinei,入口访问流量基线为inbaselinei;初始化i=1;

步骤1.2、初始化k=1,outbaselinei=0,inbaselinei=0;

步骤1.3、利用式(1)得到更新的出口访问流量基线outbaselinei′后赋值给outbaselinei:

步骤1.4、利用式(2)得到更新的入口访问流量基线inbaselinei′后赋值给inbaselinei:

步骤1.5、将k+1赋值给k后,判断k>m是否成立,若成立,则执行步骤1.6;否则,返回步骤1.3顺序执行;

步骤1.6、利用式(3)得到最终的出口访问流量基线outbaseline″i后赋值给outbaselinei:

outbaseline″i=outbaselinei/m(3)

步骤1.7、利用式(4)得到最终的入口访问流量基线inbaseline″i后赋值给inbaselinei:

inbaseline″i=inbaselinei/m(4)

步骤1.8、根据第i个设备的系统资源日志di的第k个条目的时间属性将第i个设备的系统资源日志di均分成a个时间段的系统资源日志,记为其中,表示第i个设备的系统资源日志di中第h个时间段的系统资源日志,且表示第i个设备的系统资源日志di中第h个时间段的系统资源日志中第z个条目,1≤h≤a,1≤z≤s≤k;

定义第i个设备的系统资源日志di的错误率基线集合为其中,表示第i个设备的系统资源日志di中第h个时间段的错误率基线;

步骤1.9、初始化h=1;

步骤1.10、初始化z=1,定义并初始化临时变量count=0;

步骤1.11、判断是否成立,若成立,则执行步骤1.12;否则,将count+1赋值给count后,执行步骤1.13;其中,α表示所设定的流量基线的浮动阈值,且0.25≤α≤0.15;

步骤1.12、判断是否成立,若成立,则执行步骤1.13;否则,将count+1赋值给count后,执行步骤1.13;

步骤1.13、将z+1赋值给z,判断z>s是否成立,若成立,则执行步骤1.14;否则,返回执行步骤1.11;

步骤1.14、利用式(5)得到第i个设备的系统资源日志di中第h个时间段的错误率基线

步骤1.15、将h+1赋值给h,判断h>a是否成立,若成立,则执行步骤1.16;否则,返回执行步骤1.10,从而获得错误率基线集合errorratei;

步骤1.16、定义第i个设备易发生故障的时间段集合为其中由时间段集合errorratei中值处于top3的值确定,1≤h1,h2,h3≤a;

步骤1.17、将i+1赋值给i,判断i>n是否成立,若成立,则表示得到所有n个设备的基线,包括:

出口访问流量基线:outbaseline={outbaseline1,...,outbaselinei,...,outbaselinen}

入口访问流量基线:inbaseline={inbaseline1,...,inbaselinei,...,inbaselinen}

错误率基线:errorrate={errorrate1,...,errorratei,...,errorraten}

时间基线:easyerror={easyerror1,...,easyerrori,...,easyerrorn};

否则,返回执行步骤1.2。

所述步骤二是按如下步骤进行:

步骤2.1、初始化q=1;

步骤2.2、根据随机采样方法,随机在系统资源日志d中采样r个样本,记作其中,表示第w个样本,表示系统资源日志d中第j个条目;定义数组itreeq[r×k]为第q个孤立树;定义itreeq[g]为第q个孤立树的第g个元素,其中,itreeq[g]包含两个属性type和value,记为itreeq[g][type]和itreeq[g][value],1≤g≤r×k;

步骤2.3、定义当前节点所含条目集合为currentnode,当前节点的左子树条目集合为lchirld,当前节点的右子树条目集合为rchirld,初始化

步骤2.4、定义并初始化高度变量height=1;

步骤2.5、初始化lchirld={},rchirld={};

步骤2.6、随机选择{cpu,硬盘,内存}中一个属性,并赋值给变量choose;

步骤2.7、随机在当前节点所含条目集合currentnode中选择一个条目其中赋值给变量mid,将choose的值赋值给itreeq[g][type],将mid的值赋值给itreeq[g][value];

步骤2.8、初始化j=1;

步骤2.9、判断是否成立,若成立,则将添加到当前节点的左子树集合lchirld上;否则,将添加到当前节点的右子树rchirld上;

步骤2.10、将j+1赋值给j,判断j>len(currentnode)是否成立,若成立,则执行步骤2.11;否则,返回执行步骤2.9;其中,len(·)表示集合的元素个数;

步骤2.11、判断len(lchirld)=0是否成立,若成立,则执行步骤2.12;否则,将当前节点的左子树集合lchirld赋值给currentnode,2×height赋值给height,返回执行步骤2.5;

步骤2.12、判断len(rchirld)=0是否成立,若成立,则执行步骤2.13;否则,将当前节点的右子树集合rchirld赋值给currentnode,2×height+1赋值给height,返回执行步骤2.5;

步骤2.13、将q+1赋值给q,判断q>β是否成立,若成立,则表示获得孤立森林itree={itree1[r×k],itree2[r×k],...,itreeb[r×k],...,itreeβ[r×k]},1≤b≤β;否则,返回执行步骤2.2;其中,β表示所设定的孤立森林需要包含孤立树的数量,且

所述步骤三是按如下步骤进行:

步骤3.1、定义时间标志变量tag_time,入口访问流量标志变量tag_in,出口访问流量标志变量tag_out,错误率标志变量tag_error,孤立分数tag_itree,并将均初始化为0;

步骤3.2、根据式(6)确定时间标志变量tag_time:

步骤3.3、根据式(7)确定入口访问流量标志变量tag_in:

式(7)中,δ和ε表示所设定的流量判断阈值,且0.2≤ε<0.5≤δ≤0.9;

步骤3.4、根据式(8)确定出口访问流量标志变量tag_out:

步骤3.5、根据式(9)确定错误率标志变量tag_error:

步骤3.6、初始化q=1,变量v=0;

步骤3.7、初始化j=1,h=1;

步骤3.8、将itreeq[j][type]的值赋值给变量choose,判断是否成立,若成立,则执行步骤3.9;否则,执行步骤3.10;

步骤3.9、将2j赋值给j,判断itreeq[j]={}是否成立,若成立,则执行步骤3.11;否则,将h+1赋值给h,返回执行步骤3.8;

步骤3.10、将2j+1赋值给j,判断itreeq[j]={}是否成立,若成立,则执行步骤3.11;否则,将h+1赋值给h,返回执行步骤3.8;

步骤3.11、将q+1赋值给q,判断q>β是否成立,若成立,则执行步骤3.12;否则,将v+h赋值给v,返回执行步骤3.7;

步骤3.12、根据式(10)确定孤立分数tag_itree:

步骤3.13、根据式(11)得到告警得分alarmscore:

alarmscore=tag_time×φ1+tag_in×φ2+tag_out×φ3+tag_error×φ4+alarmscore×φ5(11)

式(11)中,{φ1,φ2,φ3,φ4,φ5}是一组权值集合,且每个权值的范围在0.2~0.9之间;

步骤3.14、根据式(12)得到紧急程度emergencylevel:

式(12)中,是一组阈值集合,且

步骤3.15、根据紧急程度emergencylevel,通过不同方式推送告警信息给运维人员。

与已有技术相比,本发明有益效果体现在:

1、本发明利用历史系统运行数据,智能分析当前系统运行状态,保证了运维人员能够及时正确发现和处理故障,为系统的稳定运行提供了保证。

2、本发明所提出的方法不仅仅针对特定形式的系统数据或者运维日志,只要企业运维系统包含常规的cpu,硬盘,内存,流量等资源监控,就能智能分析系统当前是否处于异常状态,并推送告警给运维人员,应用广泛,使用方便。

3、本发明所提出的方法不要获得运维系统的全部信息,企业公司可以根据自身的隐私保护政策,只需提供本发明中所述的少量相关特征就可以实现本发明所述的方法,保护了企业公司的敏感信息,安全性强。

4、本发明所提出的方法不需要再企业系统架构上部署特殊构建,只要获得系统的运行数据进行分析,就可以完成告警的智能推送。具有很低的部署成本,为各企业的应用提供了便利。

具体实施方式

本实施例中,泛在电力物联网系统数据包含n个设备的系统资源日志,记为d={d1,d2,...,di,...,dn},假设现有国家泛在电力物联网2019-1-11当天的系统数据,包含n个设备的系统资源日志,例如设备包括{交换机,应用服务器,数据库服务器,负载均衡…},其中,di表示第i个设备的系统资源日志,1≤i≤n;第i个设备的系统资源日志di由m个条目构成,记为其中,表示第i个设备的系统资源日志di的第k个条目,即每个设备的系统资源日志共有m个条目,每个条目的格式类似为:(2019-1-1110:24:03,服务器,192.134.123.1,1mb/s,2mb/s,35%,40%,50%),分别对应属性{时间,设备类型,设备ip,入口流量,出口流量,cpu占用,硬盘占用,内存占用},1≤k≤m;第i个设备的系统资源日志di的第k个条目共有8个属性,记为,

一种泛在电力物联网系统数据的智能基线确定及告警方法是按如下步骤进行:

步骤1.1、定义第i个设备的出口访问流量基线为outbaselinei,入口访问流量基线为inbaselinei;初始化i=1;

步骤1.2、初始化k=1,outbaselinei=0,inbaselinei=0;

步骤1.3、利用式(1)得到更新的出口访问流量基线outbaseline′i后赋值给outbaselinei:

步骤1.4、利用式(2)得到更新的入口访问流量基线inbaseline′i后赋值给inbaselinei:

步骤1.5、将k+1赋值给k后,判断k>m是否成立,若成立,则执行步骤1.6;否则,返回步骤1.3顺序执行;

步骤1.6、利用式(3)得到最终的出口访问流量基线outbaseline″i后赋值给outbaselinei:

outbaseline″i=outbaselinei/m(3)

步骤1.7、利用式(4)得到最终的入口访问流量基线inbaseline″i后赋值给inbaselinei:

inbaseline″i=inbaselinei/m(4)

即获得第i个设备的的出口访问流量基线,入口访问流量基线,如数据库出口访问流量基线为1mb/s,入口访问流量基线为2mb/s;

步骤1.8、根据第i个设备的系统资源日志di的第k个条目的时间属性将第i个设备的系统资源日志di均分成a个时间段的系统资源日志,记为如数据库的系统资源日志被分成6个时间段,每4个小时为一个时间段,其中,表示第i个设备的系统资源日志di中第h个时间段的系统资源日志,且表示第i个设备的系统资源日志di中第h个时间段的系统资源日志中第z个条目,1≤h≤a,1≤z≤s≤k;如对于数据库的系统资源日志均分后,12:00-16:00时间段中有100个条目;

定义第i个设备的系统资源日志di的错误率基线集合为其中,表示第i个设备的系统资源日志di中第h个时间段的错误率基线;例如,计算后数据库在12:00-16:00时间段的错误率基线可能是10%;

步骤1.9、初始化h=1;

步骤1.10、初始化z=1,定义并初始化临时变量count=0;

步骤1.11、判断是否成立,若成立,则执行步骤1.12;否则,将count+1赋值给count后,执行步骤1.13;其中,α表示用户定义的流量基线的浮动阈值,以判断出口流量是否属于正常水平,且0.25≤α≤0.15;例如,定义α为0.2,即判断第i个设备的第z个条目的出口流量是否在出口流量基线的一定范围内,范围为0.8~1.2;

步骤1.12、判断是否成立,若成立,则执行步骤1.13;否则,将count+1赋值给count后,执行步骤1.13;

步骤1.13、将z+1赋值给z,判断z>s是否成立,若成立,则执行步骤1.14;否则,返回执行步骤1.11;即第i个设备的第h个时间段的数据条目已经计算完成;

步骤1.14、利用式(5)得到第i个设备的系统资源日志di中第h个时间段的错误率基线

步骤1.15、将h+1赋值给h,判断h>a是否成立,若成立,则执行步骤1.16;否则,返回执行步骤1.10,从而获得错误率基线集合errorratei;例如,当天的6个时间段的错误率分别为10%,12%,13%,11%,12%,14%;

步骤1.16、定义第i个设备易发生故障的时间段集合为其中由时间段集合errorratei中值处于top3的值确定,1≤h1,h2,h3≤a;例如,本实施实例中,top3的值为14%,13%,12%,对应时间段分别为20:00-24:00,8:00-12:00,4:00-8:00;

步骤1.17、将i+1赋值给i,判断i>n是否成立,若成立,则表示得到所有n个设备的基线,包括:

出口访问流量基线:outbaseline={outbaseline1,...,outbaselinei,...,outbaselinen}

入口访问流量基线:inbaseline={inbaseline1,...,inbaselinei,...,inbaselinen}

错误率基线:errorrate={errorrate1,...,errorratei,...,errorraten}

时间基线:easyerror={easyerror1,...,easyerrori,...,easyerrorn};

否则,返回执行步骤1.2。

例如,本实施实例中,出口访问流量基线outbaseline={1mb/s,2mb/s,…},入口访问流量基线inbaseline={2mb/s,0.5mb/s,…},错误率基线={5%,10%,…},时间基线={(20:00-24:00,8:00-12:00,0:00-4:00),…};

步骤2.1、初始化q=1;

步骤2.2、根据随机采样方法,随机在系统资源日志d中采样r个样本,记作例如,采样3个样本,即{数据库,应用服务器,交换机}的系统资源日志,其中,表示第w个样本,表示系统资源日志d中第j个条目;定义数组itreeq[r×k]为第q个孤立树;定义itreeq[g]为第q个孤立树的第g个元素,其中,itreeq[g]包含两个属性type和value,记为itreeq[g][type]和itreeq[g][value],1≤g≤r×k;

步骤2.3、定义当前节点所含条目集合为currentnode,当前节点的左子树条目集合为lchirld,当前节点的右子树条目集合为rchirld,初始化即将{数据库,应用服务器,交换机}的系统资源日志的所有条目作为当前节点的条目集合;

步骤2.4、定义并初始化高度变量height=1;

步骤2.5、初始化lchirld={},rchirld={};

步骤2.6、随机选择{cpu,硬盘,内存}中一个属性,并赋值给变量choose;例如,选择了cpu;

步骤2.7、随机在当前节点所含条目集合currentnode中选择一个条目其中赋值给变量mid,将choose的值赋值给itreeq[height][type],将mid的值赋值给itreeq[height][value];例如,选择了条目(2019-1-1110:24:03,服务器,192.134.123.1,1mb/s,2mb/s,35%,40%,50%),此时mid值为35%,所以itree1[1][type]=cpu,itree1[1][value]=35%;

步骤2.8、初始化j=1;

步骤2.9、判断是否成立,若成立,则将添加到当前节点的左子树集合lchirld上;否则,将添加到当前节点的右子树rchirld上;即将cpu值小于35%的条目添加到当前节点左子树上,其余的添加到当前节点右子树上;

步骤2.10、将j+1赋值给j,判断j>len(currentnode)是否成立,若成立,则执行步骤2.11;否则,返回执行步骤2.9;其中,len(·)表示集合的元素个数;即当前节点的条目集合已经全部分配完成;

步骤2.11、判断len(lchirld)=0是否成立,若成立,则执行步骤2.12;否则,将当前节点的左子树集合lchirld赋值给currentnode,2×height赋值给height,返回执行步骤2.5;即迭代构造左子树;

步骤2.12、判断len(rchirld)=0是否成立,若成立,则执行步骤2.13;否则,将当前节点的右子树集合rchirld赋值给currentnode,2×height+1赋值给height,返回执行步骤2.5;即迭代构造右子树;

步骤2.13、将q+1赋值给q,判断q>β是否成立,若成立,则表示获得孤立森林itree={itree1[r×k],itree2[r×k],...,itreeb[r×k],...,itreeβ[r×k]},1≤b≤β;否则,返回执行步骤2.2;其中,β表示用户定义的孤立森林需要包含孤立树的数量,且β是用户需要构造树的数量,孤立森林中包含的树越多,效果理论上越好,但是会消耗更长的时间,所以需根据实际来确定,本实例中,β为3;

步骤3.1、定义时间标志变量tag_time,入口访问流量标志变量tag_in,出口访问流量标志变量tag_out,错误率标志变量tag_error,孤立分数tag_itree,并将均初始化为0;不同的变量作为最后告警分数的一项,确定最终的告警等级;

步骤3.2、根据式(6)确定时间标志变量tag_time:

例如,当前数据条目为(2019-1-1221:24:03,服务器,192.134.123.1,1mb/s,2mb/s,35%,40%,50%),因为时间点21:24:03属于{(20:00-24:00,8:00-12:00,0:00-4:00),所以将时间标志变量置1;

步骤3.3、根据式(7)确定入口访问流量标志变量tag_in:

式(7)中,δ和ε表示用户定义的流量判断阈值,以确定具体的赋值规则,其中,0.2≤ε<0.5≤δ≤0.9;

在本实例中,δ=0.5,ε=0.2;

步骤3.4、根据式(8)确定出口访问流量标志变量tag_out:

步骤3.5、根据式(9)确定错误率标志变量tag_error:

即判断当前时间点是所处时间段的错误率,例如处于时间点21:24:03的条目,tag_error=14%;

步骤3.6、初始化q=1,变量v=0;

步骤3.7、初始化j=1,h=1;

步骤3.8、将itreeq[j][type]的值赋值给变量choose,判断是否成立,若成立,则执行步骤3.9;否则,执行步骤3.10;

步骤3.9、将2j赋值给j,判断itreeq[j]={}是否成立,若成立,则执行步骤3.11;否则,将h+1赋值给h,返回执行步骤3.8;

步骤3.10、将2j+1赋值给j,判断itreeq[j]={}是否成立,若成立,则执行步骤3.11;否则,将h+1赋值给h,返回执行步骤3.8;

步骤3.11、将q+1赋值给q,判断q>β是否成立,若成立,则执行步骤3.12;否则,将v+h赋值给v,返回执行步骤3.7;即得到当前数据条目分配到各个树的总的高度v,高度越高说明是异常点的概率越小;

步骤3.12、根据式(10)确定孤立分数tag_itree:

步骤3.13、根据式(11)得到告警得分alarmscore:

alarmscore=tag_time×φ1+tag_in×φ2+tag_out×φ3+tag_error×φ4+alarmscore×φ5(11)

式(11)中,{φ1,φ2,φ3,φ4,φ5}是根据实际情况定义的一组权值,其中每个权值的范围在0.2~0.9之间。{φ1,φ2,φ3,φ4,φ5}的值决定了上述各基线所得分数所占的权重,通常来说,认为tag_in和tag_out的权重最大,alarmscore其次,本实例{φ1,φ2,φ3,φ4,φ5}={0.2,0.8,0.8,0.3,0.4};

步骤3.14、根据式(12)得到紧急程度emergencylevel:

式(12)中,是根据实际情况定义的一组阈值,其中,本实例中,所以当前条目(2019-1-1221:24:03,服务器,192.134.123.1,1mb/s,2mb/s,35%,40%,50%)的emergencylevel为严重;

步骤3.15、根据紧急程度emergencylevel,通过不同方式推送告警信息给运维人员。

不同紧急程度可以通过邮件,电话,短信等方式推送给运维人员,对于紧急程度不足以达到轻微的数据条目,应该保留日志,以供后续查询。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1