tencent cloud

智能顾问

产品动态
产品简介
产品概述
功能介绍
产品优势
应用场景
客户案例
购买指南
快速入门
使用智能顾问进行混沌演练
操作指南
智能顾问-云架构操作指南
智能顾问-云巡检操作指南
智能顾问-混沌演练操作指南
智能顾问-数字资产操作指南
权限管理
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Task APIs
Cloud Architecture Console APIs
Data Types
Error Codes
常见问题
智能顾问常见问题
智能顾问-云巡检常见问题
智能顾问-云架构常见问题
智能顾问-混沌演练常见问题
相关协议
Tencent Cloud Smart Advisor Service Level Agreement
PRIVACY POLICY MODULE CHAOTIC FAULT GENERATOR
DATA PRIVACY AND SECURITY AGREEMENT MODULE CHAOTIC FAULT GENERATOR
联系我们
文档智能顾问快速入门使用智能顾问进行混沌演练

使用智能顾问进行混沌演练

PDF
聚焦模式
字号
最后更新时间: 2026-03-31 21:53:51

一、在云架构上进行可视化故障注入演练

混沌演练是智能顾问-云架构中的多款治理应用之一,支持用户基于业务云架构发起可视化的模拟故障注入。以下将以 “MySQL 主节点故障”演练场景为例,介绍如何快速通过云架构-混沌演练创建一个演练任务。

步骤一:新建演练

1. 登录 智能顾问控制台,首先通过目录进入业务架构图。在页面上方选择治理模式,在页面下方点击混沌演练。如何构建云架构,请参考 架构图绘制
2. 创建演练任务,目前共提供三种演练任务创建方式。
快速创建演练
点击架构大屏上方操作栏中的新建演练,或演练任务页中的新建演练,均可快速创建演练。
通过动作故障库发起演练。
故障动作库页,选择动作库中的故障动作,点击创建演练
通过演练经验库发起演练。
演练经验库页,点击行业经验卡片,在行业经验卡片中点击去使用
3. 进入新建演练页,进入第一步“基本信息”,选择演练资源所在的地域并填写演练信息和人员组织信息。
4. 进入创建演练第二步。演练编排:首先选择要注入故障的资源对象,然后点击添加动作,最后选择故障注入的模式。
说明:
一个动作组内仅可针对同一种对象类型进行故障注入操作,支持添加多个动作和拖拽编排演练动作。
支持复制、增加多个动作组。
选择 MySQL 主节点故障动作。
设置动作参数,支持在通用参数中设置动作前后等待时间,控制演练节奏。
点击添加实例,选择要注入故障的实例资源,这里选择 MySQL 实例。
支持按实例类型、实例名称等进行搜索;
支持批量添加实例。
5. 全局配置:支持配置和演练动作相对应的监控指标,便于观测演练效果;支持配置护栏策略,触发后演练暂停,保障业务安全。配置完成后点击提交
6. 完成演练创建后,点击演练详情,可校对演练信息,并实施下一步演练执行工作,如需调整,请点击编辑(演练开始后将无法编辑)。若关闭演练详情页,也可通过点击架构大屏上方操作栏中的总计演练任务,在演练任务页中检索已创建的演练,点击演练名称再次进入演练详情页。

步骤二:执行演练

1. 点击演练场景中动作名称右侧的执行开始演练,亦可点击云架构图上方的快捷操作栏中的开始演练
说明:
创建演练过程中,执行方式若选自动执行,则此处点击执行后系统将会自动开始执行动作,无需人工介入;执行方式若选手动推进,则点击执行后仍需要在动作组中单击开始。
若某个动作执行失败,则系统自动切换为手动推进方式,需要人工介入手动单击动作组中的执行或者跳过
2. 演练执行过程中,正在故障注入中的云架构节点将闪烁提示当前的故障注入状态(未开始/注入中/注入成功/注入失败),演练过程中可点击架构图上方暂停演练结束演练操作。
3. 在演练执行过程中,可在演练场景中点击查看演练日志,及点击演练动作区域,查看动作执行情况。同时在监控指标处可查看演练进行中的过程监控数据,判断系统在故障注入之后的稳态表现。

步骤三:结束演练

1. 故障动作执行成功,点击结束演练。
2. 填写演练结论,记录演练过程中出现的问题、应急预案措施等,便于后续复盘分析

步骤四:生成演练报告

1. 演练结束后,可以生成本次演练报告。可在演练详情演练任务演练报告页面中,点击生成报告,均支持一键生成预览版本的在线报告,内容包括:业务架构、演练结论、演练概况、演练执行信息等。
说明:
1. 在线报告不支持编辑和下载,报告归档至数据资产后支持下载、分享等操作。
2. 演练结论可在演练详情页的演练快捷操作栏进行编辑,内容更新后需重新生成报告,演练报告其他内容暂不支持编辑。
2. 点击报告归档,将报告归档至 数据资产 > 归档报告
3. 点击前往数字资产,在归档报告页面中可查看演练报告。
4. 报告归档后,支持对报告进行查看、下载、共享、删除操作。

二、(可选)使用混沌演练 API 进行故障注入演练

本节主要演示内容为,如何使用混沌演练 API 完成一次演练,混沌演练 API 遵循腾讯云通用API规范,其中公共参数以及请求方式可参考智能顾问-混沌演练 API 文档。
演练流程如下:
1. 创建演练
2. 查询演练
3. 执行演练
4. 执行动作
5. 结束演练

步骤一:创建演练

通过经验创建演练方式如下:

1. 准备经验 ID
方式一:控制台获取。登录 智能顾问-混沌演练控制台,点击经验库管理,选择需要创建演练的经验,复制经验 ID 即可。
方式二:API 获取。获取创建演练所需要的 TemplateId。
2. 接口请求
请求如下:
POST / HTTP/1.1
Host: cfg.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: CreateTaskFromTemplate
<公共请求参数>

{
"TemplateId": 626, # 上步查询到的经验 ID
"TaskConfig": {
"TaskTitle": "这是一个从 API 创建演练的示例", # 演练名称,不填默认取经验名称
"TaskGroupsConfig": [
{
"TaskGroupInstances": [
"ins-xxxxxxxx" # 动作组关联的实例对象 ID,例如 CVM,CLB 等资源 ID
]
}
]
}
}
3. 接口输出
{
"Response": {
"RequestId": "f0aee8ac-2ed3-4a7f-a25b-f0d7d228dd30",
"TaskId": 3256 # 演练 ID
}
}

通过动作创建演练方式如下:

1. 准备资源对象 ID,获取需要演练资源对象的 ObjectTypeId。
2. 准备动作 ID,获取需要演练动作的 ActionId。
3. 准备动作参数,获取需要演练动作的参数。
说明:
这里提供了两个参数,用于创建动作演练:
TaskActionGeneralConfiguration:通用参数,可选择性传入, 为空时则使用动作默认参数。
TaskActionCustomConfiguration:自定义参数。对于可选参数,已设置默认值。对于必选参数,如果默认值为空,则必须显式传递。
参数应以 {"key1": "value1", "key2": "value2"} 的形式表示,并需要序列化后传入,例如:"{\\"domain\\": \\"www.test.com\\"}"
动作参数具体作用,可以参考控制台,比较直观。
此接口返回如下:
{
"Response": {
"RequestId": "3e7fa74e-9045-4f01-88d4-ee158affe905",
"Common": [ # 通用参数,对应后面动作创建演练中 TaskActionGeneralConfiguration
{
"ActionId": 466,
"ActionName": "DNS篡改",
"ConfigDetail": [
{
"Type": "input",
"Lable": "动作别名",
"Field": "AliasTitle", # 动作参数 key
"DefaultValue": "", # 动作参数默认值
"Config": "{}",
"Required": 0, # 是否必填 (0 -- 否 1-- 是)
"Validate": "{}",
"Visible": "{}"
},
{
"Type": "number",
"Lable": "前置等待时间(s)",
"Field": "PreTimeWait",
"DefaultValue": "0",
"Config": "{\\"max\\": 86400, \\"min\\": 0, \\"tooltip\\": \\"仅限用于自动推进模式\\"}",
"Required": 0,
"Validate": "{}",
"Visible": "{}"
},
{
"Type": "number",
"Lable": "后置等待时间(s)",
"Field": "AfterTimeWait",
"DefaultValue": "0",
"Config": "{\\"max\\": 86400, \\"min\\": 0, \\"tooltip\\": \\"仅限用于自动推进模式\\"}",
"Required": 0,
"Validate": "{}",
"Visible": "{}"
},
{
"Type": "number",
"Lable": "动作超时时间(s)",
"Field": "ActionTimeout",
"DefaultValue": "1800",
"Config": "{\\"max\\": 86400, \\"min\\": 0, \\"tooltip\\": \\"动作的超时时间\\"}",
"Required": 0,
"Validate": "{}",
"Visible": "{\\"op\\": \\"<\\", \\"type\\": \\"need_insert\\", \\"value\\": 0, \\"relatedField\\": \\"ActionTimeout\\"}"
}
]
}
],
"Results": [ # 自定义参数,对应后面动作创建演练中 TaskActionCustomConfiguration
{
"ActionId": 466,
"ActionName": "DNS篡改",
"ConfigDetail": [
{
"Type": "number",
"Lable": "持续时间(s)",
"Field": "duration",
"DefaultValue": "180",
"Config": "{\\"max\\": 1800, \\"min\\": 0}",
"Required": 1,
"Validate": "{}",
"Visible": "{}"
},
{
"Type": "input",
"Lable": "域名",
"Field": "domain", # 动作参数 key
"DefaultValue": "", # 动作参数默认值
"Config": "{}",
"Required": 1, # 是否必填 (0 -- 否 1-- 是)
"Validate": "{}",
"Visible": "{}"
},
{
"Type": "input",
"Lable": "IP",
"Field": "ip",
"DefaultValue": "",
"Config": "{}",
"Required": 1,
"Validate": "{}",
"Visible": "{}"
}
]
}
],
"ResourceOffline": []
}
}
4. 接口请求
请求如下:
注意:
对于容器类资源对象,需要 {ClusterId} + {NodeName} + {NameSpace} + {PodName} 四元组才能确定一个唯一的实例。在参数 TaskInstances 传入时,需要将这个 map 序列化。
例如:"{"ClusterId":"cls-xxxx","PodName":"pod-xxxxxx","NodeName":"xxxxxxxx","NameSpace":"default-xxxxxx"}"
POST / HTTP/1.1
Host: cfg.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: CreateTaskFromTemplate
<公共请求参数>

{
"TaskActionId": 462, # 动作 ID
"TaskInstances": ["ins-xxxxxxxx"], # 资源对象实例 ID
"TaskTitle": "网络丢包", # 演练名称
"TaskDescription": "这是从openapi创建的演练", # 演练描述
"TaskActionCustomConfiguration": "{\\"interfaces\\": \\"eth0\\"}" # 动作自定义参数,需要序列化
}
5. 接口输出
{
"Response": {
"RequestId": "f0aee8ac-2ed3-4a7f-a25b-f0d7d228dd30",
"TaskId": 150
}
}
此时,点击控制台演练管理,则可以看到创建好的演练任务,也可以通过接口查询。

步骤二:查询演练

接口请求

请求如下:
POST / HTTP/1.1
Host: cfg.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: DescribeTask
<公共请求参数>

{
”RequestId“: "02185fc4-0e8f-49ed-a8d5-6d0788d0e60c",
"TaskId": "3256" # 上述创建演练时返回的演练 ID
}

接口输出

{
"RequestId": "02185fc4-0e8f-49ed-a8d5-6d0788d0e60c",
"Task": {
"TaskId": 3256,
"TaskTitle": "这是一个从API创建演练的示例",
"TaskDescription": "测试一个空动作",
"TaskTag": "",
"TaskStatus": 1002,
"TaskStatusType": 0,
"TaskProtectStrategy": null,
"TaskCreateTime": "2023-08-14 11:55:02",
"TaskUpdateTime": "2023-08-14 14:48:00",
"TaskStartTime": "2023-08-14 14:48:01",
"TaskEndTime": null,
"TaskExpect": null,
"TaskSummary": null,
"TaskMode": 1,
"TaskRegionId": 1,
"TaskPauseDuration": 60,
"TaskOwnerUin": "100032429988",
"TaskPlanId": null,
"TaskPlanTitle": null,
"TaskGroups": [
{
"TaskGroupActions": [
{
"TaskGroupInstances": [
{
"TaskGroupInstanceId": 24375, # 任务动作实例 ID
"TaskGroupInstanceObjectId": "ins-bfydnvta", # 资源对象 ID
"TaskGroupInstanceStatus": 3001,
"TaskGroupInstanceStatusType": 0,
"TaskGroupInstanceExecuteLog": null,
"TaskGroupInstanceStartTime": null,
"TaskGroupInstanceEndTime": null,
"TaskGroupInstanceCreateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceUpdateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceIsRedo": false,
"TaskGroupInstanceExecuteTime": null
},
{
"TaskGroupInstanceId": 24376, # 任务动作实例 ID
"TaskGroupInstanceObjectId": "ins-ehxmry76", # 资源对象 ID
"TaskGroupInstanceStatus": 3001,
"TaskGroupInstanceStatusType": 0,
"TaskGroupInstanceExecuteLog": null,
"TaskGroupInstanceStartTime": null,
"TaskGroupInstanceEndTime": null,
"TaskGroupInstanceCreateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceUpdateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceIsRedo": false,
"TaskGroupInstanceExecuteTime": null
}
],
"TaskGroupActionId": 11395, # 任务动作 ID
"ActionId": 12,
"ActionTitle": "空操作",
"ActionApiType": 1,
"ActionType": "平台",
"ActionRisk": "低风险",
"ActionAttribute": 1,
"TaskGroupActionOrder": 1,
"TaskGroupActionGeneralConfiguration": "{\\"AliasTitle\\": \\"\\", \\"PreTimeWait\\": 0, \\"ActionTimeout\\": 1800, \\"AfterTimeWait\\": 0}",
"TaskGroupActionCustomConfiguration": "{}",
"TaskGroupActionStatus": 2002,
"TaskGroupActionStatusType": 0,
"TaskGroupActionRandomId": 156878,
"TaskGroupActionRecoverId": 193278,
"TaskGroupActionExecuteId": null,
"TaskGroupActionCreateTime": "2023-08-14 11:55:02",
"TaskGroupActionUpdateTime": "2023-08-14 14:48:00",
"IsExecuteRedo": false,
"TaskGroupActionExecuteTime": null
},
{
"TaskGroupInstances": [
{
"TaskGroupInstanceId": 24377, # 任务动作实例 ID
"TaskGroupInstanceObjectId": "ins-bfydnvta", # 资源对象 ID
"TaskGroupInstanceStatus": 3001,
"TaskGroupInstanceStatusType": 0,
"TaskGroupInstanceExecuteLog": null,
"TaskGroupInstanceStartTime": null,
"TaskGroupInstanceEndTime": null,
"TaskGroupInstanceCreateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceUpdateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceIsRedo": false,
"TaskGroupInstanceExecuteTime": null
},
{
"TaskGroupInstanceId": 24378, # 任务动作实例 ID
"TaskGroupInstanceObjectId": "ins-ehxmry76", # 资源对象 ID
"TaskGroupInstanceStatus": 3001,
"TaskGroupInstanceStatusType": 0,
"TaskGroupInstanceExecuteLog": null,
"TaskGroupInstanceStartTime": null,
"TaskGroupInstanceEndTime": null,
"TaskGroupInstanceCreateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceUpdateTime": "2023-08-14 14:48:00",
"TaskGroupInstanceIsRedo": false,
"TaskGroupInstanceExecuteTime": null
}
],
"TaskGroupActionId": 11396, # 任务动作ID
"ActionId": 13,
"ActionTitle": "空操作(回滚)",
"ActionApiType": 1,
"ActionType": "平台",
"ActionRisk": "低风险",
"ActionAttribute": 2,
"TaskGroupActionOrder": 2,
"TaskGroupActionGeneralConfiguration": "{\\"PreTimeWait\\": 0, \\"ActionTimeout\\": 1800, \\"AfterTimeWait\\": 0}",
"TaskGroupActionCustomConfiguration": "{}",
"TaskGroupActionStatus": 2001,
"TaskGroupActionStatusType": 0,
"TaskGroupActionRandomId": 193278,
"TaskGroupActionRecoverId": null,
"TaskGroupActionExecuteId": 156878,
"TaskGroupActionCreateTime": "2023-08-14 11:55:02",
"TaskGroupActionUpdateTime": "2023-08-14 11:55:02",
"IsExecuteRedo": false,
"TaskGroupActionExecuteTime": null
}
],
"TaskGroupId": 4684, # 动作组 ID
"TaskGroupTitle": "abc",
"TaskGroupDescription": "abc",
"TaskGroupOrder": 1,
"TaskGroupMode": 1,
"TaskGroupInstanceList": [
"ins-bfydnvta",
"ins-ehxmry76"
],
"ObjectTypeId": 1,
"TaskGroupCreateTime": "2023-08-14 11:55:02",
"TaskGroupUpdateTime": "2023-08-14 11:55:02",
"TaskGroupInstancesExecuteRule": [
{
"TaskGroupInstancesExecuteMode": 1
}
],
"TaskGroupSelectedInstanceList": [
"ins-bfydnvta",
"ins-ehxmry76"
],
"TaskGroupDiscardInstanceList": []
}
],
"TaskMonitors": [],
"TaskPolicy": null,
"Tags": []
},
"ReportInfo": null
}

步骤三:执行演练

接口请求

请求如下:
POST / HTTP/1.1
Host: cfg.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ExecuteTask
<公共请求参数>

{
"TaskId": "3256"
}

接口输出

{
"Response": {
"RequestId": "46924e75-a149-4130-aac0-853dbf0abea9"
}
}

步骤四:执行动作

接口请求

请求如下:
{
"TaskId": "3256",
"TaskActionId": "11396", # 任务动作 ID(从演练查询返回中获取)
"TaskInstanceIds": [
"xxxxxxxx-01", # 任务动作实例 ID(从演练查询返回中获取)
"xxxxxxxx-02"
],
"IsOperateAll": true, # 是否执行整个任务,这里取 true 的时候,TaskInstanceIds 会被忽略,创建演练时传入的所有实例,都会被执行
"ActionType": 2, # 2--执行 3--跳过 5--重试
"TaskGroupId": 4684, # 动作组 ID(从演练查询返回中获取)
}

接口输出

{
"Response": {
"RequestId": "6549ed1a-911f-46dd-b6cd-2c02d5bd180f"
}
}
说明:
这里的动作执行,支持跳过和重试操作,可以通过调整ActionType 的值来控制:
3:跳过。
5:重试。

步骤五:结束演练

接口请求

请求如下:
{
"TaskId": 3256, # 演练任务 ID
"Status": 1004, # 结束状态码,不用修改
"Summary": "本次演练符合预期", # 演习结论
"IsExpect": true, # 执行结果是否符合预期
}

接口输出

{
"Response": {
"RequestId": "e38eca72-e4ae-4a86-9696-7df399e672bd"
}
}

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈