本发明涉及计算机云环境运维监控技术领域,尤其涉及定位业务系统故障根因的方法和系统。
背景技术:
当下云技术不断进步,私有云、公有云不断涌现,运维监控技术也在不断发展进步,软硬件监控技术也比较丰富,包括云环境的软硬件指标监控和云环境中运行的业务监控。云环境下软硬件指标监控例如:通过prometheus监控网元的cpu使用率、ram使用率、diskio使用率、netio使用率、redis连接数等网元指标;云环境中运行的业务监控例如:通过业务调用链数据分析标注出故障网元范围等。
但是云环境的软硬件指标监控和云环境中运行的业务监控相结合的技术比较匮乏,当业务系统出现请求响应耗时增高、请求成功率降低、tpm突然降低/飙升等故障时,无法将两种监控技术关联分析以快速定位业务系统中的故障根因,例如,生产环境服务接口a请求成功率低告警,若利用传统方式排查根因,则需要开发人员手动去查网元指标日志和调用链日志,进行上下游排查,由于涉及多重指标,往往需要多领域人员协同,才能找出导致业务故障的根本原因,耗时长,耗费人力。
技术实现要素:
本发明的目的在于提供定位业务系统故障根因的方法和系统,通过结合调用链日志和网元指标数据,快速定位业务系统的故障根因。
为了实现上述目的,本发明提供如下技术方案:
一种定位业务系统故障根因的方法,包括:
计算引擎获取调用链消息,将所述调用链消息按照采样比例进行采样,分组组装得到调用链,获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口;
计算引擎获取网元指标消息,计算网元指标的第一变动幅度,并依据第一变动幅度阈值筛选出故障网元指标;
计算引擎将所述故障服务接口和故障网元指标根据时间进行关联,并发布故障预警,所述故障预警包括故障服务接口,以及引起所述故障服务接口发生故障的故障网元指标。
优选地,计算引擎获取调用链消息和网元指标消息的方法包括:
网元周期性地生成网元指标消息并存储到指标日志文件中;
网元部署的服务接口在被调用时生成调用链消息,并存储到调用链单元日志中;
网元利用日志收集模块将所述指标日志文件中新增的网元指标消息和所述调用链单元日志中新增的调用链消息推送到分布式发布订阅消息系统;
计算引擎从所述分布式发布订阅消息系统中读取调用链消息和网元指标消息。
较佳地,计算引擎筛选出故障服务接口的方法包括:
获取并解析调用链消息得到调用链消息对应的调用链id、服务接口名称标识及事件时间,同时获取调用链入口消息;
配置调用链消息的采样比例,依据采样比例获取调用链入口消息样本;
依据调用链id和事件时间筛选出与调用链入口消息样本属于相同组别的调用链消息,将同一组别的所有调用链消息进行组装得到调用链信息;
获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口。
具体地,解析调用链消息并获取调用链入口消息的方法包括:
设定调用链消息的过期时间,按照过期时间筛选并解析未过期的调用链消息,得到调用链消息的调用链id、服务接口名称标识及事件时间;
根据调用链id和服务接口名称标识筛选出调用链消息中的调用链入口消息。
进一步地,依据耗时对照表筛选出故障服务接口的方法包括:
预先计算服务接口对应的平均耗时,并将服务接口的服务接口名称标识和平均耗时一一对应地存储到耗时对照表中;
获取调用链中实际耗时大于耗时对照表中平均耗时的服务接口,存储为备选故障服务接口;
依据备选故障服务接口的实际耗时和对应的平均耗时,计算备选故障服务接口的故障可信度,筛选出故障可信度大于预设可信度阈值的备选故障服务接口,并存储为故障服务接口。
优选地,计算引擎筛选出故障网元指标的方法包括:
预先计算网元指标的样本均值和稳定度,并将网元指标的指标名称标识、稳定度和样本均值对应地存储到稳定度对照表中;
获取并解析网元指标消息,得到网元指标的指标名称标识和当前值;
依据所述指标名称标识从稳定度对照表中查找对应的样本均值和稳定度;
依据网元指标的当前值及对应的样本均值和稳定度,计算网元指标的第一变动幅度,将第一变动幅度超过预设的第一变动幅度阈值的网元指标存储为故障网元指标。
具体地,预先计算网元指标的均值和稳定度的方法包括:
采集x个网元指标样本;
计算网元指标样本的均值,以及每一个网元指标样本的第二变动幅度,统计第二变动幅度超过预设的第二变动幅度阈值的异常网元指标样本数量n;
计算网元指标的稳定度m,其中,
较佳地,计算引擎筛选出故障网元指标的方法还包括:
获取网元指标当前值之前预设数量的指标值作为网元指标的近期值;
基于网元指标的近期值计算近期均值;
依据网元指标的近期均值和当前值计算网元指标的近期变动幅度;
依据网元指标的样本均值和当前值计算网元指标的样本变动幅度;
基于网元指标的近期变动幅度和样本变动幅度进行加权计算后,结合网元指标的稳定度得到网元指标的第一变动幅度。
较好地,网元指标的指标名称标识和指标值依据时间存储到滑动矩阵中,其中,所述滑动矩阵的每一列对应一个分钟跨度,每一行对应于一个指标名称标识的指标值;或者所述滑动矩阵的每一行对应一个分钟跨度,每一列对应于一个指标名称标识的指标值。
一种定位业务系统故障根因的系统,包括计算引擎、分布式发布订阅消息系统和网元,所述计算引擎包括消息读取模块、调用链处理模块、网元指标处理模块及故障预警模块,其中,
所述分布式发布订阅消息系统用于存储网元指标和网元部署的服务接口在被调用时生成的调用链消息;
所述消息读取模块用于从分布式发布订阅消息系统读取调用链消息和网元指标消息;
所述调用链处理模块用于将所述调用链消息按照采样比例进行采样,分组组装得到调用链,获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口;
所述网元指标处理模块用于计算网元指标的第一变动幅度,并依据第一变动幅度阈值筛选出故障网元指标;
所述故障预警模块用于将所述故障服务接口和故障网元指标根据时间进行关联,并发布故障预警,所述故障预警包括故障服务接口,以及引起所述故障服务接口发生故障的故障网元指标。
与现有技术相比,本发明提供的定位业务系统故障根因的方法和系统具有以下有益效果:
本发明提供的定位业务系统故障根因的方法,计算引擎获取调用链消息和网元指标消息后分别进行故障分析,筛选出故障服务接口和故障网元指标,再通过将故障服务接口和故障网元指标根据时间进行关联,以识别并预警业务故障的根因,即故障服务接口以及引起该故障服务接口发生故障的故障网元指标,降低了运维人员和系统负责人排查故障的复杂度,节约了排查故障的时间和人力成本。
本发明提供的定位业务系统故障根因的系统,采用上述定位业务系统故障根因的方法,通过结合调用链日志和网元指标数据,快速定位业务系统的故障根因。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例中定位业务系统故障根因的方法流程示意图;
图2为本发明实施例中计算引擎中任务逻辑示意图;
图3为本发明实施例中定位业务系统故障根因的系统架构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。
实施例一
请参阅图1,本发明实施例提供一种定位业务系统故障根因的方法,包括:
计算引擎获取调用链消息,将调用链消息按照采样比例进行采样,分组组装得到调用链,获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口;
计算引擎获取网元指标消息,计算网元指标的第一变动幅度,并依据第一变动幅度阈值筛选出故障网元指标;
计算引擎将故障服务接口和故障网元指标根据时间进行关联,并发布故障预警,故障预警包括故障服务接口,以及引起故障服务接口发生故障的故障网元指标。
本发明实施例提供的定位业务系统故障根因的方法,计算引擎获取调用链消息和网元指标消息后分别进行故障分析,筛选出故障服务接口和故障网元指标,再通过将故障服务接口和故障网元指标根据时间进行关联,以识别并预警业务故障的根因,即故障服务接口以及引起该故障服务接口发生故障的故障网元指标,降低了运维人员和系统负责人排查故障的复杂度,节约了排查故障的时间和人力成本。
请参阅图2或图3,本发明实施例提供一种定位业务系统故障根因的方法中,计算引擎获取调用链消息和网元指标消息的方法包括:
网元周期性地生成网元指标消息并存储到指标日志文件中;
网元部署的服务接口在被调用时生成调用链消息,并存储到调用链单元日志中;
网元利用日志收集模块将指标日志文件中新增的网元指标消息和调用链单元日志中新增的调用链消息推送到分布式发布订阅消息系统;
计算引擎从分布式发布订阅消息系统中读取调用链消息和网元指标消息。
本领域技术人员应当知晓的是,网元指云环境中基本的服务单元,拥有全局唯一标识名称、ip等信息,例如:标识名称为docker_001的docker容器;网元指标是网元中监控的特定指标,拥有指标名称、某时间点的指标值,例如:ram使用率、cpu使用率、redis连接数等;调用链是一次业务请求所经过的调用系统、网元、关键埋点方法,涉及主要维度包括:网元唯一标识、服务接口名称、调用链id、服务接口id(调用链内唯一)、调用方服务id、开始时间、服务接口执行耗时、成功失败标识等。
具体实施中,网元定期(1秒、30秒、60秒、300秒等,时间周期可以自定义)生成监控的网元指标消息存储到指标日志文件中,网元中集成的日志收集模块(例如flume)可以监视指标日志文件变化,把指标日志中新增的网元指标消息推送到kafka等分布式发布订阅消息系统中,其中,指标日志文件滚动生成,历史的指标日志文件定期清除;网元部署了服务接口,服务接口在业务调用时生成生成调用链消息,并存储到调用链单元日志中,调用链单元日志同样被日志收集模块推送到分布式发布订阅消息系统中,然后计算引擎从分布式发布订阅消息系统中读取调用链消息和网元指标消息。
请参阅图2,本发明实施例提供一种定位业务系统故障根因的方法中,计算引擎筛选出故障服务接口的方法包括:
获取并解析调用链消息得到调用链消息对应的调用链id、服务接口名称标识及事件时间,同时获取调用链入口消息;
配置调用链消息的采样比例,依据采样比例获取调用链入口消息样本;
依据调用链id和事件时间筛选出与调用链入口消息样本属于相同组别的调用链消息,将同一组别的所有调用链消息进行组装得到调用链信息;
获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口。
其中,解析调用链消息并获取调用链入口消息的方法具体包括:
设定调用链消息的过期时间,按照过期时间筛选并解析未过期的调用链消息,得到调用链消息的调用链id、服务接口名称标识及事件时间;
根据调用链id和服务接口名称标识筛选出调用链消息中的调用链入口消息。
具体实施中,计算引擎接收到调用链消息后,首先根据调用链消息中的事件时间判断该消息是否已经过期,如果该消息超过设定的过期时间则直接丢弃,如果该消息未超过设定的过期时间则解析出调用链id和服务接口名称标识,然后根据调用链id和服务接口名称标识筛选出调用链消息中的调用链入口消息,调用链入口消息的数据格式可以为(服务接口名称标识,调用链id,事件时间),实时计算调用链入口消息的服务接口名称标识的tps(transactionspersecond每秒传输的事物处理个数,即服务器每秒处理的事务数),然后配置调用链消息的采样比例,依据采样比例获取调用链入口消息样本。
采样过程中,先加载配置tps对应的采样梯度,每级采样梯度对应不同的tps范围和采样比例映射,不同采样比例再映射到轮转范围,比如说,采样比例是10%,轮转范围为10,第1条数据过来时,纳入采样,后面9条则不纳入采样,第11条数据就进入后续轮回,相当于后续轮回第1条数据,被纳入采样。每次采样后根据tps值实时获取采样梯度,并依据采样梯度得出对应的采用比例和轮回,纳入采样和未纳入采样的调用链入口消息都会保留,但是会标明该调用链入口消息是否为样本,标记后的调用链入口消息的数据格式为(服务接口名称标识,调用链id,事件时间,是否样本),并且暂存到采样对照表,该采样对照表中的调用链入口消息可以设置60秒过期。
然后基于采样对照表对所有的未过期的调用链消息进行采样,即接收到调用链消息后依据调用链id和事件时间查看采样对照表,如果采样对照表中该调用链消息对应的调用链入口消息被标记为样本,则将该调用链消息与对应的调用链入口消息作为同一组别的数据对应存储;如果采样对照表中该调用链消息对应的调用链入口消息被标记为非样本,则将该调用链消息舍弃;如果采样对照表没有与该调用链消息相对应的调用链入口消息,则将该调用链消息缓存60秒,并在60秒内检查采样对照表更新后是否有对应的调用链入口消息,60秒后如果仍然没有查找到对应的调用链入口消息,则将该调用链消息舍弃。这种采样方式,设置多级采样梯度,可以根据数据量调整采样比例,有利于灵活应对不同的数据量,不会因消息量激增而导致系统不稳定;还可以按照业务线(调用链路)tps量,做均衡采样,保证每个业务线都可以采样到数据。
实际采样时,被采样的调用链消息可以根据“分钟数”(是根据事件时间转化而来的分钟绝对值,从1970年1月1日0时0分起始)和“调用链id”分组缓存,每条调用链消息到达时都会判断一次当前调用链的所有消息是否全部到达,如果全部到达,则开始组装调用链,同时获取调用链中每个节点的实际耗时,即调用链中每个服务接口的耗时,最后依据耗时对照表筛选出故障服务接口。其中,依据耗时对照表筛选出故障服务接口的方法包括:
预先计算服务接口对应的平均耗时,并将服务接口的服务接口名称标识和平均耗时一一对应地存储到耗时对照表中;
获取调用链中实际耗时大于耗时对照表中平均耗时的服务接口,存储为备选故障服务接口;
依据备选故障服务接口的实际耗时和对应的平均耗时,计算备选故障服务接口的故障可信度,筛选出故障可信度大于预设可信度阈值的备选故障服务接口,并存储为故障服务接口。
具体实施中,该耗时对照表可以是每次启动定位故障根因的系统后生成,也可以是直接导入本地已有的耗时对照表。例如,启动定位故障根因的系统后,接收到调用链信息后,计算服务接口对应的平均耗时并实时更新耗时对照表,当对照表中某个服务接口采集到的耗时数据达到可信样本量时,在耗时对照表中标记该服务接口可以用于故障判断,更新完善的耗时对照表可以存储到本地,再次启动定位故障根因的系统时可以直接导入使用。
针对组装完成的调用链,根据耗时对照表分析调用链中发生故障的节点(服务接口),即调用链中实际耗时大于耗时对照表中平均耗时的服务接口,存储为备选故障服务接口,同时依据备选故障服务接口的实际耗时和对应的平均耗时,计算备选故障服务接口的故障可信度,筛选出故障可信度大于预设可信度阈值的备选故障服务接口,并存储为故障服务接口,该故障服务接口可以与其所在的整个调用链一起对应储存,以便于对上下游网元指标进行排查。其中,故障可信度=实际耗时/近期耗时均值,近期耗时均值可以取近期360个等特定样本量的耗时样本计算得到,故障可信度值越大可信度越高,可信度阈值可以设定为1.8,根据实际业务可以对可信度阈值进行调整。
请参阅图2,本发明实施例提供一种定位业务系统故障根因的方法中,由于网元指标采集是固定频次的,不会出现突然上升,所以不做抽样,直接分析全量数据,计算引擎筛选出故障网元指标的方法包括:
预先计算网元指标的样本均值和稳定度,并将网元指标的指标名称标识、稳定度和样本均值对应地存储到稳定度对照表中;
获取并解析网元指标消息,得到网元指标的指标名称标识和当前值;
依据指标名称标识从稳定度对照表中查找对应的样本均值和稳定度;
依据网元指标的当前值及对应的样本均值和稳定度,计算网元指标的第一变动幅度,将第一变动幅度超过预设的第一变动幅度阈值的网元指标存储为故障网元指标。
具体实施中,网元指标的指标名称标识和指标值依据时间存储到滑动矩阵中,其中,滑动矩阵的每一列对应一个分钟跨度,每一行对应于一个指标名称标识的指标值;或者滑动矩阵的每一行对应一个分钟跨度,每一列对应于一个指标名称标识的指标值。新的网元指标信息到达后,被加入滑动矩阵中,滑动矩阵宽度默认128,每一行对应存储网元的指标名称标识-网元指标值组合,每一列默认对应1个分钟跨度,即一行数据实际存储了某个网元指标名称标识在128分钟内的指标值,其中,分钟跨度可以根据不同采样频率调整,以生成不同的滑动矩阵,把相同采样频率的网元指标放在同一滑动矩阵中,滑动矩阵定期清除过期数据并初始化新数据,若滑动矩阵宽度128,每一列默认对应1个分钟跨度,则数据的有效时间则为128min。
具体地,计算引擎筛选出故障网元指标的方法中,预先计算网元指标的均值和稳定度的方法包括:
采集x个网元指标样本;
计算网元指标样本的均值,以及每一个网元指标样本的第二变动幅度,统计第二变动幅度超过预设的第二变动幅度阈值的异常网元指标样本数量n;
计算网元指标的稳定度m,其中,
例如网元指标s有360个连续样本指标值si,其中,1≤i≤360,样本指标值的均值为v,设第二变动幅度ai=|si-v|/v,设第二变动幅度阈值为0.25,则当ai>0.25视为网元指标s发生了实质变动,假使发生实质变动的次数为n,那么网元指标s的稳定度m=(360-n)/360。
除此之外,计算引擎筛选出故障网元指标的方法还包括:
获取网元指标当前值之前预设数量的指标值作为网元指标的近期值;
基于网元指标的近期值计算近期均值;
依据网元指标的近期均值和当前值计算网元指标的近期变动幅度;
依据网元指标的样本均值和当前值计算网元指标的样本变动幅度;
基于网元指标的近期变动幅度和样本变动幅度进行加权计算后,结合网元指标的稳定度得到网元指标的第一变动幅度。
例如,设网元指标s的第一变动幅度为q,当前值为sj,样本均值为v,近期均值为k,稳定度为m,则
具体实施中,可取5至10个近期样本计算近期样本均值k,0.4和0.6分别为第一变动幅度计算过程中近期变动幅度和样本变动幅度的权重,可以根据具体情况进行调整,最后根据第一变动幅度是否超过第一变动幅度阈值判定该网元指标是否为故障网元指标,第一变动幅度阈值可以设定为0.45,该值也可以根据具体情况进行调整。
最后,计算引擎将故障服务接口和故障网元指标根据时间进行关联,并发布故障预警,故障预警包括故障服务接口,以及引起故障服务接口发生故障的故障网元指标。故障服务接口和故障网元指标可以存储到redis等缓存介质中,例如redis中存储15分钟内发生的故障服务接口和故障网元指标,以供故障关联分析调用。
具体实施中,根据发生故障的“分钟数”以及网元相关性将调用链的服务接口故障和网元指标故障做关联,并做出引起服务接口故障的网元指标故障的可能性排名,当分钟内某一服务接口故障的发生数量超过阈值,则发布故障预警。如果后续时间该服务接口故障发生数量如果增多则确定该服务接口故障持续,则发布故障警告,同时将确定的服务接口故障及引起该故障的网元指标故障对应存储起来,供后分析;如果后续时间该服务接口故障发生数量没有变化或下一分钟消失,则解除故障预警。故障预警例如:
1.故障发布初期公告内容
故障[预警],编号aaaa-bbbb-cccc-nnnnnnn,网元a上服务接口i发生故障,服务耗时超过标准值80%,标准值为xa,当前耗时均值xa,可能原因排名:1.网元b上指标i异常;2.网元a上指标j异常。
2.1分钟后故障持续
故障[警告],编号aaaa-bbbb-cccc-nnnnnnn,网元a上服务接口i发生故障,服务耗时超过标准值80%,标准值为xa,当前耗时均值xa,可能原因排名,1.网元b上指标i异常;2.网元a上指标j异常。
3.1分钟后故障消失
故障[解除],编号aaaa-bbbb-cccc-nnnnnnn,网元a上服务接口i发生故障,服务耗时超过标准值80%,标准值为xa,当前耗时均值xa,可能原因排名,1.网元b上指标i异常;2.网元a上指标j异常。
此外,网元部署的服务接口在被调用时还会同时生成异常堆栈消息,并存储到异常堆栈日志中,该异常堆栈日志也通过日志收集模块推送到kafka等分布式发布订阅消息系统中,计算引擎从分布式发布订阅消息系统中获取异常堆栈消息,解析得到调用链id、服务id及异常堆栈数据并对应存储到分布式文档数据库中,例如存储到es中。用户根据故障预警查看故障时,会根据日期信息到es对应索引,通过调用链id、服务id等查询异常堆栈并展示,异常堆栈中可以定位出发生异常具体类以及代码行。
本实施例提供的一种定位业务系统故障根因的方法,对于新增业务场景可以自适应,无需人力干预,可以自学习完成后得到耗时对照表等参考值,进而作出故障定位。并且,定位业务系统故障根因的过程中,故障敏感度可调,可以提早预警,也可以降低故障敏感度,以增强预警准确性,还有效降低了运维人员和系统负责人排查故障的复杂度,节约了时间成本和人力成本。
实施例二
请参阅图3,本发明实施例提供一种定位业务系统故障根因的系统,该系统包括计算引擎、分布式发布订阅消息系统和网元,计算引擎采用flink实现,包括消息读取模块、调用链处理模块、网元指标处理模块及故障预警模块。其中,分布式发布订阅消息系统采用kafka实现,用于存储网元指标和网元部署的服务接口在被调用时生成的调用链消息;消息读取模块用于从分布式发布订阅消息系统读取调用链消息和网元指标消息;调用链处理模块用于将调用链消息按照采样比例进行采样,分组组装得到调用链,获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口;网元指标处理模块用于计算网元指标的第一变动幅度,并依据第一变动幅度阈值筛选出故障网元指标;故障预警模块用于将故障服务接口和故障网元指标根据时间进行关联,并发布故障预警,故障预警包括故障服务接口,以及引起故障服务接口发生故障的故障网元指标。
本发明提供的定位业务系统故障根因的系统,采用上述实施例一中的定位业务系统故障根因的方法,通过结合调用链日志和网元指标数据,快速定位业务系统的故障根因,降低了维护成本。与现有技术相比,本发明实施例提供的定位业务系统故障根因的系统的有益效果与上述实施例一提供的定位业务系统故障根因的方法的有益效果相同,且该系统中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。
在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
1.一种定位业务系统故障根因的方法,其特征在于,包括:
计算引擎获取调用链消息,将所述调用链消息按照采样比例进行采样,分组组装得到调用链,获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口;
计算引擎获取网元指标消息,计算网元指标的第一变动幅度,并依据第一变动幅度阈值筛选出故障网元指标;
计算引擎将所述故障服务接口和故障网元指标根据时间进行关联,并发布故障预警,所述故障预警包括故障服务接口,以及引起所述故障服务接口发生故障的故障网元指标。
2.根据权利要求1所述的定位业务系统故障根因的方法,其特征在于,计算引擎获取调用链消息和网元指标消息的方法包括:
网元周期性地生成网元指标消息并存储到指标日志文件中;
网元部署的服务接口在被调用时生成调用链消息,并存储到调用链单元日志中;
网元利用日志收集模块将所述指标日志文件中新增的网元指标消息和所述调用链单元日志中新增的调用链消息推送到分布式发布订阅消息系统;
计算引擎从所述分布式发布订阅消息系统中读取调用链消息和网元指标消息。
3.根据权利要求1所述的定位业务系统故障根因的方法,其特征在于,计算引擎筛选出故障服务接口的方法包括:
获取并解析调用链消息得到调用链消息对应的调用链id、服务接口名称标识及事件时间,同时获取调用链入口消息;
配置调用链消息的采样比例,依据采样比例获取调用链入口消息样本;
依据调用链id和事件时间筛选出与调用链入口消息样本属于相同组别的调用链消息,将同一组别的所有调用链消息进行组装得到调用链信息;
获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口。
4.根据权利要求3所述的定位业务系统故障根因的方法,其特征在于,解析调用链消息并获取调用链入口消息的方法包括:
设定调用链消息的过期时间,按照过期时间筛选并解析未过期的调用链消息,得到调用链消息的调用链id、服务接口名称标识及事件时间;
根据调用链id和服务接口名称标识筛选出调用链消息中的调用链入口消息。
5.根据权利要求3所述的定位业务系统故障根因的方法,其特征在于,依据耗时对照表筛选出故障服务接口的方法包括:
预先计算服务接口对应的平均耗时,并将服务接口的服务接口名称标识和平均耗时一一对应地存储到耗时对照表中;
获取调用链中实际耗时大于耗时对照表中平均耗时的服务接口,存储为备选故障服务接口;
依据备选故障服务接口的实际耗时和对应的平均耗时,计算备选故障服务接口的故障可信度,筛选出故障可信度大于预设可信度阈值的备选故障服务接口,并存储为故障服务接口。
6.根据权利要求1所述的定位业务系统故障根因的方法,其特征在于,计算引擎筛选出故障网元指标的方法包括:
预先计算网元指标的样本均值和稳定度,并将网元指标的指标名称标识、稳定度和样本均值对应地存储到稳定度对照表中;
获取并解析网元指标消息,得到网元指标的指标名称标识和当前值;
依据所述指标名称标识从稳定度对照表中查找对应的样本均值和稳定度;
依据网元指标的当前值及对应的样本均值和稳定度,计算网元指标的第一变动幅度,将第一变动幅度超过预设的第一变动幅度阈值的网元指标存储为故障网元指标。
7.根据权利要求6所述的定位业务系统故障根因的方法,其特征在于,预先计算网元指标的均值和稳定度的方法包括:
采集x个网元指标样本;
计算网元指标样本的均值,以及每一个网元指标样本的第二变动幅度,统计第二变动幅度超过预设的第二变动幅度阈值的异常网元指标样本数量n;
计算网元指标的稳定度m,其中,
8.根据权利要求6或7所述的定位业务系统故障根因的方法,其特征在于,计算引擎筛选出故障网元指标的方法还包括:
获取网元指标当前值之前预设数量的指标值作为网元指标的近期值;
基于网元指标的近期值计算近期均值;
依据网元指标的近期均值和当前值计算网元指标的近期变动幅度;
依据网元指标的样本均值和当前值计算网元指标的样本变动幅度;
基于网元指标的近期变动幅度和样本变动幅度进行加权计算后,结合网元指标的稳定度得到网元指标的第一变动幅度。
9.根据权利要求6所述的定位业务系统故障根因的方法,其特征在于,网元指标的指标名称标识和指标值依据时间存储到滑动矩阵中,其中,所述滑动矩阵的每一列对应一个分钟跨度,每一行对应于一个指标名称标识的指标值;或者所述滑动矩阵的每一行对应一个分钟跨度,每一列对应于一个指标名称标识的指标值。
10.一种定位业务系统故障根因的系统,其特征在于,包括计算引擎、分布式发布订阅消息系统和网元,所述计算引擎包括消息读取模块、调用链处理模块、网元指标处理模块及故障预警模块,其中,
所述分布式发布订阅消息系统用于存储网元指标和网元部署的服务接口在被调用时生成的调用链消息;
所述消息读取模块用于从分布式发布订阅消息系统读取调用链消息和网元指标消息;
所述调用链处理模块用于将所述调用链消息按照采样比例进行采样,分组组装得到调用链,获取调用链中每个服务接口的耗时,并依据耗时对照表筛选出故障服务接口;
所述网元指标处理模块用于计算网元指标的第一变动幅度,并依据第一变动幅度阈值筛选出故障网元指标;
所述故障预警模块用于将所述故障服务接口和故障网元指标根据时间进行关联,并发布故障预警,所述故障预警包括故障服务接口,以及引起所述故障服务接口发生故障的故障网元指标。
技术总结