你当前正在访问 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"
}
后续步骤
现在你了解了什么是目标和功能,已经可以: