tencent cloud

云顾问 - 混沌演练

产品简介
产品概述
产品优势
应用场景
购买指南
购买说明
快速入门
控制台快速上手
API 快速上手
操作指南
经验库
演练任务
故障动作
护栏监控
标签
探针管理
故障动作库
计算
数据库
网络
容器
大数据
负载均衡
消息队列
专线
自定义动作
云直播
权限管理指南
概述
授权策略语法
可授权资源类型
服务授权与角色权限
子用户与授权
API 文档
History
Introduction
API Category
Making API Requests
Task APIs
Template Library APIs
Data Types
Error Codes
常见问题
产品特性问题
动作执行问题
探针问题 FAQ
相关协议
PRIVACY POLICY MODULE CHAOTIC FAULT GENERATOR
DATA PRIVACY AND SECURITY AGREEMENT MODULE CHAOTIC FAULT GENERATOR
联系我们

API 快速上手

PDF
聚焦模式
字号
最后更新时间: 2024-09-26 15:35:06
说明:
本节主要演示内容为,如何使用混沌官方 API 完成一次演练,混沌 API 遵循腾讯云通用API规范,其中公共参数以及请求方式可参考 API 调用方式

演练流程





创建演练:通过经验创建

准备经验 ID

方式一:控制台获取

登录 云顾问 > 混沌演练控制台,单击经验库管理,选择需要创建演练的经验,复制经验 ID 即可。

方式二:API 获取

参照 查询经验库列表 API 说明,获取创建演练所需要的 TemplateId。

接口请求

参照 从经验创建演练 API 说明,请求如下:
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
]
}
]
}
}

接口输出

{
"Response": {
"RequestId": "f0aee8ac-2ed3-4a7f-a25b-f0d7d228dd30",
"TaskId": 3256 # 演练 ID
}
}

创建演练:通过动作创建

准备资源对象 ID

参照 查询对象类型列表 API 说明,获取需要演练资源对象的 ObjectTypeId。

准备动作 ID

参照 获取动作库列表 API 说明,获取需要演练动作的 ActionId。

准备动作参数

参照 获取动作配置参数 API 说明,获取需要演练动作的参数。
说明:
这里提供了两个参数,用于创建动作演练:
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": []
}
}

接口请求

参照 从动作创建演练 API 说明,请求如下:
注意:
对于容器类资源对象,需要 {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\\"}" # 动作自定义参数,需要序列化
}

接口输出

{
"Response": {
"RequestId": "f0aee8ac-2ed3-4a7f-a25b-f0d7d228dd30",
"TaskId": 150
}
}
此时,点击控制台演练管理,则可以看到创建好的演练任务,也可以通过接口查询。
说明:
如果需要删除已经创建的演练,可以参考 删除演练 API 说明。

查询演练

接口请求

参照 查询演练 API 说明,请求如下:
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
}

执行演练

接口请求

参照 执行演练 API 说明,请求如下:
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"
}
}

执行动作

接口请求

参照 执行动作 API 说明,请求如下:
POST / HTTP/1.1
Host: cfg.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ExecuteTaskInstance
<公共请求参数>

{
"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:重试。

结束演练

接口请求

参照 结束演练 API 说明,请求如下:
POST / HTTP/1.1
Host: cfg.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ModifyTaskRunStatus
<公共请求参数>

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

接口输出

{
"Response": {
"RequestId": "e38eca72-e4ae-4a86-9696-7df399e672bd"
}
}
说明:
如果需要查看演练任务的日志,可以参考 获取演练过程日志 API 说明。


帮助和支持

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

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

文档反馈