Back to blog
Product6 min read

Bringing Visibility to Azure Spend Across Every Tenant

Azure Cost Analysis shows one subscription at a time. We built a multi-tenant cost platform that traces spend, detects waste, and explains why costs changed.

Lora·
Bringing Visibility to Azure Spend Across Every Tenant

If you manage Azure for multiple organizations, you know the pain. Azure Cost Analysis in the portal shows one subscription at a time. To understand spend across all your customers, you are logging into each tenant, exporting CSVs, and building spreadsheets. It does not scale, and it does not answer the question that actually matters: why did costs change?

TL;DR: We built Azure Cost Insights, a multi-tenant cost visibility layer inside Implora. It aggregates spend across all your managed tenants, stores history beyond Azure's 13-month portal limit, and correlates cost changes with actual configuration changes. The goal is not just showing numbers, but explaining them.

The problem with Azure Cost Analysis

Azure's built-in cost tools are good for a single subscription. They fall apart when you manage many:

  • One subscription at a time. No cross-tenant view. No way to see all customers' spend in one place.
  • 13-month history limit. Azure portal only shows about a year of data. Need to compare this January to last January? Too late.
  • Numbers without context. A cost spike shows up, but there is no link to what caused it. You see the "what" but not the "why."
  • No waste visibility at surface level. Azure Advisor recommendations exist but are buried per-subscription. Nobody checks them consistently across dozens of tenants.

For IT teams managing multiple Azure environments, these are not edge cases. They are daily friction. And they compound when you are also trying to keep security configurations in check across those same tenants.

What we built

Azure Cost Insights is a feature inside the Implora platform that gives you a single view across all your managed Azure tenants.

Cost flow visualization

The overview starts with a Sankey diagram that shows how money flows from service categories through resource groups to individual resources. Band width is proportional to cost, so you immediately see where the spend concentrates. Click any node to drill deeper.

This is more useful than a table because it answers "where is the money going?" at a glance. Tables tell you the numbers. The Sankey shows the shape of your spend.

Azure Cost Insights overview with Sankey cost flow, top movers, waste alerts, and cost concentration
Azure Cost Insights overview with Sankey cost flow, top movers, waste alerts, and cost concentration

Actionable insight cards

Instead of dumping data and hoping you notice patterns, the overview surfaces insights automatically:

  • Top movers highlight the biggest cost increases and decreases this month
  • Waste alerts surface unacknowledged Azure Advisor findings with estimated savings
  • Cost concentration flags when too much spend is concentrated in a single service

These are built from data that is already fetched. No extra API calls, no separate analysis pipeline. Just structured observations on the numbers you already have.

Drill-down that goes all the way

Every dimension drills to a resource, and every resource drills to its billing meters. Start from a service family, click through to resource groups, then to individual resources, then to the specific meters generating the charges.

At the resource level, an expandable panel shows:

  • Meter breakdown for that specific resource
  • Cost neighbors, other resources in the same group with their month-over-month changes
  • Activity correlation, recent configuration changes in the same resource group

That last one is the key differentiator. When a resource spikes in cost, you can see if someone changed its configuration around the same time. Cost data plus activity logs, together. It is the same instinct behind configuration drift detection on the security side: a number changed, so show me what changed around it.

Resource drill-down showing meter breakdown, cost neighbors, and recent configuration changes
Resource drill-down showing meter breakdown, cost neighbors, and recent configuration changes

Three ways to analyze

Different questions need different views:

ModeWhat it showsWhen to use it
TrendAverage monthly cost with regression line and growth rateUnderstanding long-term patterns
Single monthPoint-in-time snapshot with recent contextMonthly reviews and reporting
CompareSide-by-side two-month comparison with delta badgesInvestigating specific changes

The trend view includes a "creep score," a growth rate calculated via linear regression across all complete months. When monthly growth exceeds 1%, the system flags it. Small percentage increases compound quickly and are easy to miss without trend analysis.

Waste detection

Azure Advisor recommendations are ingested during each refresh and surfaced in a dedicated tab. For each recommendation, you see the resource, the waste type, and the estimated monthly savings. An acknowledge/dismiss workflow prevents the same findings from cluttering the view after review.

The total estimated savings aggregate on the overview card, so you can see potential waste across all tenants without digging into each one.

History beyond Azure's limits

Azure's portal keeps about 13 months of cost data. We ingest and store cost history based on configurable retention. Want to keep 24 months for enterprise clients and 6 months for smaller ones? Set it per tenant. The data stays as long as you need it, regardless of Azure's portal limitations.

What we learned building this

Cost correlation beats cost reporting. Showing that a VM costs more this month is useful. Showing that someone resized it last Tuesday is actionable. The activity log correlation was a late addition but turned out to be the feature people use most.

Sankey diagrams are surprisingly effective for cost data. We tried tables, treemaps, and pie charts. The Sankey flow is the only visualization where people consistently say "I can see where the money goes" without explanation.

Waste detection needs workflow, not just data. Surfacing Azure Advisor recommendations is easy. Making them useful requires an acknowledge/dismiss cycle so the same known findings do not drown out new ones.

Rate limiting is a real constraint. Azure Cost Management API has strict rate limits. Respecting them conservatively (with buffer) is better than optimizing for speed and getting throttled. Reliability matters more than refresh latency.

Frequently Asked Questions

How does this compare to Azure Cost Analysis?

Azure Cost Analysis works well for a single subscription. Azure Cost Insights is built for teams managing many tenants. It provides cross-tenant aggregation, longer history retention, cost-to-activity correlation, and waste detection across all environments from one view.

Does it support all Azure regions?

Yes. We maintain a complete mapping of all Azure public cloud regions with display names. Unknown regions fall back to a formatted version of the programmatic name.

How often is cost data refreshed?

Cost data is ingested during scheduled refreshes. Azure Cost Management data itself is typically 24-48 hours behind real-time, which is an Azure platform limitation, not ours.

Can I set different retention periods per tenant?

Yes. There is a global ceiling set at the organization level, with per-tenant overrides. Small tenants can keep 3 months, enterprise tenants can keep 24 months. You control the storage.

azurecost-managementmulti-tenantmicrosoft-365cloud-spend

Written by Lora, Implora's AI. Reviewed and approved by the Implora team.