Most organizations discover their Azure bill is a problem the same way — someone in finance opens an invoice and asks why cloud spending doubled since last quarter. By then, the damage is done. The resources that drove the increase have been running for weeks or months, and nobody can definitively explain which team, project, or workload is responsible because the cost data was never organized in a way that makes attribution possible.
Azure Cost Management + Billing is the native toolset for tracking, analyzing, and optimizing Azure spending. It is included at no extra cost with every Azure subscription. But out of the box, it presents raw data that requires configuration to become useful. This guide walks through setting up dashboards, budget alerts, cost allocation tags, and optimization recommendations so you have the visibility you need before that invoice arrives.
If you are looking for broader cost reduction strategies, our guide on 10 ways to cut your Azure bill covers rightsizing, reserved instances, and other optimization levers. For organizations evaluating financial operations practices, FinOps strategies provide a complementary framework for controlling cloud costs at scale.
Understanding Azure Cost Management + Billing
Azure Cost Management + Billing is a suite of tools built into the Azure portal that provides:
- Cost analysis: Interactive views of your spending broken down by resource, service, subscription, resource group, tag, or time period
- Budgets: Spending thresholds with automated alerts when actual or forecasted costs approach or exceed limits
- Advisor recommendations: AI-driven suggestions for reducing waste (idle resources, oversized VMs, unattached disks)
- Exports: Scheduled CSV exports to storage accounts for integration with external tools
- Power BI integration: The Cost Management connector for Power BI enables custom reports beyond what the portal provides
You access Cost Management through the Azure portal at Cost Management + Billing > Cost Management. The interface is available at subscription, resource group, and management group scope, so you can analyze costs at whatever level of granularity your organization needs. For a comprehensive overview of the service, see Microsoft’s Azure Cost Management documentation.
Step 1: Configure Cost Allocation Tags
Before building any dashboard, you need cost allocation tags. Tags are the mechanism that lets you attribute costs to business dimensions that matter — teams, projects, cost centers, environments, applications. Without tags, you can only view costs by Azure’s technical dimensions (subscription, resource group, resource type), which rarely align with how your organization thinks about spending.
Define Your Tagging Taxonomy
Start with a small, mandatory set of tags:
| Tag Key | Purpose | Example Values |
|---|---|---|
CostCenter | Maps spend to finance cost centers | CC-1001, CC-2050 |
Owner | Identifies the responsible team or person | platform-team, jsmith@company.com |
Environment | Distinguishes production from non-production | Production, Staging, Development |
Application | Groups resources by business application | ERP, CRM, DataPlatform |
ManagedBy | Indicates who manages the resource | Exodata, Internal, Vendor-XYZ |
Enforce Tags with Azure Policy
Do not rely on teams voluntarily tagging resources. Use Azure Policy to enforce tagging at deployment time:
# Create a policy assignment that denies resources without a CostCenter tag
az policy assignment create \
--name "require-costcenter-tag" \
--display-name "Require CostCenter tag on all resources" \
--policy "/providers/Microsoft.Authorization/policyDefinitions/871b6d14-10aa-478d-b590-94f262ecfa99" \
--params '{"tagName": {"value": "CostCenter"}}' \
--scope "/subscriptions/<subscription-id>"
For an existing environment with untagged resources, start with audit mode to identify gaps, then switch to deny mode once teams have had time to remediate:
# Start with audit mode to identify untagged resources
az policy assignment create \
--name "audit-costcenter-tag" \
--display-name "Audit resources missing CostCenter tag" \
--policy "/providers/Microsoft.Authorization/policyDefinitions/871b6d14-10aa-478d-b590-94f262ecfa99" \
--params '{"tagName": {"value": "CostCenter"}}' \
--scope "/subscriptions/<subscription-id>" \
--enforcement-mode "DoNotEnforce"
Enable Tag Inheritance
By default, Azure resources do not inherit tags from their parent resource group or subscription. This means that even if you tag resource groups, individual resources within them remain untagged in cost reports.
Enable tag inheritance in Cost Management:
- Navigate to Cost Management + Billing > Cost Management > Settings
- Select Tag inheritance
- Enable inheritance for the tags you want to propagate
- Choose whether resource group tags, subscription tags, or both should be inherited
This does not modify the actual resource tags — it applies inherited tag values only within Cost Management views and exports.
Step 2: Build Your Cost Analysis Views
Azure Cost Management’s cost analysis feature lets you create custom views that slice spending data in different ways. Build a set of views that answer the questions your stakeholders regularly ask.
Daily Spend by Service
This view answers: “What Azure services are driving our costs?”
- Navigate to Cost Management > Cost analysis
- Set the scope to your management group or subscription
- Set the date range to the current month
- Set granularity to Daily
- Set Group by to Service name
- Chart type: Stacked area
Save this view with a descriptive name like “Daily Spend by Service - Current Month.”
Cost by Team or Cost Center
This view answers: “How much is each team spending?”
- In Cost analysis, set Group by to Tag: CostCenter
- Set the date range to the current month
- Chart type: Stacked bar or Donut
- Add a filter for Subscription if you want to focus on specific subscriptions
Month-over-Month Comparison
This view answers: “How does this month compare to last month?”
- Set the date range to include the last 3 months
- Set granularity to Monthly
- Group by Service name or Resource group
- Chart type: Grouped bar
This view immediately highlights cost increases and makes it easier to identify which service or team drove the change.
Resource-Level Detail
For drilling into specific cost drivers:
- Switch to the Cost by resource view (built-in)
- Sort by cost descending
- Filter by date range and subscription
This view shows every individual resource and its cost, making it easy to find the single VM, database, or storage account that is driving an unexpected increase.
Step 3: Create Custom Dashboards
Cost analysis views are useful for ad-hoc investigation, but dashboards provide at-a-glance visibility that stakeholders can check daily without navigating through menus.
Pin Cost Analysis Views to Azure Dashboard
Every cost analysis view can be pinned to an Azure Dashboard:
- Configure a cost analysis view as described above
- Click the pin icon in the top toolbar
- Select an existing dashboard or create a new one
- Repeat for each view you want on the dashboard
Build a Cloud Cost Overview dashboard that includes:
- Total current-month spend (actual and forecast)
- Daily spend by service (stacked area)
- Cost by team/cost center (donut chart)
- Month-over-month comparison (grouped bar)
- Top 10 most expensive resources (table)
For more advanced dashboard customization, see our guide on building Azure dashboards.
Power BI Dashboard for Executive Reporting
For stakeholders who need polished, shareable reports, the Cost Management connector for Power BI provides deeper customization:
- Open Power BI Desktop
- Select Get Data > Azure Cost Management
- Authenticate with your Azure credentials
- Select the scope (enrollment, subscription, or management group)
- Choose the data tables to import (usage details, budgets, price sheets)
Power BI dashboards can include:
- Cost trends with forecasting
- Budget vs. actual comparisons
- Unit economics (cost per customer, cost per transaction)
- Tag-based allocation with drill-through to resource details
- Anomaly detection highlighting unusual spending patterns
Schedule automatic refresh so dashboards always reflect current data.
Step 4: Set Up Budget Alerts
Budgets provide automated early warning when spending approaches or exceeds thresholds. Set them up at multiple levels for layered visibility.
Create Subscription-Level Budgets
# Create a monthly budget with alerts at 75%, 90%, and 100%
az consumption budget create \
--budget-name "Production-Monthly" \
--amount 15000 \
--category Cost \
--time-grain Monthly \
--start-date 2026-03-01 \
--end-date 2027-03-01 \
--resource-group "" \
--notifications '{
"alert-75": {
"enabled": true,
"operator": "GreaterThanOrEqualTo",
"threshold": 75,
"contactEmails": ["cloudops@company.com"],
"thresholdType": "Actual"
},
"alert-90": {
"enabled": true,
"operator": "GreaterThanOrEqualTo",
"threshold": 90,
"contactEmails": ["cloudops@company.com", "finance@company.com"],
"thresholdType": "Actual"
},
"alert-forecast-100": {
"enabled": true,
"operator": "GreaterThanOrEqualTo",
"threshold": 100,
"contactEmails": ["cloudops@company.com", "finance@company.com", "cto@company.com"],
"thresholdType": "Forecasted"
}
}'
Budget Alert Best Practices
- Set both actual and forecasted alerts. Actual alerts trigger when you have already spent the money. Forecasted alerts trigger when Azure predicts you will exceed the budget based on current trajectory — giving you time to intervene before it happens.
- Use escalating notification lists. A 75% actual alert goes to the ops team. A 90% actual alert adds finance. A 100% forecasted alert adds leadership.
- Create budgets at multiple scopes. Subscription-level budgets catch total spend. Resource group or tag-based budgets catch individual team or project overruns.
- Pair alerts with action groups. Connect budget alerts to Azure Monitor action groups that trigger automation — such as an Azure Function that shuts down non-production resources or sends a Slack/Teams notification.
Anomaly Detection
Azure Cost Management includes built-in anomaly detection that identifies unusual spending patterns without requiring you to define thresholds. Enable anomaly alerts to catch unexpected cost increases that might not trigger budget alerts — for example, a single resource that doubles in cost while overall spending remains within budget.
Navigate to Cost Management > Cost alerts to view detected anomalies and configure email notifications. Microsoft’s anomaly detection documentation provides additional detail on how the detection models work and how to tune them for your environment.
Step 5: Implement Cost Optimization Recommendations
Azure Advisor continuously analyzes your resource configuration and usage patterns to identify optimization opportunities. These recommendations surface directly in Cost Management.
Access Advisor Recommendations
- Navigate to Cost Management > Advisor recommendations (or Azure Advisor > Cost)
- Review recommendations grouped by category:
- Rightsizing: VMs with consistently low CPU or memory utilization
- Reserved Instances: Workloads that would save money with 1-year or 3-year commitments
- Shutdown: Resources running during off-hours with no usage
- Cleanup: Unattached disks, unused public IPs, empty resource groups
Automate Optimization with Azure Automation
For repeatable optimizations, create Azure Automation runbooks:
# Example: Schedule non-production VM shutdown at 7 PM and startup at 7 AM
az vm auto-shutdown -g "dev-resources" -n "dev-web-01" \
--time 1900 \
--email "cloudops@company.com"
For more complex scheduling (shutting down entire resource groups, scaling down App Service plans at night), use Azure Automation with PowerShell runbooks or Azure Functions triggered by a timer.
Track Optimization Progress
Create a monthly cost optimization review cadence:
- Review Advisor recommendations and action new ones
- Compare current month spend to the previous month and to budget
- Identify the top 5 cost increases and determine root cause
- Review tag compliance and remediate gaps
- Validate that reserved instance utilization is above 90%
Step 6: Export Data for External Analysis
For organizations that need cost data in external systems (data warehouses, BI tools, financial planning software), Azure Cost Management supports scheduled exports.
Configure Scheduled Exports
# Create a daily export of actual costs to a storage account
az costmanagement export create \
--name "daily-cost-export" \
--scope "/subscriptions/<subscription-id>" \
--type "ActualCost" \
--storage-account-id "/subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/<account>" \
--storage-container "cost-exports" \
--timeframe "MonthToDate" \
--recurrence "Daily" \
--schedule-recurrence-period-from "2026-03-01T00:00:00Z" \
--schedule-recurrence-period-to "2027-03-01T00:00:00Z"
Exports generate CSV files in your storage account that include resource IDs, meter categories, quantities, costs, and tags. These files can be ingested into:
- Azure Synapse or Databricks for advanced analytics
- Power BI for custom dashboards
- Third-party FinOps platforms (CloudHealth, Spot.io, Apptio)
- Financial planning tools for budget forecasting
Amortized vs Actual Cost Exports
Azure Cost Management offers two export types:
- Actual costs: Shows charges as they are billed (upfront reservation payments appear in the month of purchase)
- Amortized costs: Spreads reservation costs evenly across the reservation term, giving a more accurate picture of the monthly run rate
Use amortized cost exports for dashboard views and month-over-month comparisons. Use actual cost exports for reconciliation against invoices.
Advanced: Multi-Subscription Cost Management
For organizations with many subscriptions, managing costs at scale requires additional structure. For architectural context on organizing multiple subscriptions, see our guide on Azure landing zone best practices. Organizations choosing between cloud platforms should also review our Azure vs AWS vs GCP comparison to understand platform-specific cost management differences.
Management Group Scoping
Configure Cost Management views and budgets at the management group level to aggregate costs across subscriptions:
- Navigate to the management group in the Azure portal
- Select Cost Management from the menu
- All cost analysis views, budgets, and exports work at this scope
Cross-Subscription Tagging Consistency
Enforce the same tagging taxonomy across all subscriptions using Azure Policy at the management group level. Inconsistent tag values (one team uses Prod, another uses Production) fragment your cost reports and make attribution unreliable.
Consider using Azure Policy tag remediation to automatically normalize tag values across your environment.
Chargeback and Showback Models
With consistent tags and management group organization, you can implement:
- Showback: Reporting costs to teams for awareness without billing them. Start here.
- Chargeback: Actually billing teams for their consumption. Requires mature tagging, agreed-upon allocation methods for shared services, and finance team buy-in.
Shared services (hub networking, monitoring, security tooling) need an allocation model — typically split proportionally based on subscription count, resource count, or revenue.
Frequently Asked Questions
Is Azure Cost Management free?
Yes. Azure Cost Management + Billing is included at no additional cost with every Azure subscription. The Power BI connector and API access are also free. You only pay for the Azure resources you are monitoring, not for the monitoring itself.
How far back can I view cost data?
Azure Cost Management retains cost data for 13 months in the portal. For longer retention, configure scheduled exports to a storage account and manage retention in your own data warehouse. Enterprise Agreement customers can access up to 36 months of data through the EA portal.
Can I set up cost alerts for specific resource groups or tags?
Yes. Budgets can be scoped to subscriptions, resource groups, or filtered by tags, meter categories, or resource types. This allows you to create targeted alerts — for example, a budget that alerts when spending tagged CostCenter:CC-1001 exceeds $5,000/month.
How do I allocate shared infrastructure costs across teams?
Use Azure Cost Management’s cost allocation feature (in preview for EA and MCA customers) to redistribute shared costs. Alternatively, export cost data and apply allocation logic in Power BI or a data warehouse. Common allocation methods include proportional split by resource count, VM count, or revenue.
What is the difference between Azure Cost Management and third-party FinOps tools?
Azure Cost Management provides native visibility into Azure spending with no additional cost. Third-party tools like CloudHealth, Spot.io, or Apptio add multi-cloud support (AWS, GCP), more advanced optimization recommendations, organizational features (team-based access), and custom reporting. For Azure-only environments, Cost Management is often sufficient. For multi-cloud environments, third-party tools add significant value.
How often does Azure Cost Management data update?
Cost data typically refreshes within 8-24 hours of resource usage. Reserved instance and Marketplace purchase data may take up to 48 hours. Forecasts are recalculated daily based on actual usage patterns. For near-real-time cost tracking, use Azure Monitor metrics and resource-level billing APIs.
Next Steps
Building cost visibility does not have to be overwhelming. Exodata’s managed IT services team can help you set up Azure Cost Management dashboards, implement tagging governance, and establish the optimization cadence that keeps your cloud spending aligned with business value. Talk to an engineer today — no sales pitch, just answers.