Your Azure bill, five things driving it up

Waste on an Azure bill is rarely well hidden. It tends to turn up in the same few places, the ones nobody really owns. Here are the five we look at first, why they grow, and what you can do about each one.

3 min read

Diagram: an Azure invoice with five sources of waste and the fix for each one.

VMs running around the clock

Development, test and demo environments are often set up to run all the time, even though nobody uses them at night or at weekends. A VM that never stops is billed for 168 hours a week. A working week is closer to 50.

The fix is simple: shut these machines down in the evening, start them up in the morning and leave them off at weekends. Every Azure VM has a built-in auto-shutdown option, and a short script can take care of starting them again. As for environments nobody has touched in weeks, the real question is whether you still need them at all.

Oversized VMs and databases

Resources are sized when they are created, for a peak that is expected and often never comes. After that, nobody dares to scale them down, for fear of slowing down production.

Look at actual usage over several weeks: CPU, memory and, for databases, DTU or vCore consumption. A machine that runs well below its capacity can often drop a size. Change one thing at a time, measure the effect, then move on to the next.

Forgotten disks and IPs

When you delete a VM, its disks, snapshots and public IP address are not always deleted with it. They stay behind, attached to nothing, and you keep paying for them every month.

Clean them up once, then make sure it does not happen again: delete resources by resource group rather than one by one, and tag everything you create with an owner. That way, there is always someone to ask when an orphaned resource turns up.

Logs kept forever

Monitoring is essential, but log ingestion is billed by the gigabyte. Diagnostics switched on everywhere, verbose applications and long default retention periods soon add up, often for data that nobody ever reads.

Work out what you really need for troubleshooting and for your compliance obligations. Collect that, set a retention period for each table, and move anything you need to keep for longer to cheaper archive storage.

Steady workloads at full price

Pay-as-you-go is the most flexible way to pay, and the most expensive. For a workload that runs at a steady level all year round, paying full price makes little sense.

Azure reservations and savings plans give you a lower price in exchange for a one- or three-year commitment. Do the cleanup and resizing first, though: commit to oversized resources and you lock in the waste for three years.

Where to start

None of this requires a big project. Start with the biggest item, fix it, and set up a budget with alerts so that costs do not creep back up.

If you want the full picture, with every possible saving estimated and ranked, that is exactly what our Azure FinOps audit is for. All it takes is read-only access.

Azure FinOps auditRead-only access · Quantified recommendations · Quote on request

All articles

A project, an overloaded team, an audit? Let's talk.

Reply within two business days, in English, French or Dutch. NDA on request.

[email protected] Send an email