1. Naming convention
Pattern: <type>-<workload>-<env>-<region>-<instance>
| Resource | Example |
|---|---|
| Resource group | rg-payments-prod-cin-001 |
| Virtual machine | vm-payapi-prod-cin-01 (Windows names max 15 chars) |
| Storage account | stpaymentsprodcin001 (no dashes, 3–24 lowercase) |
| Key Vault | kv-payments-prod-cin (globally unique, 3–24) |
| VNet | vnet-payments-prod-cin |
Use the Cloud Adoption Framework abbreviations and decide region short codes (cin = Central India, sin = South India).
2. Mandatory tags
| Tag | Example | Why |
|---|---|---|
owner | payments-team@contoso.com | Who to call |
costCenter | CC-4512 | Chargeback |
env | prod / dr / dev | Policy, alerting, shutdown schedules |
app | payments | Grouping |
dataClass | confidential | Security controls |
drTier | tier1 / tier2 / none | Which DR runbook applies |
Enforce with policy: Require a tag on resource groups (Deny) and Inherit a tag from the resource group if missing (Modify) for resources.
3. Budgets
az consumption budget create --budget-name payments-prod-monthly --amount 5000 \
--category cost --time-grain monthly \
--start-date 2026-11-01 --end-date 2027-10-31 \
--resource-group rg-payments-prod-cin-001
Add notifications at 50%, 80% and 100% forecasted and actual spend (portal or API). Forecast alerts give days of warning instead of hours.
4. Quick savings checks (monthly)
- Unattached managed disks and orphaned public IPs
- VMs stopped but not deallocated (still billed for compute)
- Azure Advisor cost recommendations reviewed
- Dev/test VMs with auto-shutdown
- Reservations / savings plans coverage for steady workloads
- Log Analytics ingestion by table (
Usagetable) for noisy sources
az disk list --query "[?diskState=='Unattached'].{name:name, rg:resourceGroup, sizeGb:diskSizeGb}" -o table
az network public-ip list --query "[?ipConfiguration==null].{name:name, rg:resourceGroup}" -o table
5. DR cost visibility
Tag DR resources with env=dr so the customer can see what standby capacity costs. It makes the RTO/RPO conversation concrete: warm standby costs more than backup-and-restore, and the tags show by how much.