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

Azure Chaos Studio 中的目标和功能

在向 Azure 资源注入故障之前,该资源必须先启用相应的目标和功能。 目标和功能控制为故障注入启用哪些资源,以及哪些故障可以针对这些资源运行。

通过使用目标和功能 以及其他安全措施,可以避免使用 Azure Chaos Studio 意外或恶意的故障注入。 例如,使用目标和功能,可以允许 CPU 压力故障针对生产虚拟机运行,同时防止终止进程错误针对它们运行。

目标

混沌目标使 Chaos Studio 能够针对特定的目标类型与资源进行交互。 目标类型表示对资源注入故障的方法。 仅支持服务直接故障的资源类型有一个目标类型。 例如 Microsoft-CosmosDB ,Azure Cosmos DB 的类型。

支持服务直接故障和基于代理的错误的资源类型有两种目标类型。 一种目标类型用于服务直接故障(例如 Microsoft-VirtualMachine)。 另一个目标类型用于基于代理的故障(始终 Microsoft-Agent)。

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

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

Azure 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=2023-11-01"

返回以下 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"
}

后续步骤

现在,你已了解什么是目标和功能,接下来可以: