CN115834404A - 一种混沌演练方法、装置及计算机可读介质 - Google Patents
一种混沌演练方法、装置及计算机可读介质 Download PDFInfo
- Publication number
- CN115834404A CN115834404A CN202211390031.3A CN202211390031A CN115834404A CN 115834404 A CN115834404 A CN 115834404A CN 202211390031 A CN202211390031 A CN 202211390031A CN 115834404 A CN115834404 A CN 115834404A
- Authority
- CN
- China
- Prior art keywords
- chaotic
- drilling
- drill
- random
- abnormal
- 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
- 230000000739 chaotic effect Effects 0.000 title claims abstract description 201
- 238000005553 drilling Methods 0.000 title claims abstract description 151
- 238000000034 method Methods 0.000 title claims abstract description 64
- 239000000470 constituent Substances 0.000 claims abstract description 48
- 238000002347 injection Methods 0.000 claims abstract description 26
- 239000007924 injection Substances 0.000 claims abstract description 26
- 230000002159 abnormal effect Effects 0.000 claims description 58
- 230000005856 abnormality Effects 0.000 claims description 34
- 238000007689 inspection Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 14
- 241000287219 Serinus canaria Species 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 9
- 238000004519 manufacturing process Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 230000006378 damage Effects 0.000 claims description 4
- 230000007774 longterm Effects 0.000 abstract description 4
- 238000003860 storage Methods 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开一种混沌演练方法、装置及计算机可读介质,本申请将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量,当需进行混沌演练时,获取一次混沌演练包含的多种组成元素,为每种组成元素包含的随机变量进行随机赋值,根据每种组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常,并对生成的异常进行异常注入处理,以进行混沌演练。本申请通过将一次混沌演练拆分为多种分别包含至少一个随机变量的组成元素,每次演练就像开盲盒一样由这些随机变量产生演练所需的异常,可使得每次混沌演练几乎是不会重复的,保证了高随机性,至少解决了混沌演练随机性不足的问题,具备长期重复执行的意义。
Description
技术领域
本申请属于混沌工程技术领域,尤其涉及一种混沌演练方法、装置及计算机可读介质。
背景技术
混沌工程属于一门新兴的技术学科,通过以主动出击的方式在大型分布式系统上进行实验,找出可能发生问题的风险点,目的是建立对系统抵御生产环境中失控条件的能力以及信心,旨在从根本上改变开发者应对软件缺陷和故障的思维方式。
混沌工程Netflix的创始人只提出了5个基本原则,并没有任何落地方案或建议,行业认知和实践积累很少,导致目前的混沌演练存在一系列问题,如无法实现自动演练、异常注入的随机性不足、无法自动判断演练结果等等。例如,阿里巴巴开源的ChaosBlade工具通过命令行或http方式可以对机器造成混乱,但只能解决单条异常注入的问题,而且无法实现自动演练、无法自动判断演练结果;ChaosIQ公司开源的ChaosToolkit混沌框架只是抽象的把混沌工程拆分为稳态、动作、回滚等抽象概念,这种设计随机性不足,不具备长期重复执行的意义。
发明内容
有鉴于此,本申请提供一种混沌演练方法、装置及计算机可读介质,用于解决目前的混沌演练方式存在的至少部分技术问题。
具体方案如下:
一种混沌演练方法,所述方法包括:
获取一次混沌演练包含的多种组成元素;其中,预先将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量;
为不同组成元素包含的随机变量进行随机赋值,得到不同组成元素包含的随机变量的随机赋值结果;
根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常;
对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。
可选的,所述获取一次混沌演练包含的多种组成元素,包括:
获取一次混沌演练包含的异常模板、运行时长、异常个数、运行模式中的至少部分组成元素;
其中,不同异常类型下的异常模板对应提供有不同的动态属性,异常模板提供的动态属性作为所述异常模板包含的随机变量。
可选的,所述运行时长表示一次混沌演练中异常持续的时间,所述异常个数表示一次混沌演练将执行的异常类型数,所述异常模式表示一次混沌演练中不同异常之间的执行方式;
所述根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常,包括:
在所述运行时长、所述异常个数和所述异常模式的当前随机赋值结果对应的条件约束下,基于对应异常类型下的异常模板不断产生异常。
可选的,所述对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练,包括:
将生成的异常注入对应的生产环境中,并在预先创建的混沌环境中基于注入的异常进行混沌演练。
可选的,在所述获取一次混沌演练包含的多种组成元素之前,还包括:
基于配置的定时任务,定时触发日常巡检流程,基于日常巡检流程创建用于混沌演练的混沌环境,以基于创建的混沌环境进行异常注入与基于所注入异常的混沌演练,并在满足演练结束条件时结束演练进行混沌环境销毁。
可选的,所述基于日常巡检流程创建用于混沌演练的混沌环境,包括:
任务调度中心基于日常巡检流程向云平台发送预设创建参数的参数数据,以由云平台基于预设创建参数的参数数据创建混沌环境。
可选的,上述方法,还包括:
基于流量分段处理及金丝雀分析,确定演练结果。
可选的,所述基于流量分段处理及金丝雀分析,确定演练结果,包括:
从入口流量中划分出相同比例的两组流量,分别作为混沌组的流量和对照组的流量;
获取基于混沌组的流量对服务进行混沌演练所对应的服务指标监控结果,作为混沌组指标;
获取服务在对照组流量对应的运行表现下的服务指标监控结果,作为对照组指标;
根据混沌组指标与对照组指标的偏移量,确定演练结果。
一种混沌演练装置,所述装置包括:
获取单元,用于获取一次混沌演练包含的多种组成元素;其中,预先将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量;
随机赋值单元,用于为不同组成元素包含的随机变量进行随机赋值,得到每种组成元素包含的随机变量的随机赋值结果;
异常生成单元,用于根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常;
异常注入与混沌演练单元,用于对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。
一种计算机可读介质,其上存储有计算机程序,所述计算机程序包含用于执行如上文任一项所述的方法的程序代码。
综上所述,本申请提供的混沌演练方法、装置及计算机可读介质,将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量,当需进行混沌演练时,获取一次混沌演练包含的多种组成元素,为每种组成元素包含的随机变量进行随机赋值,根据每种组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常,并对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。本申请通过将一次混沌演练拆分为多种分别包含至少一个随机变量的组成元素,每次演练就像开盲盒一样由这些随机变量产生演练所需的异常,可使得每次混沌演练几乎是不会重复的,保证了混沌演练的高随机性,至少解决了现有技术中混沌演练随机性不足的问题,具备长期重复执行的意义。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请提供的混沌演练方法的一种流程示意图;
图2是本申请提供的随机演练盲盒工厂示意图;
图3是本申请提供的混沌演练方法的另一种流程示意图;
图4是本申请提供的日常巡检时序图;
图5是本申请提供的混沌演练方法的又一种流程示意图;
图6是本申请提供的基于流量分段及金丝雀分析确定演练结果的流程图;
图7是本申请提供的自动判断演练结果的逻辑示意图;
图8是本申请提供的混沌演练装置的组成结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请公开一种混沌演练方法、装置及计算机可读介质,用于针对异常注入的随机性问题、自动演练问题以及演练结果的自动判定等中的至少部分技术问题,提供对应的解决方案。
参见图1所示的混沌演练方法流程图,本申请提供的混沌演练方法至少包括以下处理流程:
步骤101、获取一次混沌演练包含的多种组成元素。
本申请实施例预先将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量。将一次混沌演练拆分成的多种组成元素,包括但不限于异常模板、运行时长、异常个数、运行模式中的部分或全部,每种组成元素对应包含至少一个可动态随机赋值的随机变量,每次演练就像开盲盒一样由这些随机变量产生演练过程中所需的异常。
其中,异常模板因异常类型/场景的不同,会对应包含不同的动态属性,也就是说,不同异常类型下的异常模板对应提供有不同的动态属性,异常模板提供的动态属性作为异常模板对应包含的随机变量。
以“丢包”这一异常类型/场景为例,丢包异常模板包含2个动态属性“丢包率”和“目标IP”,进一步以IP属性为例,IP表达方式为10.0.0.1/32,假如只做一个10.开头的B段内网IP,其它3位都有255种可能,最后一位有24种可能,IP表达式总体有4亿种可能,相应可在各种可能的取值中对IP属性进行随机取值,因此可将丢包异常模板包含的动态属性如“丢包率”、“目标IP”等,作为其随机变量。
运行时长表示一次混沌演练中异常持续的时间,可选的,本申请实施例将其配置成一个设定时间段内的随机的秒数,如果该时间段设定为10分钟,运行时长就会有600种可能,可以在600种可能中随机赋值。
异常个数是指一次混沌演练将执行多少种异常,具体表示一次混沌演练将执行的异常类型数,例如可以设定为一次演练执行8种异常,实际应用中,可在预设上限内进行随机赋值。
运行模式是指一次混沌演练中不同异常之间的执行方式,分为并行和串行两种执行方式,可进行执行方式的随机赋值。
根据上述设计,支持通过对一次演练的各种组成元素分别对应的随机变量进行随机赋值,使得每次生成的混沌演练几乎是不会重复的。
当需对业务服务或应用进行混沌演练时,相应可获取一次混沌演练包含的多种组成元素,例如,获取一次混沌演练包含的异常模板、运行时长、异常个数、运行模式中的至少部分组成元素。
步骤102、为不同组成元素包含的随机变量进行随机赋值,得到不同组成元素包含的随机变量的随机赋值结果。
在获取一次混沌演练包含的多种组成元素后,可进一步基于随机算法,对各种组成元素对应包含的随机变量进行随机赋值。
步骤103、根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常。
之后,在所述运行时长、异常个数和异常模式的当前随机赋值结果对应的条件约束下,基于对应异常类型下的异常模板不断产生异常。
参见图2的示例,图2提供了随机演练盲盒工厂示意图,该示例中,具体使用盲盒工厂进行随机变量的随机赋值并产生异常,例如其中针对一次随机演练,将运行时长、异常个数、运行模式分别随机赋值为“180s”、“3”、“并行”,相应从提供的多种异常类型,如CPU利用率过高、内存利用率过高、IO竞争、磁盘剩余空间不足、域名解析异常、网络延时、网络丢包、非预期返回报文中,随机选取3种异常类型,并对各异常类型对应的异常模板中的动态属性进行随机赋值,基于随机赋值结果,在运行时长的持续时间内,不断生成3种类型的异常。
图2中,百分比、读IO、写IO、目录、域名、延时、偏移、丢包率、目标IP等,分别为对应异常类型下异常模板包括的动态属性,也即为异常模板包括的随机变量,可在对应的取值范围内进行随机赋值。
步骤104、对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。
之后,可将针对当前的一次混沌演练生成的异常注入生产环境中,如按并行或串行方式将异常注入对应的生产环境中等,并在预先创建的混沌环境中基于注入的异常对业务服务或应用进行混沌演练。
综上所述,本申请提供的混沌演练方法、装置及计算机可读介质,将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量,当需进行混沌演练时,获取一次混沌演练包含的多种组成元素,为每种组成元素包含的随机变量进行随机赋值,根据每种组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常,并对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。本申请通过将一次混沌演练拆分为多种分别包含至少一个随机变量的组成元素,每次演练就像开盲盒一样由这些随机变量产生演练所需的异常,可使得每次混沌演练几乎是不会重复的,保证了混沌演练的高随机性,至少解决了现有技术中混沌演练随机性不足的问题,具备长期重复执行的意义。
在一实施例中,参见图3所示的混沌演练方法流程图,本申请提供的混沌演练方法,在步骤101即获取一次混沌演练包含的多种组成元素之前,还可以包括以下处理:
步骤301、基于配置的定时任务,定时触发日常巡检流程,基于日常巡检流程创建用于混沌演练的混沌环境,以基于创建的混沌环境进行异常注入与基于所注入异常的混沌演练,并在满足演练结束条件时结束演练进行混沌环境销毁。
本申请实施例以机器算力代替人工操作,并设计一种日常巡检机制来实现混沌演练的全自动执行。
具体的,可为每个需进行混沌演练的应用或业务服务配置一套定时任务,定期触发日常巡检。巡检分为准备环境、异常注入与演练、销毁环境三个阶段,其中异常注入与演练阶段是日常巡检的核心,其逻辑是利用盲盒工厂不断产生异常并发往机器进行演练,直到达到演练结束条件时才能结束。
日常巡检的时序图如图4所示,任务调度中心可通过守护进程维护定时任务,并基于定时任务定时启动日常巡检流程,日常巡检流程启动后,首先进入准备阶段,该阶段中,任务调度中心首先向云平台等混沌演练平台发送预设创建参数的参数数据,预设创建参数包括但不限于域名集、流量范围和演练次数,其中,域名集表示用于创建混沌环境的服务器对应的域名,流量范围表示用于参与混沌演练的流量信息,如用于参与混沌演练的终端/设备标识。收到对应的参数数据后,云平台以接收的参数数据为依据创建对应的混沌环境。之后,进入异常注入与演练阶段,该阶段中,任务调度中心利用盲盒工厂不断产生异常并发往云平台中创建有混沌环境的机器进行演练,直至满足演练结束条件时结束,如达到时间或次数上的阈值或发现业务服务/应用存在风险点或漏洞后结束演练。演练结束后进入销毁环境,可进一步销毁混沌环境。
本实施例通过以机器算力代替人工操作,并设计一种日常巡检机制实现混沌演练的全自动执行,克服了现有技术中通过基于命令行等人工方式进行演练所存在的弊端。
在一实施例中,参见图5所示的混沌演练方法流程图,本申请提供的混沌演练方法,还可以包括以下处理:
步骤501、基于流量分段处理及金丝雀分析,确定演练结果。
本申请实施例采用“流量分段+金丝雀分析”方式,进行演练结果的自动判定。参见图6,该过程可进一步实现为:
步骤601、从入口流量中划分出相同比例的两组流量,分别作为混沌组的流量和对照组的流量。
入口流量是指公网流量,互联网用户的流量一般是通过公网请求到直接面向公网的服务节点,服务之间的依赖通常是走内网,一方面内网网络条件更好,另一方面内网的成本更低。
可选的,本实施例先统计单位时间段内入口流量唯一标识的散列分布情况,并根据统计的散列分布情况,从入口流量中划分出相同比例的两组流量。例如统计24小时内所有流量对应的设备ID,根据ID首字母对这些标识进行分段,并划分出两组相同比例散列标识的流量,分别做为混沌组和对照组。
步骤602、获取基于混沌组的流量对服务进行混沌演练所对应的服务指标监控结果,作为混沌组指标。
其中,混沌组用于进行混沌演练,并在基于混沌组流量进行混沌演练时,对服务指标进行监控,得到混沌组指标。
监控的服务指标包括但不限于ueec(用户行为表现指标)、http返回码、应用程序日志量。
步骤603、获取服务在对照组流量对应的运行表现下的服务指标监控结果,作为对照组指标。
对照组用于提供对照作用,在监控混沌演练中混沌组流量对应的服务指标时,参见图7,同时监控服务在对照组流量对应的运行表现下的服务指标,得到对照组指标。
步骤604、根据混沌组指标与对照组指标的偏移量,确定演练结果。
之后,对混沌组指标与对照组指标进行金丝雀分析。具体确定两组监控指标中对应指标的偏移量,如果偏移量在设定范围内,则认为混沌演练下服务表现平稳,不存在问题或漏洞,否则,如果偏差较大,超出设定范围,则认为执行过的异常中存在问题/漏洞,即服务存在风险点,需要停止试验并销毁环境。
后续,可将演练的case、演练针对的业务服务/应用、参与演练的用户客户端的表现等信息作为依据,进行风险位置、类型等信息分析,以找出可能发生问题的风险点。
本实施例通过提出“流量分段+金丝雀分析”方式,实现了演练结果的自动判定,克服了现有技术无法自动判断演练结果的弊端。
对应于上述的混沌演练方法,本申请还提供一种混沌演练装置,该装置的组成结构如图8所示,包括:
获取单元10,用于获取一次混沌演练包含的多种组成元素;其中,预先将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量;
随机赋值单元20,用于为不同组成元素包含的随机变量进行随机赋值,得到每种组成元素包含的随机变量的随机赋值结果;
异常生成单元30,用于根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常;
异常注入与混沌演练单元40,用于对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。
在一实施方式中,获取单元10,具体用于:
获取一次混沌演练包含的异常模板、运行时长、异常个数、运行模式中的至少部分组成元素;
其中,不同异常类型下的异常模板对应提供有不同的动态属性,异常模板提供的动态属性作为所述异常模板包含的随机变量。
在一实施方式中,所述运行时长表示一次混沌演练中异常持续的时间,所述异常个数表示一次混沌演练将执行的异常类型数,所述异常模式表示一次混沌演练中不同异常之间的执行方式。
异常生成单元30,具体用于:
在所述运行时长、所述异常个数和所述异常模式的当前随机赋值结果对应的条件约束下,基于对应异常类型下的异常模板不断产生异常。
在一实施方式中,异常注入与混沌演练单元40,具体用于:将生成的异常注入对应的生产环境中,并在预先创建的混沌环境中基于注入的异常进行混沌演练。
在一实施方式中,上述装置还包括巡检单元,用于:基于配置的定时任务,定时触发日常巡检流程,基于日常巡检流程创建用于混沌演练的混沌环境,以基于创建的混沌环境进行异常注入与基于所注入异常的混沌演练,并在满足演练结束条件时结束演练进行混沌环境销毁。
在一实施方式中,巡检单元在基于日常巡检流程创建用于混沌演练的混沌环境时,具体用于:
由任务调度中心基于日常巡检流程向云平台发送预设创建参数的参数数据,以由云平台基于预设创建参数的参数数据创建混沌环境。
在一实施方式中,上述装置还包括:
演练结果确定单元,用于:基于流量分段处理及金丝雀分析,确定演练结果。
在一实施方式中,演练结果确定单元,具体用于:从入口流量中划分出相同比例的两组流量,分别作为混沌组的流量和对照组的流量;
获取基于混沌组的流量对服务进行混沌演练所对应的服务指标监控结果,作为混沌组指标;
获取服务在对照组流量对应的运行表现下的服务指标监控结果,作为对照组指标;
根据混沌组指标与对照组指标的偏移量,确定演练结果。
对于本申请实施例提供的混沌演练装置而言,由于其与上文方法实施例提供的混沌演练方法相对应,所以描述的比较简单,相关相似之处请参见上文方法实施例的说明即可,此处不再详述。
本申请还提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序包含用于执行如上文方法实施例提供的混沌演练方法的程序代码。
在本申请的上下文中,计算机可读介质(机器可读介质)可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。
综上所述,本申请实施例提供的混沌演练方法、装置及计算机可读介质,至少具备以下技术优势:
1)机器替代人工劳动,日常自动进行试验,自动判定结果,节约大量人力成本;
2)演练命令每次都重新生成,如果系统架构存在漏洞/风险,理论上长期坚持下去必能发现;
3)高扩展性,如果需要增加新演练,补充异常模板既可。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种混沌演练方法,其特征在于,所述方法包括:
获取一次混沌演练包含的多种组成元素;其中,预先将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量;
为不同组成元素包含的随机变量进行随机赋值,得到不同组成元素包含的随机变量的随机赋值结果;
根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常;
对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。
2.根据权利要求1所述的方法,其特征在于,所述获取一次混沌演练包含的多种组成元素,包括:
获取一次混沌演练包含的异常模板、运行时长、异常个数、运行模式中的至少部分组成元素;
其中,不同异常类型下的异常模板对应提供有不同的动态属性,异常模板提供的动态属性作为所述异常模板包含的随机变量。
3.根据权利要求2所述的方法,其特征在于,所述运行时长表示一次混沌演练中异常持续的时间,所述异常个数表示一次混沌演练将执行的异常类型数,所述异常模式表示一次混沌演练中不同异常之间的执行方式;
所述根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常,包括:
在所述运行时长、所述异常个数和所述异常模式的当前随机赋值结果对应的条件约束下,基于对应异常类型下的异常模板不断产生异常。
4.根据权利要求3所述的方法,其特征在于,所述对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练,包括:
将生成的异常注入对应的生产环境中,并在预先创建的混沌环境中基于注入的异常进行混沌演练。
5.根据权利要求1所述的方法,其特征在于,在所述获取一次混沌演练包含的多种组成元素之前,还包括:
基于配置的定时任务,定时触发日常巡检流程,基于日常巡检流程创建用于混沌演练的混沌环境,以基于创建的混沌环境进行异常注入与基于所注入异常的混沌演练,并在满足演练结束条件时结束演练进行混沌环境销毁。
6.根据权利要求1所述的方法,其特征在于,所述基于日常巡检流程创建用于混沌演练的混沌环境,包括:
任务调度中心基于日常巡检流程向云平台发送预设创建参数的参数数据,以由云平台基于预设创建参数的参数数据创建混沌环境。
7.根据权利要求1所述的方法,其特征在于,还包括:
基于流量分段处理及金丝雀分析,确定演练结果。
8.根据权利要求1所述的方法,其特征在于,所述基于流量分段处理及金丝雀分析,确定演练结果,包括:
从入口流量中划分出相同比例的两组流量,分别作为混沌组的流量和对照组的流量;
获取基于混沌组的流量对服务进行混沌演练所对应的服务指标监控结果,作为混沌组指标;
获取服务在对照组流量对应的运行表现下的服务指标监控结果,作为对照组指标;
根据混沌组指标与对照组指标的偏移量,确定演练结果。
9.一种混沌演练装置,其特征在于,所述装置包括:
获取单元,用于获取一次混沌演练包含的多种组成元素;其中,预先将一次混沌演练拆分为多种组成元素,每种组成元素对应包含至少一个随机变量;
随机赋值单元,用于为不同组成元素包含的随机变量进行随机赋值,得到每种组成元素包含的随机变量的随机赋值结果;
异常生成单元,用于根据不同组成元素包含的随机变量的随机赋值结果,生成当前的一次混沌演练所需的异常;
异常注入与混沌演练单元,用于对生成的异常进行异常注入处理,以基于注入的异常进行混沌演练。
10.一种计算机可读介质,其特征在于,其上存储有计算机程序,所述计算机程序包含用于执行如权利要求1-8任一项所述的方法的程序代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211390031.3A CN115834404A (zh) | 2022-11-08 | 2022-11-08 | 一种混沌演练方法、装置及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211390031.3A CN115834404A (zh) | 2022-11-08 | 2022-11-08 | 一种混沌演练方法、装置及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115834404A true CN115834404A (zh) | 2023-03-21 |
Family
ID=85527077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211390031.3A Pending CN115834404A (zh) | 2022-11-08 | 2022-11-08 | 一种混沌演练方法、装置及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115834404A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112291119A (zh) * | 2020-12-28 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 区块链网络测试方法、装置、介质及电子设备 |
CN113221096A (zh) * | 2021-06-04 | 2021-08-06 | 北银金融科技有限责任公司 | 一种在混沌工程中随机事件相关性分析方法及系统 |
CN113238950A (zh) * | 2021-05-20 | 2021-08-10 | 中信银行股份有限公司 | 一种分布式系统测试的系统及方法、存储介质、电子设备 |
CN114791846A (zh) * | 2022-05-23 | 2022-07-26 | 北京同创永益科技发展有限公司 | 一种针对云原生混沌工程实验实现可观测性的方法 |
-
2022
- 2022-11-08 CN CN202211390031.3A patent/CN115834404A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112291119A (zh) * | 2020-12-28 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 区块链网络测试方法、装置、介质及电子设备 |
CN113238950A (zh) * | 2021-05-20 | 2021-08-10 | 中信银行股份有限公司 | 一种分布式系统测试的系统及方法、存储介质、电子设备 |
CN113221096A (zh) * | 2021-06-04 | 2021-08-06 | 北银金融科技有限责任公司 | 一种在混沌工程中随机事件相关性分析方法及系统 |
CN114791846A (zh) * | 2022-05-23 | 2022-07-26 | 北京同创永益科技发展有限公司 | 一种针对云原生混沌工程实验实现可观测性的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lou et al. | Mining dependency in distributed systems through unstructured logs analysis | |
CN105205003A (zh) | 一种基于集群化系统的自动化测试方法和装置 | |
CN101369933A (zh) | 一种自动化测试方法及系统 | |
CN110543427B (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN109005162B (zh) | 工控系统安全审计方法及装置 | |
CN112446511A (zh) | 一种故障处置方法、装置、介质及设备 | |
EP3251298A1 (en) | Data extraction | |
WO2011013064A1 (en) | Identification of underutilized network devices | |
CN106406980B (zh) | 一种虚拟机的部署方法和装置 | |
CN112948271A (zh) | 一种代码测试方法、装置、设备及存储介质 | |
CN107203464B (zh) | 业务问题的定位方法以及装置 | |
US20140250333A1 (en) | Log file reduction according to problem-space network topology | |
CN109063070B (zh) | 一种数据库的操作方法及数据库服务器 | |
CN113328914A (zh) | 工控协议的模糊测试方法、装置、存储介质及处理器 | |
CN115834404A (zh) | 一种混沌演练方法、装置及计算机可读介质 | |
CN106559278B (zh) | 数据处理状态监控方法和装置 | |
Wang et al. | A model-based behavioral fuzzing approach for network service | |
CN110995747A (zh) | 一种分布式存储安全性分析方法 | |
CN114615036B (zh) | 异常行为检测方法、装置、设备和存储介质 | |
CN115065558A (zh) | Apt攻击的攻击流程溯源方法及装置 | |
CN115277392A (zh) | 电力调度数据网设备配置合规性核查系统及方法 | |
CN112579472B (zh) | 测试用例的自动生成方法及装置 | |
CN113918204A (zh) | 一种元数据脚本管理方法、装置、电子设备和存储介质 | |
CN113626288A (zh) | 故障处理方法、系统、装置、存储介质和电子设备 | |
CN117931369A (zh) | 基于Kubernetes的异常pod处理方法、装置、电子设备和存储介质 |
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 |