Multi-Region & Failover Checks
Overview
Multi-region deployment protects against entire region outages. This requires deploying compute in multiple regions and using a global load balancer (Azure Front Door or Traffic Manager) to route traffic.
Resource Graph Queries
⚠️ Output format: Use
--query "data[]" -o json(not-o table).az graph query -o tableonly renders summary columns and does not show projected fields.
Check if App is Deployed in Multiple Regions
bash
az graph query -q "
Resources
| where type in~ ('microsoft.web/sites', 'microsoft.app/containerapps')
| extend appKind = case(
type =~ 'microsoft.web/sites' and kind contains 'functionapp', 'FunctionApp',
type =~ 'microsoft.web/sites', 'WebApp',
type =~ 'microsoft.app/containerapps', 'ContainerApp',
'Other')
| extend baseName = extract('^(.+?)(-[a-z]+\\d*)?$', 1, name)
| summarize regions=make_list(location), regionCount=dcount(location), apps=make_list(name) by baseName, appKind
| where regionCount > 1
| project baseName, appKind, regionCount, regions, apps
" --query "data[]" -o jsonInterpretation:
- Results show apps with the same base name deployed across multiple regions → ✅ Multi-region
- No results → ❌ All apps are single-region
Important: The baseName extraction uses a naming convention (e.g., my-app-eastus, my-app-westus). If apps don't follow this pattern, also check by resource tags:
bash
az graph query -q "
Resources
| where type in~ ('microsoft.web/sites', 'microsoft.app/containerapps')
| where isnotempty(tags['app-group']) or isnotempty(tags['application'])
| extend appGroup = coalesce(tostring(tags['app-group']), tostring(tags['application']))
| summarize regions=make_list(location), regionCount=dcount(location) by appGroup
| where regionCount > 1
| project appGroup, regionCount, regions
" --query "data[]" -o jsonCheck for Azure Front Door
bash
az graph query -q "
Resources
| where type =~ 'microsoft.cdn/profiles'
| where sku.name =~ 'Standard_AzureFrontDoor' or sku.name =~ 'Premium_AzureFrontDoor'
| project name, resourceGroup, sku=sku.name
" --query "data[]" -o jsonCheck for Traffic Manager Profiles
bash
az graph query -q "
Resources
| where type =~ 'microsoft.network/trafficmanagerprofiles'
| extend routingMethod = tostring(properties.trafficRoutingMethod)
| extend endpoints = array_length(properties.endpoints)
| project name, resourceGroup, routingMethod, endpoints, status=properties.profileStatus
" --query "data[]" -o jsonCheck Front Door Origins/Backends
bash
# List Front Door origin groups and origins
az afd origin-group list \