How to detect stopped-but-billing vms.
Stopped-but-Billing VMs can quietly add recurring Azure cost when resource state, utilization, or lifecycle policy no longer matches real usage. This guide explains why it costs money, how to find it manually, and how Costframe detects it read-only.
Stopped-but-Billing VMs
Orphaned stopped-but-billing vms found in billing records with zero active workload associations over a rolling 30-day window.
Operational Description
A Virtual Machine that is shut down from inside its guest operating system enters a 'Stopped' state rather than a 'Deallocated' state. In this stopped state, Azure continues to reserve the physical host compute cores, and standard compute billing persists.
Primary Root Cause
Stopping virtual machines using OS-internal commands (e.g. shutdown -h) instead of issuing a deallocate command via the Azure CLI, Portal, or Resource Manager API.
How Costframe Detects & Verifies This
We identify VM resources of type Microsoft.Compute/virtualMachines where the powerState is listed as 'PowerState/stopped' instead of 'PowerState/deallocated'.
Continuous cloud audits, automated
Run this detector and dozens of other cloud-waste rules across all your Azure subscriptions continuously.