Destinazioni e funzionalità in Azure Chaos Studio

Prima di poter inserire un errore in una risorsa di Azure, la risorsa deve avere le destinazioni e le funzionalità corrispondenti abilitate. Le destinazioni e le funzionalità controllano quali risorse sono abilitate per l'inserimento degli errori e quali errori possono essere eseguiti su tali risorse.

Usando destinazioni e funzionalità insieme ad altre misure di sicurezza , è possibile evitare inserimenti di errori accidentali o dannosi con Azure Chaos Studio. Ad esempio, con destinazioni e funzionalità è possibile consentire l'esecuzione dell'errore di utilizzo elevato della CPU nelle macchine virtuali di produzione, impedendo al contempo l'esecuzione dell'errore di terminazione del processo.

Target

Una destinazione Chaos consente a Chaos Studio di interagire con una risorsa per un determinato tipo di destinazione. Un tipo di destinazione rappresenta il metodo di inserimento di errori su una risorsa. I tipi di risorse che supportano solo gli errori diretti al servizio hanno un tipo di destinazione. Un esempio è il tipo Microsoft-CosmosDB per Azure Cosmos DB.

I tipi di risorse che supportano errori diretti al servizio e basati su agente hanno due tipi di destinazione. Un tipo di destinazione è per gli errori diretti al servizio (ad esempio, Microsoft-VirtualMachine). Un altro tipo di destinazione è per gli errori basati su agente (sempre Microsoft-Agent).

Una destinazione è una risorsa estensione creata come risorsa figlio della risorsa di cui viene eseguito l'onboarding in Chaos Studio. Ad esempio, una macchina virtuale o un gruppo di sicurezza di rete. Una destinazione definisce il tipo di destinazione abilitato nella risorsa. Ad esempio, se si esegue l'onboarding di un'istanza di Azure Cosmos DB con questo ID risorsa:

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

La risorsa di Azure Cosmos DB ha una risorsa figlio formattata come nell'esempio seguente:

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

Solo le risorse con una destinazione creata fuori da esse può essere una destinazione per l'inserimento di errori con Chaos Studio.

Funzionalità

Una funzionalità consente a Chaos Studio di eseguire un errore specifico su una risorsa, ad esempio l’arresto di una macchina virtuale. Le funzionalità sono univoche per tipo di destinazione. Rappresentano l'errore che abilitano, ad esempio, CPUPressure-1.0 Per altre informazione su tutti gli errori disponibili e i corrispondenti nomi delle funzionalità e su i tipi di destinazione, vedere la Libreria degli errori di Chaos Studio.

Una funzionalità è una risorsa estensione creata come risorsa figlio di una destinazione. Ad esempio, se si abilita l'errore di arresto in una macchina virtuale con un ID destinazione diretto al servizio:

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

La risorsa di destinazione ha una risorsa figlio formattata come nell'esempio seguente:

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

Un esperimento può inserire errori solo nelle destinazioni di cui è stato eseguito l'onboarding e con le corrispondenti funzionalità abilitate.

Elencare i nomi e i parametri delle funzionalità

Per riferimento, nella Libreria deli errori di Chaos Studio è disponibile un elenco di nomi di funzionalità, di URL di errore e di parametri. È possibile usare la risposta HTTP per creare una funzionalità o eseguire GET su una funzionalità esistente per ottenere queste informazioni su richiesta. Ad esempio, per eseguire GET su una funzionalità di arresto della macchina virtuale:

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"

Viene restituito il codice JSON seguente:

{
  "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"
}

La proprietà properties.urn viene usata per definire l'errore che si vuole eseguire in un esperimento Chaos. Per comprendere lo schema dei parametri di questo errore è possibile ottenere lo schema a cui si fa riferimento in properties.parametersSchema:

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

Viene restituito il codice JSON seguente:

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

Passaggi successivi

Una volta chiarito cosa sono le destinazioni e le funzionalità, è possibile: