Destinos e recursos no Azure Chaos Studio

Antes de poder injetar uma falha contra um recurso do Azure, o recurso deve primeiro ter destinos e recursos correspondentes habilitados. Os destinos e os recursos controlam quais recursos estão habilitados para injeção de falhas e quais falhas podem ser executadas em relação a esses recursos.

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

Targets

Um destino de caos permite que o Chaos Studio interaja com um recurso para um determinado tipo de destino. Um tipo de destino representa o método de injeção de falhas contra um recurso. Os tipos de recursos que suportam apenas falhas diretas de serviço têm um tipo de destino. Um exemplo é o Microsoft-CosmosDB tipo do Azure Cosmos DB.

Os tipos de recursos que suportam falhas diretas de serviço e baseadas em agente 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 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/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB

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

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

Apenas recursos com um alvo criado a partir deles são direcionados para injeção de falhas com o Chaos Studio.

Capacidades

Um recurso 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. Representam a culpa que permitem, por exemplo, CPUPressure-1.0. Para entender todas as falhas disponíveis e seus nomes de recursos e tipos de destino correspondentes, consulte a biblioteca de falhas do Chaos Studio.

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

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/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/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0

Um experimento só pode injetar falhas em alvos integrados com os recursos correspondentes ativados.

Listar nomes e parâmetros de recursos

Para referência, uma lista de nomes de capacidade, URNs de falha e parâmetros está disponível em nossa biblioteca de falhas. Você pode usar a resposta HTTP para criar um recurso ou fazer um GET em um recurso existente para obter essas informações sob demanda. Por exemplo, para fazer 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/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"
}

A properties.urn propriedade é usada para definir a falha que você deseja executar em um experimento de caos. Para entender o esquema para os parâmetros dessa 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óximos passos

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