你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Chaos Studio 中的目标和功能

在向 Azure 资源注入故障之前,该资源必须先启用相应的目标和功能。 目标和功能控制为故障注入启用哪些资源,以及哪些故障可以针对这些资源运行。 使用目标和功能以及其他安全措施可以避免使用 Chaos Studio 意外或恶意故障注入。 例如,使用目标和功能,可以允许 CPU 压力故障针对生产虚拟机运行,同时防止终止进程故障针对这些虚拟机运行。

目标

混沌目标使 Chaos Studio 能够针对特定的目标类型与资源进行交互。 目标类型表示对资源注入故障的方法。 仅支持服务直接故障的资源类型有一个目标类型,例如 Azure Cosmos DB 为 Microsoft-CosmosDB 类型。 支持服务直接故障和基于代理的故障的资源类型有两个目标类型:一种用于服务直接故障(例如 Microsoft-VirtualMachine),另一种用于基于代理的故障(始终为 Microsoft-Agent)。

目标是作为要载入 Chaos Studio 的资源的子级创建的扩展资源(例如虚拟机或网络安全组)。 目标定义在资源上启用的目标类型。 例如,如果载入此资源 ID 的 Cosmos数据库实例:

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB

Cosmos DB 资源将具有格式如下所示的子资源:

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB

只有目标是从中创建的资源才能通过 Chaos Studio 进行故障注入。

功能

功能使 Chaos Studio 能够针对资源运行特定故障,例如关闭虚拟机。 每个目标类型的功能都是唯一的,表示它们启用的故障,例如 CPUPressure-1.0访问 Chaos Studio 故障库,了解所有可用故障及其相应的功能名称和目标类型。

功能是作为目标的子级创建的扩展资源。 例如,如果在具有服务直接目标 ID 的虚拟机上启用关闭故障:

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine

目标资源将具有格式如下所示的子资源:

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0

试验只能在启用了相应功能的已加入目标上注入故障。

列出功能名称和参数

作为参考,故障库中提供了功能名称、故障 URN 和参数的列表,但你可以使用 HTTP 响应来创建功能,或者对现有功能执行 GET,以按需获取此信息。 例如,对 VM 关闭功能执行 GET:

az rest --method get --url "https://management.azure.com/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2021-08-11-preview"

将返回以下 JSON:

{
  "id": "/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0",
  "name": "shutdown-1.0",
  "properties": {
    "description": null,
    "name": "shutdown-1.0",
    "parametersSchema": "https://schema-tc.eastus.chaos-prod.azure.com/targetTypes/Microsoft-VirtualMachine/capabilityTypes/Shutdown-1.0/parametersSchema.json",
    "publisher": "Microsoft",
    "targetType": "VirtualMachine",
    "type": "shutdown",
    "urn": "urn:csci:microsoft:virtualMachine:shutdown/1.0",
    "version": "1.0"
  },
  "resourceGroup": "myRG",
  "systemData": {
    "createdAt": "2021-09-15T23:00:00.826575+00:00",
    "lastModifiedAt": "2021-09-15T23:00:00.826575+00:00"
  },
  "type": "Microsoft.Chaos/targets/capabilities"
}

properties.urn 属性用于定义想要在混沌试验中运行的故障。 若要了解此故障参数的架构,可以获取 properties.parametersSchema 引用的架构。

az rest --method get --url "https://schema-tc.eastus.chaos-prod.azure.com/targetTypes/Microsoft-VirtualMachine/capabilityTypes/Shutdown-1.0/parametersSchema.json"

返回以下 JSON:

{
  "$schema": "https://json-schema.org/draft-07/schema",
  "properties": {
    "abruptShutdown": {
      "type": "boolean"
    },
    "restartWhenComplete": {
      "type": "boolean"
    }
  },
  "type": "object"
}

后续步骤

了解什么是目标和功能后,即可: