azure-radar
A CLI tool to inventory, diagram, and run operations on Azure services using Azure CLI, mirroring gcp-radar for GCP.
Requirements
- Azure CLI: Install from https://docs.microsoft.com/cli/azure/install-azure-cli
- Python 3.8+
Installation
pip install azure-radar
Authentication
This tool uses Azure CLI for authentication, supporting various methods including SSO.
For SSO-enabled accounts:
-
Install Azure CLI (if not already installed):
brew install azure-cli # macOS # or use appropriate installer for your OS
-
Authenticate with SSO:
az login --use-device-code # or if browser available az login
-
Set subscription (if you have multiple):
az account set --subscription <subscription-id> # or export it export AZURE_SUBSCRIPTION_ID=<your-subscription-id>
Usage
# Generate CSV inventory of all Azure resources
azure-radar inventory
# Generate draw.io diagram of services
azure-radar diagram
# Run both inventory and diagram
azure-radar run
# Pull the last 30 days of cost data to CSV
azure-radar billing
# ...or fold billing into the full run
azure-radar run --billing
Billing
azure-radar billing queries the Azure Cost Management API (via az rest) and writes
daily cost rows broken down by service and resource.
# Last 30 days (default)
azure-radar billing
# Last 60 or 90 days
azure-radar billing --days 60
azure-radar billing --days 90
# Custom output file
azure-radar billing --days 90 --output q3-spend.csv
# Amortized instead of actual cost (spreads reservation/savings-plan purchases)
azure-radar billing --cost-type AmortizedCost
# Narrow to specific services and/or resource groups (both repeatable)
azure-radar billing --service "Virtual Machines" --service "Storage" --resource-group rg-prod
# Same options are available on the full run
azure-radar run --billing --days 90 --billing-output spend.csv
| Option | Default | Description |
|---|---|---|
--days, -d |
30 |
Lookback window — must be 30, 60, or 90 |
--output, -o |
azure_billing.csv |
CSV output file |
--cost-type |
ActualCost |
ActualCost or AmortizedCost |
--service |
(all) | Filter to a service name; repeat for several |
--resource-group |
(all) | Filter to a resource group; repeat for several |
The CSV contains one row per day / service / resource:
| Column | Description |
|---|---|
Date |
Usage day (YYYY-MM-DD) |
ServiceName |
Cost Management service name |
ServiceType |
Normalized service name, matching azure_inventory.csv |
ResourceName |
Resource name parsed from the resource ID |
ResourceGroup |
Resource group parsed from the resource ID |
ResourceType |
ARM type, e.g. Microsoft.Compute/virtualMachines |
ResourceId |
Full ARM resource ID |
Cost |
Cost for that day |
Currency |
Billing currency |
SubscriptionId |
Subscription the cost belongs to |
Because ServiceType is normalized the same way as the inventory output, the two CSVs
can be joined on ServiceType (or on resource name/group) for cost-per-service reporting.
Permissions: reading cost data requires the Cost Management Reader role (or higher) on the subscription, which is separate from the reader role used by
inventory.
Output Files
azure_inventory.csv- CSV file with all Azure resourcesazure_diagram.drawio- Draw.io diagram of service distributionazure_billing.csv- CSV file with daily costs per service and resource (withbilling/--billing)
Supported Azure Services
This tool currently supports the following Azure service categories for inventory and diagram generation:
- Virtual Machines
- Azure SQL
- Azure Functions
- AKS
- Storage Accounts
- Container Apps
- Cosmos DB
- Service Bus
- Azure ML
Cloud Service Mapping (Azure → AWS → GCP → OCI)
| Azure | AWS | GCP | OCI |
|---|---|---|---|
| Virtual Machines | EC2 | Compute Engine | OCI Compute |
| Azure SQL | RDS | Cloud SQL | Autonomous Database |
| Azure Functions | Lambda | Cloud Functions | OCI Functions |
| AKS | EKS | GKE | Container Engine for Kubernetes |
| Storage Accounts | S3 | Cloud Storage | Object Storage |
| Container Apps | App Runner | Cloud Run | Container Instances |
| Cosmos DB | DynamoDB | Firestore | NoSQL Database |
| Service Bus | SNS/SQS | Pub/Sub | Streaming Service |
| Azure ML | SageMaker | Vertex AI | Data Science |
Related PyPI packages
This project is part of a family of "radars" tools available on PyPI. Two related packages you may find useful:
aws-radar— available on PyPI (example versions: 0.1.1, 0.1.0)gcp-radar— available on PyPI (example versions: 0.1.9, 0.1.3, 0.1.1, 0.1.0)
Install them with pip:
pip install aws-radar
pip install gcp-radar
These packages follow a similar CLI shape (inventory, diagram, run) for their respective clouds.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file azure_radar-1.2.1.tar.gz.
File metadata
- Download URL: azure_radar-1.2.1.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ca71b0f96192c15dd1f0e921a141ddb215dd762174425ca2fbaaf232c4e6494
|
|
| MD5 |
c251d947ee5e01a230d5bf8acc3be6a0
|
|
| BLAKE2b-256 |
e26c6dfb4a1f2a9eac646978c336e1a48b487070867194cd4509fefe8444194b
|
File details
Details for the file azure_radar-1.2.1-py3-none-any.whl.
File metadata
- Download URL: azure_radar-1.2.1-py3-none-any.whl
- Upload date:
- Size: 12.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b67efa30b998c8a5e6628b43cd3dc789a3732f412ccc7835a20f169acdc87baa
|
|
| MD5 |
d80009f7e85ce832d8a5e35e3a7d165c
|
|
| BLAKE2b-256 |
e7fbf222dbabd6cf59bc34c5ba2c48ab064b56c5611049932aec249f5f81ea89
|