Destinos e funcionalidades no Azure Chaos Studio

Antes de injetar uma falha em um recurso do Azure, primeiro o recurso precisa ter os destinos e as funcionalidades correspondentes habilitados. Os destinos e as funcionalidades controlam quais recursos estão habilitados para injeção de falhas e quais falhas podem ser executadas nesses recursos.

Usando destinos e funcionalidades juntamente com outras medidas de segurança, você pode evitar injeção de falha acidental ou mal-intencionada com o Azure Chaos Studio. Por exemplo, com destinos e funcionalidades, você pode permitir que a falha de pressão da CPU seja executada em suas máquinas virtuais de produção, evitando que a falha do processo de eliminação seja executada contra elas.

Destinos

Um destino de caos permite que o Chaos Studio interaja com um recurso para um tipo de destino específico. Um tipo de destino representa o método de injeção de falhas em um recurso. Os tipos de recurso que dão suporte apenas a falhas diretas de serviço têm um tipo de destino. Um exemplo é o tipo Microsoft-CosmosDB do Azure Cosmos DB.

Os tipos de recurso que dão suporte a falhas baseadas agente e service-direct têm dois tipos de destino. Um tipo de destino é para falhas diretas de serviço (por exemplo, Microsoft-VirtualMachine). O outro tipo de destino é para falhas baseadas em agente (sempre Microsoft-Agent).

Um destino é um recurso de extensão criado como um filho do recurso que está sendo integrado ao Chaos Studio. Exemplos são uma máquina virtual ou um grupo de segurança de rede. Um destino define o tipo de destino habilitado no recurso. Por exemplo, se você estiver integrando uma instância do Azure Cosmos DB com esta ID de recurso:

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

O recurso do Azure Cosmos DB tem um recurso filho formatado como este exemplo:

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

Somente os recursos com um destino criado fora deles podem ser destinados à injeção de falhas com o Chaos Studio.

Funcionalidades

Uma funcionalidade permite que o Chaos Studio execute uma falha específica em um recurso, como desligar uma máquina virtual. Os recursos são exclusivos por tipo de destino. Eles representam a falha que habilitam – por exemplo, CPUPressure-1.0. Para entender todas as falhas disponíveis e seus nomes de funcionalidade e tipos de destino correspondentes, consulte a Biblioteca de falhas do Chaos Studio.

Uma funcionalidade é um recurso de extensão criado como um filho de um destino. Por exemplo, se você estiver habilitando a falha de desligamento em uma máquina virtual com uma ID de destino direta ao serviço:

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

O recurso de destino tem um recurso filho formatado como este exemplo:

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

Um experimento só pode injetar falhas em destinos integrados com as funcionalidades correspondentes habilitadas.

Listar nomes e parâmetros de funcionalidade

Para referência, uma lista de nomes de funcionalidade, URNs de falha e parâmetros está disponível em nossa biblioteca de falhas. Você pode usar a resposta HTTP para criar uma funcionalidade ou fazer um GET em um recurso existente para obter essas informações sob demanda. Por exemplo, para executar um GET em um recurso de desligamento de VM:

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"

Retorna o seguinte 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"
}

A propriedade properties.urn é usada para definir a falha que você deseja executar em um experimento de caos. Para entender o esquema dos parâmetros desta falha, você pode OBTER o esquema referenciado por properties.parametersSchema:

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

Retorna o seguinte JSON:

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

Próximas etapas

Agora que você entende quais são os destinos e os recursos, você está pronto para: