掌桥专利:专业的专利平台
掌桥专利
首页

一种故障模拟方法及装置

文献发布时间:2023-06-19 10:16:30


一种故障模拟方法及装置

技术领域

本申请涉及互联网通信技术领域,尤其涉及一种故障模拟方法及装置。

背景技术

随着计算机和互联网技术的快速发展,人们的日常生活对计算机和互联网的依赖程度越来越高,各种设备故障、网络故障造成影响的严重性也日渐增强。故障模拟可以对故障进行有效分析,也成为了解决各种故障的重要手段之一。

目前,在进行故障模拟时,需要结合硬件进行故障模拟,结合硬件的故障模拟往往需要用户手工进行相关模拟操作的控制,带来耗时长、故障模拟操作零散等问题,且由于故障种类繁多,结合硬件的故障模拟往往由于成本等原因,无法保证故障模拟的丰富性。因此,需要提供更可靠或更有效的方案。

发明内容

本申请提供了一种故障模拟方法及装置,可以实现基于软件的故障模拟,提高故障模拟效率和故障模拟操作的密集性,灵活应对各种故障的模拟需求,有效提高故障模拟场景的丰富性。

一方面,本申请提供了一种故障模拟方法,所述方法包括:

接收终端发送的故障模拟请求,所述故障模拟请求包括故障下发对象、目标故障的故障标识和故障关联参数;

向所述故障下发对象发送所述故障关联参数和故障标识,以使所述故障下发对象确定本地部署的故障代理组件中与所述故障标识对应的目标故障执行脚本命令,所述故障代理组件包括模拟多种故障的故障执行脚本命令;以及基于所述目标故障执行脚本命令和所述故障关联参数在本地模拟所述目标故障。

在一些实施例中,所述目标故障至少包括下述之一:

磁盘故障、单机故障、组件故障、网络故障和资源故障。

另一方面提供了一种故障模拟装置,所述装置包括:

故障模拟请求接收模块,用于接收终端发送的故障模拟请求,所述故障模拟请求包括故障下发对象、目标故障的故障标识和故障关联参数;

数据发送模块,用于向所述故障下发对象发送所述故障关联参数和故障标识,以使所述故障下发对象确定本地部署的故障代理组件中与所述故障标识对应的目标故障执行脚本命令,所述故障代理组件包括模拟多种故障的故障执行脚本命令;以及基于所述目标故障执行脚本命令和所述故障关联参数在本地模拟所述目标故障。

另一方面提供了一种故障模拟服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的故障模拟方法。

另一方面,本申请提供了一种故障模拟方法,所述方法包括:

接收服务器在接收到终端下发的包括故障下发对象、目标故障的故障标识和故障关联参数的故障模拟请求时,发送的故障关联参数和故障标识;

确定本地部署的故障代理组件中与所述故障标识对应的目标故障执行脚本命令,所述故障代理组件包括模拟多种故障的故障执行脚本命令;

基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障。

在一些实施例中,所述目标故障至少包括下述之一:

磁盘故障、单机故障、组件故障、网络故障和资源故障。

在一些实施例中,当所述目标故障包括网络故障中的网络延时抖动时,所述目标故障执行脚本命令包括调用流量控制工具执行网络延时抖动模拟的脚本命令,所述故障关联参数包括出入流量阈值和网络流速;

所述基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障包括:

调用所述网络延时抖动对应的流量控制工具,绑定预设网卡;

基于所述故障关联参数中的故障关联参数包括出入流量阈值和网络流速,设置所述预设网卡中的出入流量阈值和网络流速;

当所述目标故障包括网络故障中的网络丢包时,所述目标故障执行脚本命令包括调用防火墙工具执行网络丢包模拟的脚本命令,所述故障关联参数包括数据包传输量;

基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障包括:

调用所述网络丢包对应的防火墙工具,控制所述故障下发对象的数据包传输量为所述故障关联参数中的数据包传输量。

在一些实施例中,所述故障代理组件还包括多种故障的故障恢复脚本命令;

所述方法还包括:

接收所述服务器发送的所述目标故障的定时恢复指令,所述定时恢复指令包括恢复时间;

在基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,所述方法还包括:

确定所述故障代理组件中与所述目标故障对应的故障恢复脚本命令;

当到达所述恢复时间时,基于所述故障恢复脚本命令对所述目标故障进行故障恢复处理;

所述方法还包括:

接收服务器发送的所述目标恢复故障的恢复指令,在基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,确定所述故障代理组件中与所述目标恢复故障对应的故障恢复脚本命令;以及基于所述故障恢复脚本命令对所述目标恢复故障进行故障恢复处理。

另一方面提供了一种故障模拟装置,所述装置包括:

数据发送模块,用于接收服务器在接收到终端下发的包括故障下发对象、目标故障的故障标识和故障关联参数的故障模拟请求时,发送的故障关联参数和故障标识;

目标故障执行脚本命令确定模块,用于确定本地部署的故障代理组件中与所述故障标识对应的目标故障执行脚本命令,所述故障代理组件包括模拟多种故障的故障执行脚本命令;

目标故障模拟模块,用于基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障。

另一方面提供了一种故障模拟设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的故障模拟方法。

另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的故障模拟方法。

本申请提供的故障模拟方法及装置,具有如下技术效果:

本申请在需要进行故障模拟时,服务器通过将故障关联参数和目标故障转发给部署有故障代理组件的故障下发对象,以便故障下发对象可以故障代理组件中的多种故障的故障执行脚本命令灵活应对各种故障的模拟需求,有效提高故障模拟场景的丰富性,实现基于软件的故障模拟,提高故障模拟效率和故障模拟操作的密集性。且通过组件部署的方式,只要在网络可达的范围内,直接进行远程拷贝,实现方便快捷的终端部署。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本申请实施例提供的一种应用环境的示意图;

图2是本申请实施例提供的一种故障模拟方法的流程示意图;

图3是本申请提供的一种故障模拟平台的界面示意图;

图4是本申请实施例提供的一种级子类型故障的选择界面示意图;

图5是本申请实施例提供的另一种一种故障模拟平台的界面示意图;

图6是本申请实施例提供的一种故障资源池的示意图;

图7是本申请实施例提供的另一种故障模拟方法的流程示意图;

图8是本申请实施例提供的一种故障下发对象基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障的流程示意图;

图9是本申请实施例提供的一种故障巡检报告的示意图;

图10是本申请实施例提供的一种踢盘故障的故障报告示意图;

图11是本申请实施例提供的另一种故障模拟方法的流程示意图;

图12是本申请实施例提供的一种显示有故障记录的故障模拟平台的界面示意图;

图13是本申请实施例提供的一种故障模拟装置的结构示意图;

图14是本申请实施例提供的另一种故障模拟装置的结构示意图;

图15是本申请实施例提供的一种故障模拟方法的服务器的硬件结构框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

请参阅图1,图1是本申请实施例提供的一种应用环境的示意图,如图1所示,该应用环境至少包括终端01、服务器02和故障下发对象03。

本说明书实施例中,终端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等类型的实体设备,也可以包括运行于实体设备中的软体,例如虚拟机等。本申请实施例中网络节点上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux、Unix、windows等。终端01包括UI(User Interface,用户界面)层,所述终端01通过所述UI层对外提供故障模拟的下发服务,另外,基于API(Application Programming Interface,应用程序接口)将模拟故障所需的数据发送给服务器02。

本说明书实施例中,服务器02可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。服务器02可以包括有网络通信单元、处理器和存储器等等。具体的,所述服务器02可以用于部署故障代理组件到故障下发对象,并且将模拟故障所需的数据转发给部署有故障代理组件故障下发对象。具体的,服务器还可以用于记录故障模拟过程中的流水数据。

本说明书实施例中,故障下发对象03可以为进行模拟故障的设备,具体的,故障下发对象包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等类型的实体设备,也可以包括运行于实体设备中的软体,例如虚拟机等。也可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。具体的,故障下发对象基于部署故障代理组件和模拟故障所需的数据执行具体的故障模拟任务。

以下介绍本申请一种故障模拟方法的具体实施例,图2是本申请实施例提供的一种故障模拟方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:

S201:终端响应于故障模拟发起指令,向服务器发送故障模拟请求。

本说明书实施例中,故障模拟请求可以包括故障下发对象、目标故障的故障标识和故障关联参数。具体的,目标故障至少可以包括下述之一:磁盘故障、单机故障、组件故障、网络故障和资源故障。本说明书实施例中,故障的标识信息可以作为故障的唯一标识,用于区分不同的故障,具体的,所述标识信息可以包括但不限于故障名称等字符串。

具体的,所述磁盘故障至少可以包括下述之一:SCSI(Small Computer SystemInterface,小型计算机系统接口)踢盘(剔除SCSI接口协议的盘)、OFFLINE踢盘(剔除掉线的盘)、EIO(Error Input/Output,磁盘输入输出不一致)、Hang盘(磁盘假死)、慢盘(输入输出在磁盘上处理时间过长);具体的,单机故障至少可以包括下述之一:设备掉电、设备重启、系统盘错误;具体的,组件故障至少可以包括下述之一:进程kill(进程查杀)、共享内存kill(删除共享内存)、文件只读;具体的,网络故障至少可以包括下述之一:网络丢包、网络延时抖动;具体的,资源故障至少可以包括下述之一:CPU过高、内存过高、时间跳变。

本说明书实施例中,故障关联参数可以包括模拟目标故障所需的数据。在一个具体的实施例中,以网络故障中的网络丢包为例,模拟网络丢包所需的数据可以包括:出入流量、网络包类型、源端or目的端、网络丢包率、网络丢包机器IP。

在实际应用中,终端可以提供UI界面,由用户基于UI界面进行故障模拟发起指令的触发,进而性服务器发送故障模拟请求。具体的,如图3所示,图3是本申请提供的一种故障模拟平台的界面示意图。从图3中可见,故障模拟平台的界面中设置有故障选择的菜单区域、故障资源池、功能触发的菜单区域、目标设备信息的设置区域和故障关联参数的设置区域。

具体的,故障选择的菜单区域显示的故障可以为一级故障类型,通过鼠标hover(盘旋)到一级故障类型后,会出现相关联的二级子类型的故障,具体的,二级子类型故障的选择界面如图4所示,在二级子类型故障的选择界面中可以勾选相关的故障。

具体的,功能触发的菜单区域可以包括单个故障的任务ID(标识)、批量故障的批量任务ID的信息,加入故障池、故障恢复、批量故障恢复、故障发起、故障报告等按钮。其中,单个故障的任务ID为单个故障的故障模拟任务的标识,批量任务ID为包括多种故障的故障模拟任务的标识,具体的,任务ID、批量任务ID的信息可以用户直接输入设置,也可以在故障模拟请求发送后,自动生成。加入故障池的按钮用于将需要模拟的一个或多个故障加入到该故障资源池。故障恢复按钮可以用于触发某一故障的恢复;批量故障恢复按钮可以用于触发多种故障的恢复。故障发起按钮可以用于触发故障模拟请求、故障报告按钮可以用于触发故障报告的查询。

具体的,故障资源池可以用于展示需要模拟的一个或多个故障。

具体的,目标设备信息的设置区域可以用于进行故障下发对象(目标设备)的相关信息的设置,具体的,故障下发对象(目标设备)的相关信息可以包括目标设备IP、目标设备端口、目标设备账号和目标设备密码。

具体的,故障关联参数的设置区域可以用于进行故障模拟所需的数据的设置。具体的,可以结合选取的不同故障进行相关设置。

在实际应用中,用户可以通过在故障模拟平台的界面中设置有故障选择的菜单区域进行故障选择后,在目标设备信息的设置区域和故障关联参数的设置区域进行相关信息和参数的设置,然后,基于对功能触发的菜单区域的加入故障池的按钮点击,将需要模拟的故障加入故障池,最后,通过对功能触发的菜单区域的发起故障的按钮的点击触发故障模拟发起指令,向服务器发送故障模拟请求。

进一步的,如图3所示,故障模拟平台的界面还可以设置有展示故障模拟流水数据的故障记录的区域。具体的,故障模拟流水数据可以包括任务ID,故障类型(即故障名称),目标设备信息(即目标设备IP、目标设备端口、目标设备账号和目标设备密码),故障信息(即故障模拟过程中的故障关联参数),故障发起时间,故障修改时间(故障模拟请求下发后,完成故障模拟,向终端返回成功或失败的故障模拟流水记录的时间),故障操作人,任务耗时(故障模拟的时间)。

进一步的,如图3所示,故障模拟平台的界面还可以设置有故障操作人的设置区域,故障操作人为下发故障模拟的用户。

进一步的,如图5所示,当在二级子类型故障的选择界面选择某一故障(例如网络丢包)后,在故障关联参数的设置区域会显示网络丢包的相关参数,具体的参数值可以预先设置,也可以用户输入;另外,通过点击加入故障池的按钮,可以将故障(网络丢包)加入到故障资源池。

具体的,如图6所示,当依次将多个故障加入到故障资源池之后,可以在故障资源池中通过拖拽某一故障的方式来进行故障的模拟先后顺序的调整,也可以点击叉叉删除某一故障,具体的,图6中,故障资源池包括para-svr_1(设备强制掉电)para-process-kill_2(进程kill)、para-iscsi_3(scsi踢盘)三个故障。

进一步的,结合图5所示,在将故障加入到故障资源池后,可以点击故障发起的按钮触发向服务器发送故障模拟请求。

S203:服务器向故障下发对象发送所述故障关联参数和故障标识。

本说明书实施例中,服务器在接收到终端发送的故障模拟请求之后,可以确定故障下发对象是否已经部署有故障代理组件,当故障下发对象部署有故障代理组件时,可以向该故障下发对象发送故障关联参数和故障标识。反之,当故障下发对象未部署有故障代理组件时,如图7所示,所述方法还包括:

S209:服务器在所述故障下发对象部署所述故障代理组件。

具体的,在实际应用中,故障代理组件的部署可以通过paramiko将故障代理组件远程拷贝到故障下发对象上。具体的,paramiko是一个基于SSH(Secure Shell,安全外壳协议)连接远程服务器并执行相关操作(SSHClient组件和SFTPClinet组件,即一个是远程连接,一个是上传下载服务),对远程服务器进行命令或文件操作。具体的,可以利用SSHClient组件和目标设备信息(故障下发对象的信息)先建立与故障下发对象的远程连接,然后,利用SFTPClinet组件将故障代理组件上传到故障下发对象上。后续,服务器向故障下发对象发送相关命令时,故障下发对象可以利用故障代理组件进行执行。

本说明书实施例中,故障代理组件可以包括模拟多种故障的故障执行脚本命令。在实际应用中,一些故障模拟时,例如单机故障、组件故障、网络故障资源故障等,可以直接依赖相应的执行脚本命令;另一些故障模拟时,例如磁盘故障和/或网络故障,需要依赖第三方工具。相应的,所述故障执行脚本命令还可以包括调用第三方工具执行故障模拟的脚本命令。

S205:故障下发对象确定本地部署的故障代理组件中与所述故障标识对应的目标故障执行脚本命令。

本说明书实施例中,目标故障执行脚本命令可以为模拟目标故障的执行脚本命令,也可以为调度与目标故障对应目标故障执行工具执行目标故障模拟的脚本命令。

在实际应用中,故障代理组件中模拟多种故障的故障执行脚本命令可以设置有相应故障的标识信息,以进行故障执行脚本命令的区分。

S207:故障下发对象基于所述目标故障执行脚本命令和所述故障关联参数在本地模拟所述目标故障。

本说明书实施例中,当所述目标故障包括磁盘故障时,所述目标故障执行脚本命令包括调用内核监控跟踪工具执行磁盘故障模拟的脚本命令,所述故障关联参数包括磁盘故障关联参数;

相应的,如图8所示,所述故障下发对象基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障包括:

S2071:故障下发对象调用所述内核监控跟踪工具,获取所述故障下发对象与所述目标故障对应的原始脚本命令中的内核关键信息;

S2073:故障下发对象基于磁盘故障关联参数对所述内核关键信息中的参数进行修改;

S2075:故障下发对象执行修改内核关键信息后的原始脚本命令。

在一个具体的实施例中,以磁盘故障中的Hang盘为例,Hang盘是指设备负载过高出现“假死”现象,那么如果能让设备无法处理IO,并不断堆积IO请求,就能模拟出IO hang的现象。本说明书实施例中,可以控制处理完成队列的函数(nvme_process_cq)在写寄存器之前退出,具体的,当寄存器指针head没有移动且phase(io完成阶段,磁盘状态cqe.status==phase表示io已经完成,磁盘状态cqe.status!=phase表示io未完成)没有反转时,才会退出。具体的,获取Hang盘对应的原始脚本命令中的内核关键信息nvmeq,去修改cqe.status,结合磁盘故障关联参数使得cqe.status始终不等于phase,那么,在执行原始脚本命令时,就可以实现Hang盘故障的模拟任务。

当所述目标故障包括网络故障中的网络延时抖动时,所述目标故障执行脚本命令包括调用流量控制工具执行网络延时抖动模拟的脚本命令,所述故障关联参数包括出入流量阈值和网络流速;

所述故障下发对象基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障包括:

故障下发对象调用所述网络延时抖动对应的流量控制工具,绑定预设网卡;

故障下发对象基于所述故障关联参数中的故障关联参数包括出入流量阈值和网络流速,设置所述预设网卡中的出入流量阈值和网络流速。

当所述目标故障包括网络故障中的网络丢包时,所述目标故障执行脚本命令包括调用防火墙工具执行网络丢包模拟的脚本命令,所述故障关联参数包括数据包传输量;

所述故障下发对象基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障包括:

故障下发对象调用所述网络丢包对应的防火墙工具,控制所述故障下发对象的数据包传输量为所述故障关联参数中的数据包传输量。

当所述目标故障包括组件故障、单机故障和资源故障时,可以不依赖第三方工具实现目标故障的模拟,相应的目标故障执行脚本命令可以包括目标故障的执行脚本命令。

具体的,当所述目标故障包括组件故障中的进程kill时,目标故障执行脚本命令可以包括进程kill命令,故障关联参数可以包括进程入口标识信息,相应的,可以基于进程入口标识信息找到需要kill的进程,然后,利用进程kill命令对相应的进程进行查杀。

具体的,当所述目标故障包括组件故障中的共享内存kill时,目标故障执行脚本命令可以包括ipcs命令(ipcs命令用于往标准输出写入一些关于活动进程间通信设施的信息)和iprm(共享内存删除)命令;故障关联参数可以包括共享内存的key值,具体的,可以利用ipcs命令查看当前环境的所有共享内存,通过故障关联参数中共享内存的key值,执行iprm命令,从而实现对共享内存的删除清理。

具体的,当所述目标故障包括组件故障中的文件只读时,目标故障执行脚本命令可以包括chmod(是一个计算机函数,功能是改变文件的读写许可设置)命令;故障关联参数可以包括目标只读文件的标识信息。相应的,可以基于故障关联参数中的目标只读文件的标识信息找到目标只读文件,并通过chmod命令将其设置成只读,从而实现文件写失败的故障。

具体的,当所述目标故障包括单机故障中的设备掉电时,目标故障执行脚本命令可以包括强制关机命令(普通关机,需要先停程序,后关机);故障关联参数可以包括电源端口信息。相应的,可以通过对故障关联参数中电源端口信息对应的电源端口执行强制关机命令。

具体的,当所述目标故障包括单机故障中的设备重启时,目标故障执行脚本命令可以包括reboot(重新启动系统)命令。相应的,可以通过reboot进行重启操作。

具体的,当所述目标故障包括单机故障中的系统盘错误时,目标故障执行脚本命令可以包括dd(是一个Unix和类Unix系统上的命令,主要功能为转换和复制文件)命令,故障关联参数可以包括系统盘标识信息相应的,可以是通过故障关联参数中系统盘标识信息,查询相应的系统盘,再用dd命令去做系统盘写覆盖,从而造成系统盘元数据写坏的系统盘故障。

当所述目标故障包括资源故障中的CPU过高时,可以先计算出当前物理机的CPU总核数,再根据故障关联参数中的打满CPU的百分比,来计算出需要做操作的CPU核数,比如CPU需要20%打满,那么需要操作的CPU核数=总核数*20%,然后,对需要操作的CPU核数,通过dd命令,从/dev/zero里读出数据,写入到/dev/null里,通过这种方式将当前绑定的CPU核打满。

当所述目标故障包括资源故障中的内存过高时,以故障下发对象为linux的操作系统为例,可以先通过free(申请内存空间与释放内存空间的函数)计算出当前的物理总内存,再故障关联参数中需要打满的内存百分比,计算出需要打满的内存值,通过内存malloc(memory allocation,动态内存分配,用于将可用的内存块连接为一个长长的列表的所谓空闲链表)命令的脚本去不断消耗内存,直到内存值达到预期值为止。

由以上本说明书实施例提供的技术方案可见,本说明书实施例中,在需要进行故障模拟时,服务器通过将故障关联参数和目标故障转发给部署有故障代理组件的故障下发对象,以便故障下发对象可以故障代理组件中的多种故障的故障执行脚本命令灵活应对各种故障的模拟需求,有效提高故障模拟场景的丰富性,实现基于软件的故障模拟,提高故障模拟效率和故障模拟操作的密集性。且通过组件部署的方式,只要在网络可达的范围内,直接进行远程拷贝,实现方便快捷的终端部署。

进一步的,在实际应用中,如图3所示,故障选择的菜单区域还可以设置有故障巡检,相应的,功能触发的区域还设置有故障巡检的按钮;具体的,故障巡检可以为针对某些已经模拟过故障的故障下发对象,去查看该故障下发对象模拟过哪些故障,故障是否已经恢复。相应的,所述方法还包括:

1)响应于故障巡检指令,向服务器发送故障巡检请求,所述故障巡检请求包括目标巡检故障的任务标识;

2)服务器基于所述目标巡检故障的任务标识确定所述目标巡检故障的故障模拟流水数据;

3)服务器基于所述目标巡检故障的故障模拟流水数据生成故障巡检报告;

4)服务器向所述终端发送所述故障巡检报告。

本说明书实施例中,目标巡检故障可以包括一个或多个已经模拟过的故障,相应的,目标巡检故障的任务标识可以包括单个进行模拟的故障的任务标识,也可以为批量模拟的故障的任务标识。具体的,结合3所示,用户可以通过在故障模拟平台的界面中设置有故障选择的菜单区域进行故障巡检的选择后,在功能触发的菜单区域的输入目标巡检故障的任务标识,并点击故障巡检的按钮,以触发故障巡检指令,向服务器发送故障巡检请求。在一个具体的实施例中,如图9所示,图9是本申请实施例提供的一种故障巡检报告的示意图。

在另一些实施例中,为了便于相关人员对故障模拟情况的分析,所述方法还包括:

1)终端向服务器发送故障分析报告的生成请求,所述生成请求包括目标故障的任务标识;

2)服务器基于所述任务标识确定所述目标故障的故障模拟流水数据;

3)服务器基于所述故障模拟流水数据对所述目标故障进行故障分析,得到故障分析报告;

4)服务器向所述终端发送所述故障分析报告。

在一个具体的实施例中,以某一踢盘故障为例,如图10所示,故障分析报告中可以包括故障模拟过程中每一步的执行情况,可以通过点击刷新的方式查看每一步。具体的,故障下发对象可以为分布式系统,其中,cell为分布式系统中的从节点,master为分布式系统中的主节点。在一个具体的实施例中,该分布式系统可以为区块链系统,具体的,区块链系统可以由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。

在另一些实施例中,故障代理组件还可以包括多种故障的故障恢复脚本命令;相应的,所述方法还可以包括:

服务器向所述故障下发对象发送所述目标故障的定时恢复指令,所述定时恢复指令包括恢复时间;

在故障下发对象基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,所述方法还包括:

1)故障下发对象确定所述故障代理组件中与所述目标故障对应的故障恢复脚本命令;

2)当到达所述恢复时间时,故障下发对象基于所述故障恢复脚本命令对所述目标恢复故障进行故障恢复处理。

具体的,可以通过crontab(用来定期执行程序的命令)定时器,设置任务的扫描工具,任务扫描工具会不断扫描当前设备(故障下发对象)的故障任务,当故障达到默认恢复时间后就会执行故障恢复脚本命令,实现恢复故障;

另外,在一些实施例中,如用户需要提前恢复,则可以通过终端的任务标识来在指定需要恢复的故障。相应的,所述方法还包括:

1)终端响应于故障恢复指令,向服务器发送故障恢复请求,所述故障恢复请求包括目标恢复故障的任务标识。

2)服务器基于所述任务标识确定所述目标恢复故障对应的故障下发对象,向所述故障下发对象发送所述目标恢复故障的恢复指令。

在故障下发对象基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,所述方法还包括:

1)故障下发对象确定所述故障代理组件中与所述目标恢复故障对应的故障恢复脚本命令;

2)故障下发对象基于所述故障恢复脚本命令对所述目标恢复故障进行故障恢复处理。

具体的,所述目标恢复故障可以包括一个或多个已经模拟过的故障,目标恢复故障的任务标识可以包括单个进行模拟的故障的任务标识,也可以为批量模拟的故障的任务标识。

在另一些实施例中,为了便于后续的对故障模拟的追踪分析,在终端向服务器发送故障模拟请求之后,如图11所示,所述方法还可以包括:

S211:终端生成故障下发流水数据;

S213:终端将所述故障下发流水数据发送给所述服务器;

相应的,在故障下发对象基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障之后,结合图11,所述方法还包括:

S215:故障下发对象记录故障执行流水数据;

S217:故障下发对象将所述故障执行流水数据发送给所述服务器;

S219:服务器基于所述故障下发流水数据和故障执行流水数据生成所述目标故障的故障模拟流水数据

S221:服务器向所述终端发送所述故障模拟流水数据。

具体的,故障下发流水数据可以包括但不限于故障操作人、故障发起时间、任务ID、故障类型。具体的,故障执行流水数据可以包括但不限于任务ID、故障类型、故障修改时间、任务耗时、目标设备信息和故障信息。

在实际应用中,在终端显示故障模拟流水数据时,可以获取故障模拟流水数据中的故障信息,当故障信息中故障关联参数的值与故障模拟请求下发时,设置的故障关联参数的值一致时,可以确定故障模拟成功;反之,故障模拟失败。相应的,对于故障模拟成功和故障模拟失败,可以采用不同的颜色显示故障模拟流水数据等方式来区分。

在一个具体的实施例中,如图12所示,图12是本申请实施例提供的一种显示有故障记录的故障模拟平台的界面示意图。具体的,在故障模拟下发后,故障记录中会显示有相关的流程,从图12可见,对于故障批量任务可以为每一个任务设置批量任务ID和单独的任务ID,其中,任务ID为190812的故障模拟任务为hang盘故障,且通过故障模拟流水的故障修改时间为空可以确定故障下发设备不通,或者服务器异常,导致故障模拟请求未下发到故障下发设备。任务ID为19075,批量任务ID为201963的故障模拟任务为hang盘故障,且故障模拟任务成功,任务耗时是3秒。任务ID为190754,批量任务ID为201963的故障模拟任务为进程kill故障,且故障模拟任务失败。

此外,需要说明的是,参数设置中一般可以显示有最新故障模拟相关的信息。

由以上本说明书实施例提供的技术方案可见,在需要进行故障模拟时,服务器通过将故障关联参数和目标故障转发给部署有故障代理组件的故障下发对象,以便故障下发对象可以故障代理组件中的多种故障的故障执行脚本命令灵活应对各种故障的模拟需求,有效提高故障模拟场景的丰富性,实现基于软件的故障模拟,提高故障模拟效率和故障模拟操作的密集性。且通过组件部署的方式,只要在网络可达的范围内,直接进行远程拷贝,实现方便快捷的终端部署。另外,可以实现方便快捷的故障追踪(巡检)、故障恢复、故障分析等多种功能。且用户可以结合UI和API实现故障模拟,操作便捷。

本申请实施例还提供了一种故障模拟装置,如图13所示,所述装置包括:

故障模拟请求接收模块1310,可以用于接收终端发送的故障模拟请求,所述故障模拟请求包括故障下发对象、目标故障的故障标识和故障关联参数;

数据发送模块1320,用于向所述故障下发对象发送所述故障关联参数和故障标识,以使所述故障下发对象确定本地部署的故障代理组件中与所述故障标识对应的目标故障执行脚本命令,所述故障代理组件包括模拟多种故障的故障执行脚本命令;以及基于所述目标故障执行脚本命令和所述故障关联参数在本地模拟所述目标故障。

在一些实施例中,所述装置还包括:

故障代理组件部署模块,用于当所述故障下发对象未部署有所述故障代理组件时,在所述故障下发对象部署所述故障代理组件。

在一些实施例中,所述故障代理组件还包括多种故障的故障恢复脚本命令;

所述装置还包括:

定时恢复指令发送模块,用于向所述故障下发对象发送所述目标故障的定时恢复指令,所述定时恢复指令包括恢复时间,以使所述故障下发对象在基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,确定所述故障代理组件中与所述目标故障对应的故障恢复脚本命令;当到达所述恢复时间时,基于所述故障恢复脚本命令对所述目标故障进行故障恢复处理;

所述装置还包括:

故障恢复请求接收模块,用于接收所述终端发送的故障恢复请求,所述故障恢复请求包括目标恢复故障的任务标识;

恢复指令发送模块,用于基于所述任务标识确定所述目标恢复故障对应的故障下发对象,向所述故障下发对象发送所述目标恢复故障的恢复指令,以使故障下发对象在基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,确定所述故障代理组件中与所述目标恢复故障对应的故障恢复脚本命令;以及基于所述故障恢复脚本命令对所述目标恢复故障进行故障恢复处理。

在一些实施例中,所述装置还包括:

第一流水数据接收模块,用于接收所述终端发送的故障下发流水数据;

第二流水数据接收模块,用于接收故障下发对象发送的故障执行流水数据;

故障模拟流水数据生成模块,用于基于所述故障下发流水数据和故障执行流水数据生成所述目标故障的故障模拟流水数据;

故障模拟流水数据发送模块,用于向所述终端发送所述故障模拟流水数据。

在一些实施例中,所述装置还包括:

生成请求接收模块,用于接收所述终端向服务器发送的故障分析报告的生成请求,所述生成请求包括目标故障的任务标识;

第一流水数据确定模块,用于基于所述任务标识确定所述目标故障的故障模拟流水数据;

故障分析模块,用于基于所述故障模拟流水数据对所述目标故障进行故障分析,得到故障分析报告;

故障分析报告发送模块,用于向所述终端发送所述故障分析报告。

在一些实施例中,所述装置还包括:

故障巡检请求接收模块,用于接收所述发送的故障巡检请求,所述故障巡检请求包括目标巡检故障的任务标识;

第二流水数据确定模块,用于基于所述目标巡检故障的任务标识确定所述目标巡检故障的故障模拟流水数据;

故障巡检报告生成模块,用于基于所述目标巡检故障的故障模拟流水数据生成故障巡检报告;

故障巡检报告发送模块,用于向所述终端发送所述故障巡检报告。

在一些实施例中,所述目标故障至少包括下述之一:

磁盘故障、单机故障、组件故障、网络故障和资源故障。

所述的装置实施例中的装置与方法实施例基于同样的申请构思。

本申请实施例提供了一种故障模拟服务器,该故障模拟服务器包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的故障模拟方法。

本申请实施例还提供了另一种故障模拟装置,如图14所示,所述装置包括:

数据发送模块1410,用于接收服务器在接收到终端下发的包括故障下发对象、目标故障的故障标识和故障关联参数的故障模拟请求时,发送的故障关联参数和故障标识;

目标故障执行脚本命令确定模块1420,用于确定本地部署的故障代理组件中与所述故障标识对应的目标故障执行脚本命令,所述故障代理组件包括模拟多种故障的故障执行脚本命令;

目标故障模拟模块1430,用于基于所述目标故障执行脚本命令和所述故障关联参数,在本地模拟所述目标故障。

在一些实施例中,所述目标故障至少包括下述之一:

磁盘故障、单机故障、组件故障、网络故障和资源故障。

在一些实施例中,当所述目标故障包括磁盘故障时,所述目标故障执行脚本命令包括调用内核监控跟踪工具执行磁盘故障模拟的脚本命令,所述故障关联参数包括磁盘故障关联参数;

所述目标故障模拟模块1430包括:

第一工具调用模块,用于调用所述内核监控跟踪工具,获取所述故障下发对象与所述目标故障对应的原始脚本命令中的内核关键信息;

参数修改模块,用于基于磁盘故障关联参数对所述内核关键信息中的参数进行修改;

脚本执行模块,用于执行修改内核关键信息后的原始脚本命令。

在一些实施例中,当所述目标故障包括网络故障中的网络延时抖动时,所述目标故障执行脚本命令包括调用流量控制工具执行网络延时抖动模拟的脚本命令,所述故障关联参数包括出入流量阈值和网络流速;

所述目标故障模拟模块1430包括:

第二工具调用模块,用于调用所述网络延时抖动对应的流量控制工具,绑定预设网卡;

参数设置模块,用于基于所述故障关联参数中的故障关联参数包括出入流量阈值和网络流速,设置所述预设网卡中的出入流量阈值和网络流速;

当所述目标故障包括网络故障中的网络丢包时,所述目标故障执行脚本命令包括调用防火墙工具执行网络丢包模拟的脚本命令,所述故障关联参数包括数据包传输量;

所述目标故障模拟模块1430包括:

第三工具调用模块,用于调用所述网络丢包对应的防火墙工具,控制所述故障下发对象的数据包传输量为所述故障关联参数中的数据包传输量。

在一些实施例中,所述故障代理组件还包括多种故障的故障恢复脚本命令;

所述装置还包括:

定时恢复指令接收模块,用于接收所述服务器发送的所述目标故障的定时恢复指令,所述定时恢复指令包括恢复时间;

所述装置还包括:

第一故障恢复脚本命令确定模块,用于在基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,确定所述故障代理组件中与所述目标故障对应的故障恢复脚本命令;

第一故障恢复处理模块,用于当到达所述恢复时间时,基于所述故障恢复脚本命令对所述目标故障进行故障恢复处理;

所述装置还包括:

恢复指令就是模块,用于接收服务器发送的所述目标恢复故障的恢复指令;

第二故障恢复脚本命令确定模块,用于在基于所述目标故障执行命令和所述故障关联参数在本地模拟所述目标故障之后,确定所述故障代理组件中与所述目标恢复故障对应的故障恢复脚本命令;

第二故障恢复处理模块,用于基于所述故障恢复脚本命令对所述目标恢复故障进行故障恢复处理。

所述的装置实施例中的装置与方法实施例基于同样的申请构思。

本申请实施例提供了一种故障模拟设备,该故障模拟设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的故障模拟方法。

本说明书实施例中,存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。

本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图15是本申请实施例提供的一种故障模拟方法的服务器的硬件结构框图。如图15所示,该服务器1500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)1510(处理器1510可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1530,一个或一个以上存储应用程序1523或数据1522的存储介质1520(例如一个或一个以上海量存储设备)。其中,存储器1530和存储介质1520可以是短暂存储或持久存储。存储在存储介质1520的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1510可以设置为与存储介质1520通信,在服务器1500上执行存储介质1520中的一系列指令操作。服务器1500还可以包括一个或一个以上电源1560,一个或一个以上有线或无线网络接口1550,一个或一个以上输入输出接口1540,和/或,一个或一个以上操作系统1521,例如Windows Server

输入输出接口1540可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1500的通信供应商提供的无线网络。在一个实例中,输入输出接口1540包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1540可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。

本领域普通技术人员可以理解,图15所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1500还可包括比图15中所示更多或者更少的组件,或者具有与图15所示不同的配置。

本申请的实施例还提供了一种存储介质,所述存储介质可设置于服务器之中以保存用于实现方法实施例中一种故障模拟方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的故障模拟方法。

可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

由上述本申请提供的故障模拟方法、装置、服务器或存储介质的实施例可见,本申请中在需要进行故障模拟时,服务器通过将故障关联参数和目标故障转发给部署有故障代理组件的故障下发对象,以便故障下发对象可以故障代理组件中的多种故障的故障执行脚本命令灵活应对各种故障的模拟需求,有效提高故障模拟场景的丰富性,实现基于软件的故障模拟,提高故障模拟效率和故障模拟操作的密集性。且通过组件部署的方式,只要在网络可达的范围内,直接进行远程拷贝,实现方便快捷的终端部署。另外,可以实现方便快捷的故障追踪(巡检)、故障恢复、故障分析等多种功能。

需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、服务器、终端和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种模拟滤波器组合故障模拟装置、故障模拟系统及其故障模拟方法
  • 一种供电故障模拟装置及供电故障模拟方法
技术分类

06120112481518