本发明属于运维系统优化领域,具体地说是一种泛在电力物联网系统数据的智能基线确定及告警方法。
背景技术:
当前,处于数据大爆炸的时代,不同的公司都有自己的运维系统,这些运维系统负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体roi。由于系统数量众多,系统间关联关系复杂,接口状态不明及集成现状不清晰,传统运维系统往往力不从心;同时,由于系统间集成关系复杂,数据再多个系统间传输,再发生传输故障时难以快速定位具体式哪个接口发生故障,这就使得故障难以定位,给运维人员排查造成负担。这些因素导致了过去互联网的运维经验无法满足现今的需求,必须针对现在企业架构设计专有方法和技术。
现有的一些告警信息优化的方法,往往利用的传统的apriori算法,不能够对日益复杂的传输链路,不断扩展的系统架构进行智能化处理,这对于大型企业显然是不适用的。
技术实现要素:
本发明为了克服现有技术存在的不足之处,提出一种泛在电力物联网系统数据的智能基线确定及告警方法,以期能快速、有效、动态地发现故障、产生告警并智能推送,从而为运维人员高效排除系统故障提供可靠的技术支持。
本发明为解决技术问题采用如下技术方案:
本发明一种泛在电力物联网系统数据的智能基线确定及告警方法,所述泛在电力物联网系统数据包含n个设备的系统资源日志,记为d={d1,d2,...,di,...,dn},其中,di表示第i个设备的系统资源日志,1≤i≤n;第i个设备的系统资源日志di由m个条目构成,记为
步骤一、对所述系统资源日志d进行智能基线分析,得到所有设备的出口访问流量基线集合outbaseline,入口访问流量基线集合inbaseline,错误率基线集合errorrate,时间基线集合easyerror;
步骤二、对所述系统资源日志d构造孤立森林;
步骤三、根据所述步骤一得到各个基线集合和所述孤立森林,以及第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的错误率基线集合为
步骤1.9、初始化h=1;
步骤1.10、初始化z=1,定义并初始化临时变量count=0;
步骤1.11、判断
步骤1.12、判断
步骤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个设备易发生故障的时间段集合为
步骤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个样本,记作
步骤2.3、定义当前节点所含条目集合为currentnode,当前节点的左子树条目集合为lchirld,当前节点的右子树条目集合为rchirld,初始化
步骤2.4、定义并初始化高度变量height=1;
步骤2.5、初始化lchirld={},rchirld={};
步骤2.6、随机选择{cpu,硬盘,内存}中一个属性,并赋值给变量choose;
步骤2.7、随机在当前节点所含条目集合currentnode中选择一个条目
步骤2.8、初始化j=1;
步骤2.9、判断
步骤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、将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个条目构成,记为
一种泛在电力物联网系统数据的智能基线确定及告警方法是按如下步骤进行:
步骤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的错误率基线集合为
步骤1.9、初始化h=1;
步骤1.10、初始化z=1,定义并初始化临时变量count=0;
步骤1.11、判断
步骤1.12、判断
步骤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个设备易发生故障的时间段集合为
步骤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个样本,记作
步骤2.3、定义当前节点所含条目集合为currentnode,当前节点的左子树条目集合为lchirld,当前节点的右子树条目集合为rchirld,初始化
步骤2.4、定义并初始化高度变量height=1;
步骤2.5、初始化lchirld={},rchirld={};
步骤2.6、随机选择{cpu,硬盘,内存}中一个属性,并赋值给变量choose;例如,选择了cpu;
步骤2.7、随机在当前节点所含条目集合currentnode中选择一个条目
步骤2.8、初始化j=1;
步骤2.9、判断
步骤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:
例如,当前数据条目为(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、将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)中,
步骤3.15、根据紧急程度emergencylevel,通过不同方式推送告警信息给运维人员。
不同紧急程度可以通过邮件,电话,短信等方式推送给运维人员,对于紧急程度不足以达到轻微的数据条目,应该保留日志,以供后续查询。