Destinos y funcionalidades de Azure Chaos Studio

Para poder insertar un error en un recurso de Azure, primero el recurso debe tener habilitados los destinos y funcionalidades correspondientes. Los destinos y las funcionalidades controlan qué recursos están habilitados para la inserción de errores y qué errores se pueden ejecutar en esos recursos.

Mediante el uso de destinos y funcionalidades junto con otras medidas de seguridad, puede evitar la inyección accidental o malintencionada de errores con Azure Chaos Studio. Por ejemplo, con destinos y funcionalidades, puede permitir que el error de presión de CPU se ejecute en las máquinas virtuales de producción, a la vez que impide que el error del proceso de eliminación se ejecute en ellas.

Targets

Un destino de Chaos permite a Chaos Studio interactuar con un recurso para un tipo de destino determinado. Un tipo de destino representa el método de inserción de errores en un recurso. Los tipos de recursos que solo admiten errores directos de servicio tienen un tipo de destino. Un ejemplo es el Microsoft-CosmosDB tipo de Azure Cosmos DB.

Los tipos de recursos que admiten errores directos de servicio y basados en agentes tienen dos tipos de destino. Un tipo de destino es para errores directos del servicio (por ejemplo, Microsoft-VirtualMachine). El otro tipo de destino es para errores basados en agente (siempre Microsoft-Agent).

Un destino es un recurso de extensión creado como elemento secundario del recurso que se va a incorporar a Chaos Studio. Algunos ejemplos son una máquina virtual o un grupo de seguridad de red. Un destino define el tipo de destino que está habilitado en el recurso. Por ejemplo, si va a incorporar una instancia de Azure Cosmos DB con este identificador de recurso:

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

El recurso de Azure Cosmos DB tiene un recurso secundario con formato de este ejemplo:

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

Solo se pueden usar recursos con un destino creado a partir de ellos para la inserción de errores con Chaos Studio.

Funcionalidades

Una funcionalidad permite a Chaos Studio ejecutar un error determinado en un recurso, como apagar una máquina virtual. Las funcionalidades son únicas por tipo de destino. Representan el error que habilitan, por ejemplo, CPUPressure-1.0. Para comprender todos los errores disponibles y sus correspondientes nombres de funcionalidad y tipos de destino, consulte la biblioteca de errores de Chaos Studio.

Una funcionalidad es un recurso de extensión creado como elemento secundario de un destino. Por ejemplo, si habilita el error de apagado en una máquina virtual con un identificador de destino directo de servicio:

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine

El recurso de destino tiene un recurso secundario con el formato de este ejemplo:

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0

Un experimento solo puede insertar errores en destinos incorporados con las funcionalidades correspondientes habilitadas.

Enumeración de nombres y parámetros de funcionalidad

Como referencia, en nuestra biblioteca de errores hay disponible una lista de nombres de funcionalidad, URN de error y parámetros. Puede usar la respuesta HTTP para crear una funcionalidad o realizar una solicitud GET en una funcionalidad existente para obtener esta información a petición. Por ejemplo, para realizar una operación GET en una funcionalidad de apagado de máquina virtual:

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"

Devuelve el siguiente 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"
}

La propiedad properties.urn se usa para definir el error que se quiere ejecutar en un experimento de caos. Para comprender el esquema de los parámetros de este error, puede obtener el esquema al properties.parametersSchemaque hace referencia :

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

Devuelve el siguiente json:

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

Pasos siguientes

Ahora que comprende qué son los destinos y las funcionalidades, está listo para: