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

Azure Chaos Studio 中的目标和功能

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

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

目标

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

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

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

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB

Azure Cosmos DB 资源具有格式如下的子资源:

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB

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

功能

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

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

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine

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

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 属性用于定义想要在混沌试验中运行的故障。 若要了解此故障的参数的架构,可以 GET 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"
}

后续步骤

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