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

使用 REST API 与 Chaos Studio 交互

如果要将 Azure Chaos Studio 集成到 CI/CD 管道中,或者只是更想使用直接 API 调用来与 Azure 资源交互,则可以使用 Chaos Studio 的 REST API。 有关完整的 API 参考,请访问 Azure Chaos Studio REST API 参考。 本页提供了有关有效使用 REST API 的示例,并不用作全面的参考。

本文假设你使用 Azure CLI 执行这些命令,但你可以使它们适应其他标准 REST 客户端。

可以使用 Chaos Studio REST API 执行以下操作:

  • 创建、修改和删除试验
  • 查看、启动和停止试验执行
  • 查看和管理目标
  • 在 Chaos Studio 资源提供程序中注册和注销订阅
  • 查看可用的资源提供程序操作。

使用 az cli 实用工具从命令行执行这些操作。

提示

若要通过 AZ CLI 获取更详细的输出,请将 --verbose 追加到每个命令的末尾。 当命令执行时,此变量将返回更多元数据,包括 x-ms-correlation-request-id,这有助于调试。

这些示例已通过正式发布的 Chaos Studio API 版本 2023-11-01 进行了审核。

资源提供程序命令

本部分列出了 Chaos Studio 提供程序命令,这些命令可帮助你了解资源提供程序的状态和可用操作。

列出有关 Microsoft.Chaos 资源提供程序的详细信息

此命令显示 Chaos 资源提供程序的可用 API 版本和区域可用性等信息。 此命令所需的最新 api-version 可能与 Chaos 资源提供程序操作的 api-version 不同。

az rest --method get --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Chaos?api-version={apiVersion}" 

列出 Microsoft.Chaos 资源提供程序的所有操作

az rest --method get --url "https://management.azure.com/providers/Microsoft.Chaos/operations?api-version={apiVersion}" 

概念和功能

这些操作帮助你查看可用的目标和功能,并将其添加到目标。

列出区域中可用的所有目标类型

az rest --method get --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Chaos/locations/{locationName}/targetTypes?api-version={apiVersion}" 

列出可用于目标类型的所有功能

az rest --method get --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Chaos/locations/{locationName}/targetTypes/{targetType}/capabilityTypes?api-version={apiVersion}" 

将资源作为目标启用

若要在试验中使用资源,需要将其作为目标启用。

az rest --method put --url "https://management.azure.com/{resourceId}/providers/Microsoft.Chaos/targets/{targetType}?api-version={apiVersion}" --body "{'properties':{}}" 

为目标启用功能

资源已作为目标启用后,需要指定允许哪些功能(对应于故障)。

az rest --method put --url "https://management.azure.com/{resourceId}/providers/Microsoft.Chaos/targets/{targetType}/capabilities/{capabilityName}?api-version={apiVersion}" --body "{'properties':{}}" 

查看为目标启用了哪些功能

已启用目标和功能后,可以查看已启用的功能。 这对于构造混沌试验非常有用,因为它包含每个故障的参数架构。

az rest --method get --url "https://management.azure.com/{resourceId}/providers/Microsoft.Chaos/targets/{targetType}/capabilities?api-version={apiVersion}"

实验

这些操作可帮助你查看、运行和管理试验。

列出某个资源组中的所有试验

az rest --method get --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Chaos/experiments?api-version={apiVersion}"

按名称获取试验的配置详细信息

az rest --method get --url "https://management.azure.com/{experimentId}?api-version={apiVersion}"

创建或更新试验

az rest --method put --url "https://management.azure.com/{experimentId}?api-version={apiVersion}" --body @{experimentName.json} 

注意:如果收到 UnsupportedMediaType 错误,请确保引用的 JSON 文件有效,并尝试其他方法来引用 .json 文件。 不同的命令行解释器可能需要不同的文件引用方法。 另一种常见语法是 --body "@experimentName.json"

删除试验

az rest --method delete --url "https://management.azure.com/{experimentId}?api-version={apiVersion}" 

启动试验

az rest --method post --url "https://management.azure.com/{experimentId}/start?api-version={apiVersion}"

获取试验的所有执行

az rest --method get --url "https://management.azure.com/{experimentId}/executions?api-version={apiVersion}" 

列出特定一次试验执行的详细信息

如果试验失败,这可用于查找错误消息和失败的特定目标、分支、步骤或操作。

az rest --method post --url "https://management.azure.com/{experimentId}/executions/{executionDetailsId}/getExecutionDetails?api-version={apiVersion}" 

取消(停止)试验

az rest --method post --url "https://management.azure.com/{experimentId}/cancel?api-version={apiVersion}" 

其他有用的命令和提示

虽然这些命令不专门使用 Chaos Studio API,但它们对于有效使用 Chaos Studio 很有帮助。

使用 Azure Resource Graph 查看 Chaos Studio 资源

可以使用 Azure Resource Graph REST API 查询与 Chaos Studio 关联的资源,例如目标和功能。

 az rest --method post --url "https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01" --body "{'query':'chaosresources'}"

或者,可以使用 Azure Resource Graph 的 az cli 扩展

az graph query -q "chaosresources | summarize count() by type"

例如,如果想要按资源组列出订阅中所有处于活动状态的 Chaos Studio 目标的摘要,可以使用:

az graph query -q "chaosresources | where type == 'microsoft.chaos/targets' | summarize count() by resourceGroup"

筛选和查询

与其他 Azure CLI 命令一样,可以将 --query--filter 参数与 Azure CLI rest 命令配合使用。 例如,若要查看特定目标类型的可用功能类型的表,请使用以下命令:

az rest --method get --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Chaos/locations/{locationName}/targetTypes/{targetType}/capabilityTypes?api-version=2023-11-01" --output table --query 'value[].{name:name, faultType:properties.runtimeProperties.kind, urn:properties.urn}'

参数定义

本部分介绍本文档中使用的参数,以及如何填写这些参数。

参数名称 定义 查找 示例
{apiVersion} 执行提供的命令时要使用的 API 版本 可在 API 文档中找到 2023-11-01
{experimentId} 用于试验的 Azure 资源 ID 可以在 Chaos Studio 试验页上或通过对 /experiments 终结点的 GET 调用查找 /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Chaos/experiments/my-chaos-experiment
{experimentName.json} 包含混沌试验配置的 JSON 由用户生成 experiment.json(有关完整示例文件,请参阅 CLI 教程
{subscriptionId} 目标资源所在的订阅 ID Azure 门户的“订阅”页中或通过运行 az account list --output table 查找 aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
{resourceGroupName} 目标资源所在的资源组的名称 “资源组”页中或通过运行 az group list --output table 查找 my-resource-group
{executionDetailsId} 试验执行的执行 ID Chaos Studio 试验页中或通过对 /executions 终结点的 GET 调用查找 C69E7FCD-1548-47E5-9DDA-92A5DD60E610
{targetType} 相应资源的目标类型 故障提供程序列表中或通过对 /locations/{locationName}/targetTypes 终结点的 GET 调用查找 Microsoft-VirtualMachine
{capabilityName} 单个功能资源的名称,扩展目标资源 故障参考文档中或通过对 capabilityTypes 终结点的 GET 调用查找 Shutdown-1.0
{locationName} 资源或区域终结点的 Azure 区域 使用 az account list-locations --output table 查找帐户的所有可能区域 eastus