Partager via


Cibles et fonctionnalités dans Azure Chaos Studio

Avant de pouvoir injecter une erreur dans une ressource Azure, les cibles et les fonctionnalités correspondantes doivent d’abord être activées pour la ressource. Les cibles et les fonctionnalités contrôlent quelles ressources sont activées pour l’injection d’erreurs, et quelles erreurs peuvent s’exécuter sur ces ressources.

En utilisant des cibles et des fonctionnalités, ainsi que d’autres mesures de sécurité, vous pouvez éviter l’injection accidentelle ou malveillante d’erreurs avec Azure Chaos Studio. Par exemple, avec des cibles et des fonctionnalités, vous pouvez autoriser l’exécution d’une erreur de pression CPU sur vos machines virtuelles de production tout en empêchant l’exécution d’une erreur de destruction du processus sur celles-ci.

Targets

Une cible de chaos permet à Chaos Studio d’interagir avec une ressource pour un type de cible particulier. Un type de cible représente la méthode d’injection des erreurs sur une ressource. Les types de ressources qui prennent uniquement en charge des erreurs de service direct ont un seul type de cible. Par exemple, le type Microsoft-CosmosDB pour Azure Cosmos DB.

Les types de ressources qui prennent en charge les erreurs directes de service et basées sur un agent ont deux types cibles. L’un des types cibles concerne les erreurs directes de service (par exemple, Microsoft-VirtualMachine). L’autre concerne les erreurs basées sur un agent (toujours Microsoft-Agent).

Une cible est une ressource d’extension créée en tant qu’enfant de la ressource qui est intégrée à Chaos Studio. Par exemple, une machine virtuelle ou un groupe de sécurité réseau. Une cible définit le type de cible qui est activé sur la ressource. Par exemple, si vous intégrez une instance Azure Cosmos DB avec cet ID de ressource :

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

La ressource Azure Cosmos DB a une ressource enfant formatée comme dans l’exemple suivant :

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

Seules les ressources dotées d’une cible créée à partir d’elles-mêmes peuvent être ciblées pour l’injection d’erreurs avec Chaos Studio.

Fonctionnalités

Une fonctionnalité permet à Chaos Studio d’exécuter une erreur particulière sur une ressource, telles que l’arrêt d’une machine virtuelle. Les fonctionnalités sont uniques par type cible. Elles représentent l’erreur qu’elles activent, par exemple, CPUPressure-1.0. Pour comprendre toutes les erreurs disponibles ainsi que les noms de leurs fonctionnalités et les types de cibles correspondants, consultez la bibliothèque d’erreurs de Chaos Studio.

Une fonctionnalité est une ressource d’extension créée en tant qu’enfant d’une cible. Par exemple, si vous activez l’erreur d’arrêt sur une machine virtuelle avec un ID cible de service direct :

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

La ressource cible a une ressource enfant formatée comme dans l’exemple suivant :

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

Une expérience peut uniquement injecter des erreurs sur les cibles intégrées avec les fonctionnalités correspondantes activées.

Liste des noms de fonctionnalités et des paramètres

Pour référence, une liste des noms de fonctionnalités, des URN d’erreur et des paramètres est disponible dans notre bibliothèque d’erreurs. Vous pouvez utiliser la réponse HTTP pour créer une fonctionnalité ou effectuer une opération GET sur une fonctionnalité existante pour obtenir ces informations à la demande. Par exemple, pour effectuer une opération GET sur une fonctionnalité d’arrêt de machine virtuelle :

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"

Retourne le code JSON suivant :

{
  "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 propriété properties.urn est utilisée pour définir l’erreur que vous souhaitez exécuter dans une expérience de chaos. Pour comprendre le schéma des paramètres de cette erreur, vous pouvez obtenir par GET le schéma référencé par properties.parametersSchema :

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

Retourne le code JSON suivant :

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

Étapes suivantes

Maintenant que vous comprenez ce que sont les cibles et les fonctionnalités, vous êtes prêt à :