Using Azure Cost Management Storage Export with CostRadar
How to configure Azure Cost Management exports to a storage account and connect those exported files in CostRadar.
CostRadar can ingest Azure Cost Management export files from a storage account that your team owns. This is useful when your subscription is configured to publish cost and usage files to Blob Storage instead of relying only on direct Cost Management query calls.
CostRadar uses read-only access for this flow. It reads the exported cost files and validates the subscription, but it does not create exports for you, write to your storage account, change Azure resources, or enforce budgets.
Azure setup before using CostRadar
In Azure Cost Management, create an export for the subscription you want CostRadar to monitor. If you monitor multiple Azure subscriptions, create a separate export for each subscription or use a separate stable folder root per subscription. Do not point multiple CostRadar subscription rows at one shared folder that contains mixed-subscription exports.
Use these settings when available:
- Export type: cost and usage details.
- Schedule: daily or recurring month-to-date export, depending on your Azure portal options.
- Destination: a Blob Storage container in a storage account your team controls.
- Azure resource provider: the destination storage account subscription must have
Microsoft.CostManagementExportsregistered. If Azure shows anRP Not RegisteredorRegister destination storage account subscription with Microsoft.CostManagementExportserror, an Azure Owner/Contributor or your admin-approved policy path must register it before creating the export. - File format: CSV with gzip compression.
- Cost type: actual cost. CostRadar's current customer setup flow imports actual-cost exports.
Azure exports are not real-time. New or revised billing data appears only after Azure publishes it and the export run writes files to your storage account. CostRadar's scheduled ingestion can run daily, but it decides what to import by looking for the newest manifest/export blobs under the stable root folder; if Azure has not written a new run yet, CostRadar cannot manufacture fresher data.
When daily ingestion runs
Set the Azure export to run daily/month-to-date, then leave CostRadar pointed at the stable export root. Azure does not guarantee one universal completion time across all tenants and billing scopes, so CostRadar should be treated as a polling importer: CostRadar checks eligible tenants hourly during a bounded daily polling window and imports the newest completed manifest or CSV set it can read. If Azure has not published a newer export yet, CostRadar keeps showing the last imported data and labels the dashboard with the latest usage date covered, last import time, and last check status.
A good troubleshooting signal is the blob timestamp/path: if the newest manifest.json or CSV partition under the configured root is still from yesterday's export run, CostRadar will continue showing the last imported data until Azure writes a newer completed export.
Required Azure roles and provider registration
Before creating the Azure Cost Management export, confirm the Microsoft.CostManagementExports resource provider is registered in the subscription that owns the destination storage account. In most customer setups this is the same subscription being monitored. If your organization exports costs to a storage account in a different subscription, register the provider in that destination storage subscription too.
Azure CLI check:
az provider register --namespace Microsoft.CostManagementExports
az provider show --namespace Microsoft.CostManagementExports --query registrationState -o tsv
The expected state is Registered. Provider registration is a subscription-level Azure setup action; the CostRadar read-only service principal cannot perform it. This registration is separate from the read-only roles CostRadar uses: subscription Reader for validation/resource metadata and Storage Blob Data Reader for blob data-plane access to export files.
Use the CostRadar service principal that is connected to this subscription. CostRadar recommends a separate service principal per monitored Azure subscription for simpler setup, cleaner isolation, and easier revocation.
For the full product experience, grant:
| Purpose | Azure role | Recommended scope | |---|---|---| | Subscription validation, resource metadata, tags, and Advisor recommendations | Reader | Monitored Azure subscription | | Reading exported cost files | Storage Blob Data Reader | Export blob container, or the narrowest storage-account scope that covers the export container |
Storage Blob Data Reader is the role that lets CostRadar read files from Blob Storage. Subscription Reader alone does not grant blob data-plane access.
If Azure has not created the export container yet, assign Storage Blob Data Reader on the destination storage account. After the first export creates the container, you may narrow that assignment to the container. CostRadar can validate the export's control-plane destination while it waits, but it cannot prove blob data-plane access until the container exists.
CostRadar does not need Owner, Contributor, or write access for ongoing ingestion.
Where to configure Storage Export in CostRadar
- Connect the Azure subscription in CostRadar using the normal Azure subscription connection flow.
- Go to Dashboard > Azure Subscriptions.
- Find the connected subscription row.
- Select
Use Storage ExportorEdit Storage Export. - Enter the Storage Account Resource ID, Container Name, and Export Folder Path, then select
Validate & Enable Storage Export. CostRadar does not need the Azure Export Name and does not ask you to choose compression. - If Azure has not published the first completed export yet, CostRadar shows
Waiting for first exportinstead of a failure. You can leave the page; CostRadar will keep checking automatically during its configured daily polling window.
CostRadar first uses the connected service principal to read the storage account resource and find a subscription-scoped Azure Cost Management export whose destination matches the Storage Account Resource ID, Container Name, and Export Folder Path. If that control-plane setup is valid but Azure has not created the container or published a completed export file yet, CostRadar stores the configuration as Waiting for first export and checks automatically. Once the container exists, CostRadar also verifies Blob Data Reader access and the completed export files; do not keep clicking the setup button unless you changed the Azure configuration.
Fields in the CostRadar Storage Export form
Before entering these fields, make sure Azure can create the Cost Management export: the destination storage account subscription should show Microsoft.CostManagementExports as Registered. If Azure shows an RP Not Registered error, register that provider first, then return to CostRadar.
Storage Account Resource ID
Enter the full Azure Resource Manager ID for the storage account, for example:
/subscriptions/YOUR_SUBSCRIPTION_ID/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.Storage/storageAccounts/YOUR_STORAGE_ACCOUNT
You can copy this from Azure Portal by opening the storage account and checking Properties or JSON view.
Container Name
Enter the blob container where Azure Cost Management writes the export files, for example:
costradar
The CostRadar service principal needs Storage Blob Data Reader on this container or on a storage-account scope that includes this container.
Export Folder Path
Enter the stable folder prefix for this subscription above Azure's date-range and RunID folders. For accounts with multiple Azure subscriptions, each subscription needs a separate export or separate stable folder root so CostRadar does not mix costs across subscription rows.
For example, if Azure writes files like this:
exports/20260601-20260630/RUN_ID/manifest.json
exports/20260601-20260630/RUN_ID/part-0000.csv.gz
enter:
exports
Do not paste the date-range folder, RunID folder, manifest path, or individual CSV file path. Those folders change as Azure runs new exports, so CostRadar needs the stable prefix that stays the same between runs.
For multi-subscription accounts, each CostRadar subscription row must use an export folder that contains only that subscription's cost files. If CostRadar finds rows for another subscription ID in the configured export, validation/import fails instead of silently mixing costs.
Cost type, format, and compression
Cost type is fixed to actual cost in the current CostRadar setup flow. Configure the Azure export as CSV with gzip compression so it writes files ending in .csv.gz. There is no compression setting in the CostRadar setup form.
You also do not need to enter the Azure Export Name. CostRadar finds export files from the Storage Account Resource ID, Container Name, and Export Folder Path.
Common validation errors
Access denied or unable to read blobs
Confirm Storage Blob Data Reader is assigned to this subscription's CostRadar service principal on the export container or storage account. Role assignments can take a few minutes to propagate.
Azure says the Cost Management Exports resource provider is not registered
Register Microsoft.CostManagementExports in the destination storage account subscription, then retry export creation. If your Azure policies block provider registration, ask an Azure Owner, Contributor, or cloud administrator to perform the registration. CostRadar does not need ongoing Contributor/Owner access after the export and read-only roles are configured.
No export files found
If you just created the Azure export, this can be a normal first-run state. Azure may take several hours to publish the first completed Cost Management export. CostRadar stores the reachable storage configuration as Waiting for first export and checks automatically. If the export should already exist, check that the Azure Cost Management export has run successfully and that the Export Folder Path points to the stable prefix above the date-range and RunID folders.
Wrong root folder
If you pasted a path ending in a date range, RunID, manifest.json, or an individual CSV file, replace it with the stable parent folder for that subscription. For example, use exports, not exports/20260601-20260630/RUN_ID.
Data appears delayed after validation
Azure billing data and Azure export files can lag. CostRadar can import only the files Azure has already published to the storage container. Recent current-month data may change as Azure revises billing data.
What to send support
If Storage Export still fails, send support the subscription display name, the storage account name, the container name, the export folder path you entered, the approximate time the Azure export last ran, and the validation error text. Do not send client secrets, access keys, SAS URLs, or exported cost files in chat.