Your Azure bill keeps rising and nobody knows exactly why
It is rarely one expensive resource, it is thirty cheap ones nobody turned off. How to find the spend and how to stop it coming back.
The bill goes up 15 % one month, another 12 % the next, and when somebody asks, the answer is “usage must have grown”. Sometimes that is true. Often it is not.
It is almost never one expensive resource
What we usually find is not one enormous machine but an accumulation of small things nobody removed:
- Orphaned disks. The virtual machine gets deleted and the disk stays behind. It keeps billing every hour, forever.
- Test environments left on overnight and at weekends. A development environment used only in working hours is switched on 70 % of the time with nobody looking at it.
- Reserved public IPs with nothing attached. Cheap individually, annoying in aggregate.
- Backups with no retirement policy. They grow indefinitely because nobody decided when they stop being needed.
- Logging that keeps everything. Diagnostic ingestion with everything switched on sometimes costs more than the thing it is watching.
First: know who owns what
The root cause of nearly all runaway spend is that nobody owns the resource. Without owner, project and environment tags, the bill is a list of technical names that cannot be attributed to anyone — and what cannot be attributed never gets switched off.
A resource with no owner is never turned off. Nobody wants to be the person who unplugged something somebody might have been using.
Tagging is boring and it produces the most savings. With three tags — owner, project, environment — the bill stops being a mystery and becomes a conversation with names in it.
Second: switch off what does not work at night
Development and test environments rarely need to be on outside working hours. A scheduled shutdown from 19:00 to 07:00 on weekdays, and all weekend, halves those machines without anyone noticing.
Third: an alert, not a report
A budget with an automatic alert when projected monthly spend crosses the limit is worth more than any dashboard. The difference between finding out on the 8th and finding out when the invoice arrives is three weeks of spending.
And then, the boring part
A half-hour quarterly review: which resources have not been touched in 90 days, which disks are attached to nothing, which backups are older than the retention policy. It is not glamorous and it stops the problem coming back in six months, which is exactly what happens when you do one big clean-up and never build the habit.