Azure Idle Test VMs Left Running: A $6,200 Wake-Up Call
"Why are we paying for 30 idle VMs every month?"
That question from our CFO kicked off a frantic investigation into our Azure costs. It turned out our QA team's automated testing environment, a sprawling collection of over 30 large VMs, was humming along 24/7, even when no tests were running. We were hemorrhaging $6,200 a month on idle compute—a classic case of "set it and forget it" gone wrong.

The Script That Never Stopped
Our initial setup was straightforward: a script provisioned these VMs on demand. The problem? The script only handled the 'on' part. There was no mechanism to shut them down after the tests completed. We assumed someone would manually stop them, which, as we discovered, rarely happened. Developers would kick off tests, go home for the weekend, and the VMs would happily churn away, racking up charges.
The Patchwork Fix
Our first attempt at a solution was a band-aid: a reminder email to the QA team every Friday afternoon. This reduced the weekend waste somewhat, but it was unreliable and added manual overhead. People went on vacation, forgot, or simply got busy. The idle VM costs remained stubbornly high.


The EazyOps Solution
Enter EazyOps. We integrated EazyOps into our Azure environment, and the change was dramatic. EazyOps immediately flagged these idle test VMs, allowing us to tag them as non-production resources. Then, we configured auto-shutdown schedules to power them down outside of working hours. No more manual intervention, no more reminder emails, no more wasted weekends.
The $3,720 Savings
With EazyOps enforcing shutdown schedules, our idle VM costs plummeted by 60%, saving us $3,720 per month. This wasn't just about the money; it freed up our engineering team to focus on more strategic work than chasing down runaway VMs.
Key Takeaways
- Visibility is Key: EazyOps revealed the hidden cost of our idle VMs.
- Automation is Essential: Manual processes are prone to errors and inconsistencies. Automation ensures consistent cost control.
- Small Changes, Big Impact: A simple auto-shutdown policy yielded significant savings.

Looking Ahead
We're now exploring EazyOps's other features, like rightsizing recommendations and anomaly detection, to further optimize our Azure spending. The goal is to build a culture of cloud cost awareness, where everyone understands the impact of their resource usage.
About Shujat
Shujat is a Senior Backend Engineer at EazyOps, working at the intersection of performance engineering, cloud cost optimization, and AI infrastructure. He writes to share practical strategies for building efficient, intelligent systems.