CN112540887A - 故障演练方法、装置、电子设备及存储介质 - Google Patents
故障演练方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112540887A CN112540887A CN202011488116.6A CN202011488116A CN112540887A CN 112540887 A CN112540887 A CN 112540887A CN 202011488116 A CN202011488116 A CN 202011488116A CN 112540887 A CN112540887 A CN 112540887A
- Authority
- CN
- China
- Prior art keywords
- fault
- drilling
- target object
- service
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种故障演练方法、装置、电子设备及存储介质,所述方法包括:在触发故障演练指令的情况下,获取针对服务的预设故障演练方案;解析故障演练方案中包括的目标对象标识以及故障信息,并确定与故障信息对应的故障注入引擎;利用故障注入引擎针对目标对象标识对应的目标对象注入故障信息对应的故障,目标对象为服务中包括的任一对象;在注入故障信息对应的故障之后,获取目标对象的指标数据,并基于指标数据确定针对服务的故障演练结果。如此通过故障注入引擎将故障演练方案中故障信息对应的故障注入服务中的目标对象,实现故障演练自动化,可以有效减少故障演练消耗的时间,提供故障演练效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种故障演练方法、装置、电子设备及存储介质。
背景技术
现如今,随着计算机技术的发展,很多传统行业正在逐步向互联网+转型,微服务、分布式服务等得到了快速普及。人们在享受互联网+所带来的好处的同时,更要正视其负面性,尤其在一个复杂的分布式服务中,如果其中存在机器故障,有可能导致整个服务也故障。为了减少故障发生的概率以及影响范围,一般都需要对微服务、分布式服务等进行故障演练,以便于提早发现微服务、分布式服务等存在的缺陷。
相关技术中,大都是测试人员根据自己的经验编排设计故障演练方案,基于故障演练方案人工对微服务、分布式服务等进行故障演练,如此故障演练消耗时间较多、效率较低。
发明内容
本发明实施例的目的在于提供一种故障演练方法、装置、电子设备及存储介质,以实现减少故障演练消耗的时间,提供故障演练效率的有益效果。
在本发明实施例的第一方面,首先提供了一种故障演练方法,所述方法包括:
在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息;
解析所述故障演练方案中包括的目标对象标识以及所述故障信息,并确定与所述故障信息对应的故障注入引擎;
利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象;
在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据,并基于所述指标数据确定针对所述服务的故障演练结果。
在一个可选的实施方式中,所述在触发故障演练指令的情况下,获取针对服务的预设故障演练方案之前,所述方法还包括:
获取用户输入的服务对应的服务级别标识以及所述服务中包括的目标对象对应的目标对象标识;
根据预设的服务级别标识与预设故障信息集的映射关系,确定与所述服务级别标识对应的故障信息集;
基于预设故障信息抽取规则,从所述故障信息集中抽取至少一条故障信息;
生成包括所述目标对象标识以及至少一条所述故障信息的故障演练方案,并存储至故障演练方案库中;
所述获取针对服务的预设故障演练方案,包括:从所述故障演练方案库中获取所述故障演练方案。
在一个可选的实施方式中,所述在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,包括:
基于预设的指令触发方式,触发故障演练指令,其中,所述指令触发方式至少包括下述之一:随机触发方式、周期触发方式、用户触发方式;
在触发故障演练指令的情况下,获取针对服务的预设故障演练方案。
在一个可选的实施方式中,所述确定与所述故障信息对应的故障注入引擎,包括:
确定所述故障信息对应的故障分类;
根据预设的故障分类与故障注入引擎的映射关系,确定与所述故障分类对应的故障注入引擎。
在一个可选的实施方式中,所述利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,包括:
根据预设的故障信息与所述故障注入引擎中故障产生指令的对应关系,确定所述故障注入引擎中所述故障信息对应的故障产生指令;
利用所述故障注入引擎向所述目标对象标识对应的目标对象发送所述故障产生指令,以使所述目标对象执行所述故障产生指令,产生所述故障信息对应的故障。
在一个可选的实施方式中,所述方法还包括:
在根据所述目标对象的指标数据确定所述目标对象产生故障之后,根据预设的故障信息与所述故障注入引擎中故障恢复指令的对应关系,确定所述故障注入引擎中所述故障信息对应的故障恢复指令;
利用所述故障注入引擎向所述目标对象发送所述故障恢复指令,以使所述目标对象执行所述故障恢复指令恢复正常。
在一个可选的实施方式中,所述方法还包括:
获取故障演练过程中所述服务产生的运行数据,其中,所述运行数据至少包括日志数据;
基于所述运行数据生成故障演练报告,并对所述故障演练结果进行效果评估。
在本发明实施例的第二方面,还提供了一种故障演练装置,所述装置包括:
方案获取模块,用于在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息;
方案解析模块,用于解析所述故障演练方案中包括的目标对象标识以及所述故障信息;
引擎确定模块,用于确定与所述故障信息对应的故障注入引擎;
故障注入模块,用于利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象;
数据获取模块,用于在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据;
结果确定模块,用于基于所述指标数据确定针对所述服务的故障演练结果。
在本发明实施例的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的故障演练方法。
在本发明实施例的第四方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的故障演练方法。
在本发明实施例的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的故障演练方法。
本发明实施例提供的技术方案,在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,解析故障演练方案中包括的目标对象标识以及故障信息,确定与故障信息对应的故障注入引擎,利用故障注入引擎针对目标对象标识对应的目标对象注入故障信息对应的故障,在注入故障信息对应的故障之后,获取目标对象的指标数据,基于指标数据确定针对服务的故障演练结果。如此通过故障注入引擎将故障演练方案中故障信息对应的故障注入服务中的目标对象,实现故障演练自动化,可以有效减少故障演练消耗的时间,提供故障演练效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中示出的一种故障演练***的架构示意图;
图2为本发明实施例中示出的一种故障演练方法的实施流程示意图;
图3为本发明实施例中示出的一种故障注入示意图;
图4为本发明实施例中示出的另一种故障演练方法的实施流程示意图;
图5为本发明实施例中示出的一种故障演练装置的结构示意图;
图6为本发明实施例中示出的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
如图1所示,为本发明实施例提供的一种故障演练***的架构示意图,该故障演练***中包含效果评估***11、智能方案编排***12、智能监控报警***13、故障演练方案库14、调度执行引擎15、历史故障演练方案库16、故障注入引擎17以及服务18。其中,智能方案编排***12中包含手动编排、智能编排等故障演练方案编排策略,故障注入引擎17中包含混沌工程工具ChaosBlade、自动化平台StackStorm、用户自定义故障注入工具等故障注入引擎,服务18中包含服务器、容器、数据库、中间件、网络设备等对象。对于效果评估***11、智能方案编排***12、智能监控报警***13、故障演练方案库14、调度执行引擎15、历史故障演练方案库16、故障注入引擎17以及服务18等各自的具体功能实现在下文中详细赘述。
如图2所示,为本发明实施例提供的一种故障演练方法的实施流程示意图,该方法具体可以包括以下步骤:
S201,在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息。
在本发明实施例中,用户预先可以自助编排设计针对服务(例如网站安全监测服务、信息安全监测服务、支付服务、视频播放服务等)进行故障演练的整个过程,以生成相应的故障演练方案,从而在触发故障演练指令的情况下,可以获取针对服务的故障演练方案。
对于故障演练方案,具体可以以工作流的形式体现,并且故障演练方案中包括至少一条故障信息。例如,基于如图1所示的智能方案编排***12中手动编排(即故障演练方案编排策略),用户预先自助编排设计针对服务A进行故障演练的整个过程:第一步,服务器中CPU飙升,第二步,服务器中网络延迟,第三步,服务器中网络丢包……,基于此,可以生成工作流形式的针对服务A的故障演练方案,对于服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包等都可以视为故障演练方案中的故障信息,即具体的故障演练内容。
对于故障演练方案,在本发明实施例中具体可以存储于故障演练方案库中,在触发故障演练指令的情况下,可以从故障演练方案库中获取针对服务的故障演练方案。例如,如图1所示的故障演练方案库14,对于针对服务A的故障演练方案存储于该故障演练方案库中,当用户点击开始故障演练时,触发故障演练指令,并获取用户输入的服务标识A,根据预设的服务标识(例如可以是服务ID,可以是服务名称等)与故障演练方案的对应关系,从该故障演练方案库中确定服务标识A对应的针对服务A的故障演练方案,从而从故障演练方案库中获取针对服务A的故障演练方案。
此外,本发明实施例可以预先设置指令触发方式,该指令触发方式至少包括下述之一:随机触发方式、周期触发方式、用户触发方式,从而基于预设的指令触发方式,可以触发故障演练指令,在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,使得故障的注入更加接近真实。
对于随机触发方式,可以随机触发故障演练指令,例如第一天在12点触发故障演练指令,第二天在10点触发故障演练指令……,如此可以随机进行故障演练。对于周期触发方式,可以周期性的触发故障指令,例如间隔1小时触发一次故障演练指令,如此可以周期性的进行故障演练。对于用户触发方式,可以由用户主动触发故障演练指令,例如用户点击某个按钮,触发故障演练指令,如此由用户决定进行故障演练的时机。
S202,解析所述故障演练方案中包括的目标对象标识以及所述故障信息,并确定与所述故障信息对应的故障注入引擎。
对于故障演练方案,除了包含至少一条故障信息之外,还包含目标对象标识,本发明实施例可以解析故障演练方案中的目标对象标识以及至少一条故障信息,并确定与至少一条故障信息对应的故障注入引擎。
例如,对于故障演练方案,如下表1所示,包含3条故障信息,分别是:服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包等,还包含目标对象标识:server,本发明实施例可以解析故障演练方案中的server以及服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包等3条故障信息。
表1
对于不同的故障信息,均存在对应的故障注入引擎,本发明实施例可以确定与故障信息对应的故障注入引擎,这里故障注入引擎可以是混沌工程工具ChaosBlade,或者,也可以是自动化平台StackStorm,本发明实施例对此不作限定。
例如,如图1所示的故障注入引擎17中包含的混沌工程工具ChaosBlade、自动化平台StackStorm等故障注入引擎,各自对应的故障信息,如下表2所示,对于服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包等故障信息存在对应的混沌工程工具ChaosBlade,本发明实施例可以确定与之对应的故障注入引擎:混沌工程工具ChaosBlade。
故障信息 | 故障注入引擎 |
服务器中CPU飙升 | 混沌工程工具ChaosBlade |
服务器中网络延迟 | 混沌工程工具ChaosBlade |
服务器中网络丢包 | 混沌工程工具ChaosBlade |
MySQL数据库主库宕机 | 自动化平台StackStorm |
从库宕机 | 自动化平台StackStorm |
表2
具体地,本发明实施例可以利用调度执行引擎解析故障演练方案中的目标对象标识以及至少一条故障信息,并利用调度执行引擎确定与至少一条故障信息对应的故障注入引擎,本发明实施例对此不作限定。
S203,利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象。
对于目标对象标识对应的目标对象,可以是服务中包括的任一对象,例如可以是如图1所示的服务18中包含的服务器,可以是如图1所示的服务18中包含的容器,可以是如图1所示的服务18中包含的数据库,可以是如图1所示的服务18中包含的中间件,可以是如图1所示的服务18中包含的网络设备,本发明实施例对此不作限定。从而利用故障注入引擎针对目标对象注入故障信息对应的故障,如此故障信息对应的故障作用于目标对象,以使目标对象产生相应的故障。
具体地,根据预设的故障信息与故障注入引擎中故障产生指令的对应关系,确定故障注入引擎中故障信息对应的故障产生指令,利用故障注入引擎向目标对象标识对应的目标对象发送故障产生指令,以使目标对象执行故障产生指令,产生故障信息对应的故障。
例如,如图3所示,第一步,利用混沌工程工具ChaosBlade针对服务器注入CPU飙升对应的CPU飙升故障,以使服务器产生CPU飙升故障;第二步,利用混沌工程工具ChaosBlade针对服务器注入网络延迟对应的网络延迟故障,以使服务器产生网络延迟故障;第三步,利用混沌工程工具ChaosBlade针对服务器注入网络丢包对应的网络丢包故障,以使服务器产生网络丢包故障。其中,故障演练方案是工作流的形式,连续执行注入操作(即上述第一步、第二步、第三步),期间不必等着故障结果产生。
具体地,第一步,确定混沌工程工具ChaosBlade中故障信息CPU飙升对应的故障产生指令,利用混沌工程工具ChaosBlade向目标对象标识对应的目标对象服务器发送故障产生指令,以使服务器执行故障信息CPU飙升对应的故障产生指令,产生CPU飙升故障。
第二步,确定混沌工程工具ChaosBlade中故障信息网络延迟对应的故障产生指令,利用混沌工程工具ChaosBlade向目标对象标识对应的目标对象服务器发送故障产生指令,以使服务器执行故障信息网络延迟对应的故障产生指令,产生网络延迟故障。
第三步,确定混沌工程工具ChaosBlade中故障信息网络丢包对应的故障产生指令,利用混沌工程工具ChaosBlade向目标对象标识对应的目标对象服务器发送故障产生指令,以使服务器执行故障信息网络丢包对应的故障产生指令,产生网络丢包故障。
S204,在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据,并基于所述指标数据确定针对所述服务的故障演练结果。
在利用故障注入引擎针对目标对象标识对应的目标对象注入故障信息对应的故障之后,需要对故障注入效果进行监控,可以获取目标对象的指标数据,以及服务的运行状态,并进行实时展示。
这里目标对象的指标数据与故障信息存在关联,可以基于指标数据确定针对服务的故障演练结果,除此之外,还可以结合服务的运行状态,确定针对服务的故障演练结果。此外,还可以将故障演练方案存储于如图1所示的历史故障演练库16中,用于查看都进行了那些故障演练。
例如,对于服务器的指标数据与故障信息CPU飙升存在关联,具体可以是CPU的使用率,对于服务的运行状态,具体可以是正常或者宕机,如图1所示的智能监控报警***13,在CPU的使用率飙升到90%,服务的运行状态为正常的情况下,基于服务器的指标数据以及服务的运行状态,可以确定针对服务的故障演练成功,说明服务器CPU飙升故障对服务几乎不存在影响,无需触发告警。
例如,对于服务器的指标数据与故障信息网络丢包存在关联,具体可以是数据丢包率,对于服务的运行状态,具体可以是正常或者宕机,如图1所示的智能监控报警***13,在数据丢包率飙升到某个阈值(例如4%),服务的运行状态为宕机的情况下,基于服务器的指标数据以及服务的运行状态,可以确定针对服务的故障演练失败,可以触发告警,以及时通知相关人员,说明服务器网络丢包故障对服务存在影响。
通过上述对本发明实施例提供的技术方案的描述,在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,解析故障演练方案中包括的目标对象标识以及故障信息,确定与故障信息对应的故障注入引擎,利用故障注入引擎针对目标对象标识对应的目标对象注入故障信息对应的故障,在注入故障信息对应的故障之后,获取目标对象的指标数据,基于指标数据确定针对服务的故障演练结果。如此通过故障注入引擎将故障演练方案中故障信息对应的故障注入服务中的目标对象,实现故障演练自动化,可以有效减少故障演练消耗的时间,提供故障演练效率。
如图4所示,为本发明实施例提供的另一种故障演练方法的实施流程示意图,该方法具体可以包括以下步骤:
S401,在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息。
在本发明实施例中,为了减轻用户编排设计故障演练方案的负担,以及避免部分故障遗漏测试,可以获取用户输入的服务对应的服务级别标识以及服务中包括的目标对象的目标对象标识,根据预设的服务级别标识与预设故障信息集的映射关系,确定与服务级别标识对应的故障信息集,基于预设故障信息抽取规则,从故障信息集中抽取至少一条故障信息,生成包括目标对象标识以及至少一条故障信息的故障演练方案,并存储至故障演练方案库中,在触发故障演练指令的情况下,从故障演练方案库中获取针对服务的故障演练方案,如此实现故障演练方案的自动编排。
在生成包括目标对象标识以及至少一条故障信息的故障演练方案过程中,可以基于预设的故障演练顺序,对至少一条故障信息进行排序,然后生成包括目标对象标识以及至少一条故障信息的故障演练方案。
例如,对于服务,可以预设S级别、A级别、B级别、C级别,S级别最重要,其余级别依序次之,基于如图1所示的智能方案编排***12中智能编排(即故障演练方案编排策略),获取用户输入的服务级别标识:S,以及服务中包括的服务器的标识:server,根据预设的服务级别标识与预设故障信息集的映射关系,如下表3所示,确定与服务级别标识S对应的故障信息集1。
服务级别标识 | 故障信息集 |
S | 故障信息集1 |
A | 故障信息集2 |
B | 故障信息集3 |
C | 故障信息集4 |
表3
对于故障信息集,可以基于预设故障信息抽取规则,从故障信息集中抽取至少一条故障信息,具体可以是从故障信息集中随机抽取至少一条故障信息,本发明实施例对此不作限定。其中,对于抽取的故障信息,与目标对象标识对应的目标对象相关联。
例如,对于故障信息集1,以及目标对象标识对应的目标对象:服务器,基于如图1所示的智能方案编排***12中智能编排(即故障演练方案编排策略),从故障信息集1中随机抽取三条故障信息:服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包,对于服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包等三条故障信息,属于服务器故障,与目标对象服务器相关联。
对于服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包等三条故障信息,可以按照预设故障演练顺序进行排序:第一步,服务器中CPU飙升,第二步,服务器中网络延迟,第三步,服务器中网络丢包,据此可以生成包括服务器中CPU飙升、服务器中网络延迟、服务器中网络丢包等三条故障信息以及目标对象标识server的故障演练方案,并存储于故障演练方案库中,如图1所示的故障演练方案库14,从而在触发故障演练指令的情况下,从故障演练方案库中获取针对服务的故障演练方案,如此实现故障演练方案的自动编排,即如图1所示的智能方案编排***12中智能编排(即故障演练方案编排策略)。
S402,解析所述故障演练方案中包括的目标对象标识以及所述故障信息。
在本发明实施例中,本步骤与上述步骤S202类似,本发明实施例在此不再一一赘述。
S403,确定所述故障信息对应的故障分类,根据预设的故障分类与故障注入引擎的映射关系,确定与所述故障分类对应的故障注入引擎。
在本发明实施例中,对于故障信息进行分类,不同的故障信息可以属于不同的故障分类。例如,如下表4所示,本发明实施例对故障信息进行分类:A类故障、B类故障、C类故障,对于A类故障包括服务器故障(CPU飙升、网络延迟、网络丢包、磁盘I/O异常等)、容器(例如Google的Kubernetes)故障(Node节点CPU负载等),对于B类故障包括集群故障(例如MySQL数据库主库宕机、从库宕机等),对于C类故障包括用户自定义故障。
表4
例如,对于CPU飙升、网络延迟、网络丢包等三条故障信息,属于服务器故障,服务器故障属于A类故障,可以确定CPU飙升、网络延迟、网络丢包等三条故障信息对应的故障分类:A类故障,根据预设的故障分类与故障注入引擎(如图1所示的故障注入引擎17中包含的混沌工程工具ChaosBlade、自动化平台StackStorm以及用户自定义故障注入工具等故障注入引擎)的映射关系,如下表5所示,可以确定A类故障对应的故障注入引擎:混沌工程工具ChaosBlade。
故障分类 | 故障注入引擎 |
A类故障 | 混沌工程工具ChaosBlade |
B类故障 | 自动化平台StackStorm |
C类故障 | 用户自定义故障注入工具 |
表5
S404,利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象。
在本发明实施例中,可以利用故障注入引擎针对目标对象标识对应的目标对象注入故障信息对应的故障,其中,目标对象为服务中包括的任一对象。
具体地,可以根据预设的故障信息与故障注入引擎中故障产生指令的对应关系,确定故障注入引擎中故障信息对应的故障产生指令,利用故障注入引擎向目标对象标识对应的目标对象发送故障产生指令,以使目标对象执行故障产生指令,产生故障信息对应的故障。
例如,如图1所示的调度执行引擎15,确定混沌工程工具ChaosBlade中故障信息CPU飙升对应的故障产生指令,利用混沌工程工具ChaosBlade向目标对象标识对应的目标对象服务器发送故障产生指令,以使服务器执行CPU飙升对应的故障产生指令,产生CPU飙升故障。
S405,在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据,并基于所述指标数据确定针对所述服务的故障演练结果。
在本发明实施例中,本步骤与上述步骤S204类似,本发明实施例在此不再一一赘述。
此外,在根据目标对象的指标数据确定目标对象产生故障之后,有可能影响服务,致使服务出现宕机等现象,此时需要使服务恢复正常,减少服务不可用时间,因此故障注入引擎不光要支持故障注入,还需要支持故障恢复。为此,可以根据预设的故障信息与故障注入引擎中故障恢复指令的对应关系,确定故障注入引擎中故障信息对应的故障恢复指令,利用故障注入引擎向目标对象发送故障恢复指令,以使目标对象执行故障恢复指令恢复正常,从而服务可以恢复正常。
例如,如图1所示的调度执行引擎15,在根据服务器的CPU使用率确定服务器产生CPU飙升故障之后,可以确定混沌工程工具ChaosBlade中故障信息CPU飙升对应的故障恢复指令,利用混沌工程工具ChaosBlade向服务器发送故障恢复指令,以使服务器执行故障恢复指令恢复正常,从而服务可以恢复正常。
在故障演练执行完成之后,需要对整个故障演练进行复盘,对其中发现的问题进行修复、优化,因此本发明实施例可以获取故障演练过程中服务产生的运行数据,其中,该运行数据至少包括日志数据,当然还可以包括告警数据、监控数据等,基于运行数据生成故障演练报告,方便用户进行演练复盘,并对故障演练结果进行效果评估。此外,还可以接入AI等服务,对演练中发现的缺陷、问题等给出初步的优化建议,供用户参考。
例如,如图1所示的效果评估***11,获取故障演练过程中服务产生的日志数据,查看日志数据中服务在故障演练过程中的运行状态;如果服务运行正常,说明故障演练成功,且演练效果优,服务器中CPU飙升故障对服务几乎无影响;如果服务出现宕机情况,但宕机时间未超过2秒,说明故障演练成功,且演练效果较优,服务器中CPU飙升故障对服务存在一定影响;如果服务出现宕机情况,且宕机时间超过2秒,说明故障演练失败,且演练效果较差,服务器中CPU飙升故障对服务影响较大,此时可以确定服务中存在的缺陷与服务器中CPU相关,后续可以针对服务器中CPU进行相关的优化。
与上述方法实施例相对应,本发明实施例还提供了一种故障演练装置,如图5所示,该装置可以包括:方案获取模块510、方案解析模块520、引擎确定模块530、故障注入模块540、数据获取模块550、结果确定模块560。
方案获取模块510,用于在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息;
方案解析模块520,用于解析所述故障演练方案中包括的目标对象标识以及所述故障信息;
引擎确定模块530,用于确定与所述故障信息对应的故障注入引擎;
故障注入模块540,用于利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象;
数据获取模块550,用于在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据;
结果确定模块560,用于基于所述指标数据确定针对所述服务的故障演练结果。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器61、通信接口62、存储器63和通信总线64,其中,处理器61,通信接口62,存储器63通过通信总线64完成相互间的通信,
存储器63,用于存放计算机程序;
处理器61,用于执行存储器63上所存放的程序时,实现如下步骤:
在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息;解析所述故障演练方案中包括的目标对象标识以及所述故障信息,并确定与所述故障信息对应的故障注入引擎;利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象;在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据,并基于所述指标数据确定针对所述服务的故障演练结果。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的故障演练方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的故障演练方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种故障演练方法,其特征在于,所述方法包括:
在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息;
解析所述故障演练方案中包括的目标对象标识以及所述故障信息,并确定与所述故障信息对应的故障注入引擎;
利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象;
在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据,并基于所述指标数据确定针对所述服务的故障演练结果。
2.根据权利要求1所述的方法,其特征在于,所述在触发故障演练指令的情况下,获取针对服务的预设故障演练方案之前,所述方法还包括:
获取用户输入的服务对应的服务级别标识以及所述服务中包括的目标对象对应的目标对象标识;
根据预设的服务级别标识与预设故障信息集的映射关系,确定与所述服务级别标识对应的故障信息集;
基于预设故障信息抽取规则,从所述故障信息集中抽取至少一条故障信息;
生成包括所述目标对象标识以及至少一条所述故障信息的故障演练方案,并存储至故障演练方案库中;
所述获取针对服务的预设故障演练方案,包括:从所述故障演练方案库中获取所述故障演练方案。
3.根据权利要求1所述的方法,其特征在于,所述在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,包括:
基于预设的指令触发方式,触发故障演练指令,其中,所述指令触发方式至少包括下述之一:随机触发方式、周期触发方式、用户触发方式;
在触发故障演练指令的情况下,获取针对服务的预设故障演练方案。
4.根据权利要求1所述的方法,其特征在于,所述确定与所述故障信息对应的故障注入引擎,包括:
确定所述故障信息对应的故障分类;
根据预设的故障分类与故障注入引擎的映射关系,确定与所述故障分类对应的故障注入引擎。
5.根据权利要求1所述的方法,其特征在于,所述利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,包括:
根据预设的故障信息与所述故障注入引擎中故障产生指令的对应关系,确定所述故障注入引擎中所述故障信息对应的故障产生指令;
利用所述故障注入引擎向所述目标对象标识对应的目标对象发送所述故障产生指令,以使所述目标对象执行所述故障产生指令,产生所述故障信息对应的故障。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在根据所述目标对象的指标数据确定所述目标对象产生故障之后,根据预设的故障信息与所述故障注入引擎中故障恢复指令的对应关系,确定所述故障注入引擎中所述故障信息对应的故障恢复指令;
利用所述故障注入引擎向所述目标对象发送所述故障恢复指令,以使所述目标对象执行所述故障恢复指令恢复正常。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
获取故障演练过程中所述服务产生的运行数据,其中,所述运行数据至少包括日志数据;
基于所述运行数据生成故障演练报告,并对所述故障演练结果进行效果评估。
8.一种故障演练装置,其特征在于,所述装置包括:
方案获取模块,用于在触发故障演练指令的情况下,获取针对服务的预设故障演练方案,其中,所述故障演练方案中包括至少一条故障信息;
方案解析模块,用于解析所述故障演练方案中包括的目标对象标识以及所述故障信息;
引擎确定模块,用于确定与所述故障信息对应的故障注入引擎;
故障注入模块,用于利用所述故障注入引擎针对所述目标对象标识对应的目标对象注入所述故障信息对应的故障,所述目标对象为所述服务中包括的任一对象;
数据获取模块,用于在注入所述故障信息对应的故障之后,获取所述目标对象的指标数据;
结果确定模块,用于基于所述指标数据确定针对所述服务的故障演练结果。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7中任一所述的方法步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011488116.6A CN112540887A (zh) | 2020-12-16 | 2020-12-16 | 故障演练方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011488116.6A CN112540887A (zh) | 2020-12-16 | 2020-12-16 | 故障演练方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112540887A true CN112540887A (zh) | 2021-03-23 |
Family
ID=75018262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011488116.6A Pending CN112540887A (zh) | 2020-12-16 | 2020-12-16 | 故障演练方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540887A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113221096A (zh) * | 2021-06-04 | 2021-08-06 | 北银金融科技有限责任公司 | 一种在混沌工程中随机事件相关性分析方法及*** |
CN113487186A (zh) * | 2021-07-07 | 2021-10-08 | 中国工商银行股份有限公司 | 客户端故障演练方法、装置、计算机***、可读存储介质 |
CN113935178A (zh) * | 2021-10-21 | 2022-01-14 | 北京同创永益科技发展有限公司 | 一种云原生混沌工程实验的***半径控制***及方法 |
CN114113984A (zh) * | 2021-11-29 | 2022-03-01 | 平安壹账通云科技(深圳)有限公司 | 基于混沌工程的故障演练方法、装置、终端设备及介质 |
CN114978923A (zh) * | 2022-04-21 | 2022-08-30 | 京东科技信息技术有限公司 | 故障演练方法、装置和*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477666B1 (en) * | 1999-11-22 | 2002-11-05 | International Business Machines Corporation | Automatic fault injection into a JAVA virtual machine (JVM) |
US20170024299A1 (en) * | 2015-07-21 | 2017-01-26 | International Business Machines Corporation | Providing Fault Injection to Cloud-Provisioned Machines |
CN110308969A (zh) * | 2019-06-26 | 2019-10-08 | 深圳前海微众银行股份有限公司 | 故障演练方法、装置、设备及计算机存储介质 |
CN111400182A (zh) * | 2020-03-16 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 故障注入方法、装置、服务器及计算机可读存储介质 |
CN111651353A (zh) * | 2020-05-29 | 2020-09-11 | 北京百度网讯科技有限公司 | 故障注入的方法、装置、电子设备和存储介质 |
-
2020
- 2020-12-16 CN CN202011488116.6A patent/CN112540887A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477666B1 (en) * | 1999-11-22 | 2002-11-05 | International Business Machines Corporation | Automatic fault injection into a JAVA virtual machine (JVM) |
US20170024299A1 (en) * | 2015-07-21 | 2017-01-26 | International Business Machines Corporation | Providing Fault Injection to Cloud-Provisioned Machines |
CN110308969A (zh) * | 2019-06-26 | 2019-10-08 | 深圳前海微众银行股份有限公司 | 故障演练方法、装置、设备及计算机存储介质 |
CN111400182A (zh) * | 2020-03-16 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 故障注入方法、装置、服务器及计算机可读存储介质 |
CN111651353A (zh) * | 2020-05-29 | 2020-09-11 | 北京百度网讯科技有限公司 | 故障注入的方法、装置、电子设备和存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113221096A (zh) * | 2021-06-04 | 2021-08-06 | 北银金融科技有限责任公司 | 一种在混沌工程中随机事件相关性分析方法及*** |
CN113487186A (zh) * | 2021-07-07 | 2021-10-08 | 中国工商银行股份有限公司 | 客户端故障演练方法、装置、计算机***、可读存储介质 |
CN113935178A (zh) * | 2021-10-21 | 2022-01-14 | 北京同创永益科技发展有限公司 | 一种云原生混沌工程实验的***半径控制***及方法 |
CN114113984A (zh) * | 2021-11-29 | 2022-03-01 | 平安壹账通云科技(深圳)有限公司 | 基于混沌工程的故障演练方法、装置、终端设备及介质 |
CN114978923A (zh) * | 2022-04-21 | 2022-08-30 | 京东科技信息技术有限公司 | 故障演练方法、装置和*** |
CN114978923B (zh) * | 2022-04-21 | 2024-06-18 | 京东科技信息技术有限公司 | 故障演练方法、装置和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112540887A (zh) | 故障演练方法、装置、电子设备及存储介质 | |
CN109062809B (zh) | 一种线上测试用例生成方法、装置及电子设备 | |
CN107819627B (zh) | ***故障处理方法及服务器 | |
Yuan et al. | Automated known problem diagnosis with event traces | |
CN111309539A (zh) | 一种异常监测方法、装置和电子设备 | |
CN108156141B (zh) | 一种实时数据识别方法、装置及电子设备 | |
CN110716539B (zh) | 一种故障诊断分析方法和装置 | |
WO2021008029A1 (zh) | 案例执行方法、装置、设备及计算机可读存储介质 | |
CN109284331B (zh) | 基于业务数据资源的制证信息获取方法、终端设备及介质 | |
CN109408361A (zh) | Monkey测试复原方法、装置、电子设备及计算机可读存储介质 | |
CN112433948A (zh) | 一种基于网络数据分析的仿真测试***及方法 | |
CN108304276B (zh) | 一种日志处理方法、装置及电子设备 | |
CN114924990A (zh) | 一种异常场景测试方法及电子设备 | |
CN115952081A (zh) | 一种软件测试方法、装置、存储介质及设备 | |
CN111865673A (zh) | 一种自动化故障管理方法、装置及*** | |
CN113918438A (zh) | 服务器异常的检测方法、装置、服务器及存储介质 | |
CN114020432A (zh) | 任务异常处理方法、装置及任务异常处理*** | |
CN112506802A (zh) | 测试数据的管理方法及*** | |
CN111767213A (zh) | 数据库检查点的测试方法、装置、电子设备及存储介质 | |
CN114090462B (zh) | 软件重复缺陷识别方法、装置、计算机设备及存储介质 | |
CN113672497B (zh) | 无埋点事件的生成方法、装置、设备及存储介质 | |
CN110413516B (zh) | 识别慢sql代码的方法及装置和电子设备 | |
CN114881112A (zh) | 一种***异常检测方法、装置、设备及介质 | |
CN112395119B (zh) | 异常数据处理方法、装置、服务器及存储介质 | |
CN113781068A (zh) | 线上问题解决方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |