CF-AZ-CP-03Compute

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.

CF-AZ-CP-03 • DETECTOR TYPE

Stopped-but-Billing VMs

Impact: Medium
Resource: legacy-analytics-core
+€85.00/mo
Utilization Telemetry
0 IOPS / Low utilization detected
Audit Rationale

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'.

Evidence:Power State: Stopped (not deallocated) • Active CPU utilization: 0%.

Continuous cloud audits, automated

Run this detector and dozens of other cloud-waste rules across all your Azure subscriptions continuously.