> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure.md).

# Chaos faults for Azure

### Introduction <a href="#introduction" id="introduction"></a>

Azure faults disrupt resources that run on Microsoft Azure: Virtual Machines (standalone or VMSS), Azure Kubernetes Service (AKS) node pools, managed disks, App Service web apps, and Service Bus queues. Each fault calls the Azure Resource Manager API to inject the disruption, then reverses it cleanly at the end of the configured duration. Go to [Azure authentication methods](/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/security-configurations/azure-authentication-methods.md) to set up service principals, workload identity, or managed identity, and to [Azure fault permissions](/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/security-configurations/fault-permissions.md) to grant the right RBAC roles.

<table data-view="cards"><thead><tr><th></th><th></th><th><select multiple><option value="eLG2MQm8" label="AKS" color="blue"></option><option value="s9qhRr0q" label="node down" color="blue"></option><option value="QLtqF2D4" label="kubernetes" color="blue"></option><option value="JP2uZLEH" label="disk loss" color="blue"></option><option value="Wt5aevPs" label="CPU hog" color="blue"></option><option value="_pa8sSa7" label="I/O stress" color="blue"></option><option value="S-YNcHHR" label="memory hog" color="blue"></option><option value="jZBCXN3f" label="azure" color="blue"></option><option value="pTCWM55r" label="service bus" color="blue"></option><option value="JqxMUAMj" label="messaging" color="blue"></option><option value="u1ipy04Z" label="restrict access" color="blue"></option><option value="KM-ha4JG" label="stop" color="blue"></option></select></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Azure AKS node down</strong></td><td>Deallocate a percentage of AKS worker VMs (selected by node pool and zone) for a configurable duration, then start them again.</td><td><span data-option="eLG2MQm8">AKS, </span><span data-option="s9qhRr0q">node down, </span><span data-option="QLtqF2D4">kubernetes</span></td><td><a href="#azure-aks-node-down">#azure-aks-node-down</a></td></tr><tr><td><strong>Azure disk loss</strong></td><td>Detach one or more managed data disks from their attached VMs for a configurable duration, then reattach them on the same LUN.</td><td><span data-option="JP2uZLEH">disk loss</span></td><td><a href="#azure-disk-loss">#azure-disk-loss</a></td></tr><tr><td><strong>Azure instance CPU hog</strong></td><td>Drive CPU utilization to a configurable target on one or more Azure VMs for a configurable duration via the VM run-command extension.</td><td><span data-option="Wt5aevPs">CPU hog</span></td><td><a href="#azure-instance-cpu-hog">#azure-instance-cpu-hog</a></td></tr><tr><td><strong>Azure instance IO stress</strong></td><td>Drive sustained disk read/write IO on one or more Azure VMs for a configurable duration via the VM run-command extension.</td><td><span data-option="_pa8sSa7">I/O stress</span></td><td><a href="#azure-instance-io-stress">#azure-instance-io-stress</a></td></tr><tr><td><strong>Azure instance memory hog</strong></td><td>Consume a configurable amount of memory on one or more Azure VMs for a configurable duration via the VM run-command extension.</td><td><span data-option="S-YNcHHR">memory hog</span></td><td><a href="#azure-instance-memory-hog">#azure-instance-memory-hog</a></td></tr><tr><td><strong>Azure instance stop</strong></td><td>Stop one or more Azure VMs (or VMSS instances) for a configurable duration, then start them again.</td><td><span data-option="jZBCXN3f">azure</span></td><td><a href="#azure-instance-stop">#azure-instance-stop</a></td></tr><tr><td><strong>Azure Service Bus queue state change</strong></td><td>Change the operational status of one or more Service Bus queues (Disabled, SendDisabled, ReceiveDisabled) for a configurable duration, then restore Active.</td><td><span data-option="pTCWM55r">service bus, </span><span data-option="JqxMUAMj">messaging</span></td><td><a href="#azure-service-bus-queue-state-change">#azure-service-bus-queue-state-change</a></td></tr><tr><td><strong>Azure web app access restrict</strong></td><td>Add an Access Restriction rule to one or more App Service web apps for a configurable duration so callers in the blocked range receive 403 Forbidden.</td><td><span data-option="u1ipy04Z">restrict access</span></td><td><a href="#azure-web-app-access-restrict">#azure-web-app-access-restrict</a></td></tr><tr><td><strong>Azure web app stop</strong></td><td>Stop one or more App Service web apps for a configurable duration, then start them again.</td><td><span data-option="KM-ha4JG">stop</span></td><td><a href="#azure-web-app-stop">#azure-web-app-stop</a></td></tr></tbody></table>

#### Azure AKS node down <a href="#azure-aks-node-down" id="azure-aks-node-down"></a>

Azure AKS node down resolves the VMSS instances backing an AKS cluster (filtered by `TARGET_NODE_POOL_NAMES` and `TARGET_ZONES`), picks `NODE_AFFECTED_PERCENTAGE` of them, deallocates them for `TOTAL_CHAOS_DURATION` seconds, then starts them again.

<details>

<summary>Use cases</summary>

* Test that the scheduler reschedules pods inside the SLA when a percentage of AKS nodes disappear.
* Validate PodDisruptionBudgets across a node-down window.
* Test cluster autoscaler reaction time when pods become unschedulable.
* Simulate zone-level failures by targeting a single zone.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-aks-node-down.md" class="button primary">View details</a>

#### Azure disk loss <a href="#azure-disk-loss" id="azure-disk-loss"></a>

Azure disk loss detaches one or more managed data disks (`VIRTUAL_DISK_NAMES`) from their attached VMs for `TOTAL_CHAOS_DURATION` seconds, then reattaches them on the same LUN. OS disks are excluded by design.

<details>

<summary>Use cases</summary>

* Test how stateful workloads (databases, file servers) handle a brief storage outage.
* Validate that filesystems remount cleanly when the disk returns.
* Confirm DR snapshot strategies cover sudden volume loss.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-disk-loss.md" class="button primary">View details</a>

#### Azure instance CPU hog <a href="#azure-instance-cpu-hog" id="azure-instance-cpu-hog"></a>

Azure instance CPU hog drives CPU utilization to `CPU_LOAD` percent (or saturates `CPU_CORES` cores) on the target VMs for `TOTAL_CHAOS_DURATION` seconds via the Azure VM run-command extension.

<details>

<summary>Use cases</summary>

* Test that application latency stays inside the SLA when compute headroom shrinks.
* Validate VMSS autoscale, AKS HPA, or App Service autoscale reaction time.
* Confirm critical processes keep getting CPU time during saturation.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-instance-cpu-hog.md" class="button primary">View details</a>

#### Azure instance IO stress <a href="#azure-instance-io-stress" id="azure-instance-io-stress"></a>

Azure instance IO stress drives sustained disk read/write IO on the volume mounted at `VOLUME_MOUNT_PATH` of the target VMs for `TOTAL_CHAOS_DURATION` seconds via the Azure VM run-command extension.

<details>

<summary>Use cases</summary>

* Test that application latency degrades gracefully when storage is saturated.
* Validate Premium SSD burst credit and write-path back-off behavior.
* Confirm monitoring alerts on disk metrics fire inside the SLA.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-instance-io-stress.md" class="button primary">View details</a>

#### Azure instance memory hog <a href="#azure-instance-memory-hog" id="azure-instance-memory-hog"></a>

Azure instance memory hog consumes `MEMORY_CONSUMPTION` MB (or `MEMORY_PERCENTAGE` percent of RAM) through `NUMBER_OF_WORKERS` workers on the target VMs for `TOTAL_CHAOS_DURATION` seconds via the Azure VM run-command extension.

<details>

<summary>Use cases</summary>

* Test that the OOM killer targets the right process under memory pressure.
* Validate GC pause behavior on JVM/CLR workloads.
* Confirm VMSS autoscale reaction time on memory metrics.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-instance-memory-hog.md" class="button primary">View details</a>

#### Azure instance stop <a href="#azure-instance-stop" id="azure-instance-stop"></a>

Azure instance stop deallocates one or more VMs listed in `AZURE_INSTANCE_NAMES` (or VMSS instance IDs when `SCALE_SET=enable`) for `TOTAL_CHAOS_DURATION` seconds, then starts them again.

<details>

<summary>Use cases</summary>

* Test how the workload behaves when a VM disappears.
* Validate VMSS auto-healing and AKS node-down handling.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-instance-stop.md" class="button primary">View details</a>

#### Azure Service Bus queue state change <a href="#azure-service-bus-queue-state-change" id="azure-service-bus-queue-state-change"></a>

Azure Service Bus queue state change sets the status of one or more queues to `disabled`, `sendDisabled`, or `receiveDisabled` (via `ACTION`) for `TOTAL_CHAOS_DURATION` seconds, then restores `Active`.

<details>

<summary>Use cases</summary>

* Test that producers retry cleanly when sends are disabled.
* Validate consumer behavior when receives are disabled and the queue builds up.
* Confirm dead-letter handling under sustained chaos.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-service-bus-queue-state-change.md" class="button primary">View details</a>

#### Azure web app access restrict <a href="#azure-web-app-access-restrict" id="azure-web-app-access-restrict"></a>

Azure web app access restrict adds an Access Restriction rule (`RULE_NAME`) to one or more App Service web apps with `ACTION` against `IP_ADDRESS_BLOCK` for `TOTAL_CHAOS_DURATION` seconds, then removes the rule.

<details>

<summary>Use cases</summary>

* Test that Traffic Manager / Front Door reroute traffic when an Access Restriction blocks the web app.
* Validate runbooks for removing a stale or misconfigured Access Restriction.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-web-app-access-restrict.md" class="button primary">View details</a>

#### Azure web app stop <a href="#azure-web-app-stop" id="azure-web-app-stop"></a>

Azure web app stop calls the App Service `stop` API on one or more web apps for `TOTAL_CHAOS_DURATION` seconds, then starts them again.

<details>

<summary>Use cases</summary>

* Test how clients behave when an App Service web app is unavailable.
* Validate Traffic Manager / Front Door failover SLA.
* Confirm dependent services degrade gracefully and recover.

</details>

<a href="/resilience-testing/chaos-engineering/faults/chaos-fault-categories/azure/azure-web-app-stop.md" class="button primary">View details</a>

{% @harness-feedback/feedback %}
