有奖捉虫:行业应用 & 管理与支持文档专题 HOT
说明:
本节主要演示内容为,如何使用混沌官方 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
}
}
此时,点击控制台【演练管理】,则可以看到创建好的演练任务,也可以通过接口查询。
说明:
如果需要删除已经创建的演练,可以参考 删除演练 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 说明。
?


http://www.vxiaotou.com