All skills
microsoft avatar

/azure-reliability

@7804b4d official

Assess and improve the reliability posture of PaaS Applications (Azure Functions and Azure App Service). Scans deployed resources for zone redundancy, ZRS storage, health probes, and multi-region failover. Presents a feature-pivoted checklist, then drives staged remediation (CLI or IaC patches) end-to-end with user confirmation. WHEN: "assess reliability", "check reliability", "zone redundant", "multi-region failover", "high availability", "disaster recovery", "single points of failure", "reliability posture", "resiliency".

Use this Skill: https://skilld.dev/gh/microsoft/github-copilot-for-azure/azure-reliability

This session only. Nothing lands on disk.

referencesmulti-region-checks.md

≈1.5k tokens on demand. Your agent reads this file only when SKILL.md points to it.

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 table only renders summary columns and does not show projected fields.

Check if App is Deployed in Multiple Regions

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 json

Interpretation:

  • 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:

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 json

Check for Azure Front Door

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 json

Check for Traffic Manager Profiles

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 json

Check Front Door Origins/Backends

# List Front Door origin groups and origins
az afd origin-group list \
  --profile-name <front-door-name> \
  --resource-group <rg> \
  --query "[].{name:name, origins:length(origins)}" -o table

az afd origin list \
  --profile-name <front-door-name> \
  --resource-group <rg> \
  --origin-group-name <group-name> \
  --query "[].{name:name, hostName:hostName, priority:priority, weight:weight}" -o table

Assessment Criteria

Check Pass Fail
App deployed in ≥2 regions ✅ Multi-region ❌ Single region
Global load balancer exists (Front Door or TM) ✅ Traffic routing ❌ No failover mechanism
Health probes configured on load balancer ✅ Auto-failover ⚠️ Manual failover only
Storage is geo-redundant (GRS/GZRS) ✅ Data survives region failure ❌ Data loss risk

Multi-Region Patterns

Active-Passive (Recommended starting point)

Users → Azure Front Door → Primary Region (priority 1)
                        → Secondary Region (priority 2, standby)
  • Primary serves all traffic
  • Front Door health probes detect primary failure
  • Automatic failover to secondary
  • Lower cost (secondary can be scaled down)

Active-Active

Users → Azure Front Door → Region A (weight 50)
                        → Region B (weight 50)
  • Both regions serve traffic simultaneously
  • Better performance (route to nearest)
  • Higher cost (both at full capacity)
  • Requires stateless design or data sync

Remediation: Generate Multi-Region IaC

When user wants multi-region, generate Bicep that includes:

  1. Secondary region compute — Same service type as primary
  2. Secondary region storage — ZRS in secondary region
  3. Azure Front Door profile — With:
    • Origin group containing both regions
    • Health probe (HTTP/HTTPS to health endpoint)
    • Routing rule (priority for active-passive, weighted for active-active)
  4. DNS configuration — Custom domain on Front Door

Bicep Skeleton for Active-Passive Front Door

resource frontDoor 'Microsoft.Cdn/profiles@2024-02-01' = {
  name: frontDoorName
  location: 'global'
  sku: {
    name: 'Standard_AzureFrontDoor'
  }
}

resource originGroup 'Microsoft.Cdn/profiles/originGroups@2024-02-01' = {
  parent: frontDoor
  name: 'primary-group'
  properties: {
    healthProbeSettings: {
      probePath: '/api/health'
      probeProtocol: 'Https'
      probeIntervalInSeconds: 30
    }
    loadBalancingSettings: {
      sampleSize: 4
      successfulSamplesRequired: 3
    }
  }
}

resource primaryOrigin 'Microsoft.Cdn/profiles/originGroups/origins@2024-02-01' = {
  parent: originGroup
  name: 'primary'
  properties: {
    hostName: primaryAppHostName
    priority: 1
    weight: 1000
    originHostHeader: primaryAppHostName
  }
}

resource secondaryOrigin 'Microsoft.Cdn/profiles/originGroups/origins@2024-02-01' = {
  parent: originGroup
  name: 'secondary'
  properties: {
    hostName: secondaryAppHostName
    priority: 2
    weight: 1000
    originHostHeader: secondaryAppHostName
  }
}

Reporting

For the reliability checklist, mark the Multi-Region column per resource:

  • ✅ — resource is deployed in ≥2 regions AND fronted by Azure Front Door / Traffic Manager with health probes
  • ❌ — single region OR multi-region without an active global load balancer / health probes
  • For Front Door / Traffic Manager rows: ✅ if configured with health probes, ❌ if absent or missing health probes

Source: SKILL.md on GitHub

No alerts4mo3 checks · Risk SAFE
  • Gen Agent Trust Hub4mo

    This skill provides a structured framework for assessing and enhancing the reliability of Azure Functions deployments. It utilizes standard Azure management tools to provide a checklist of improvements and automate remediation steps. The skill maintains a high level of security by requesting explicit user consent for all operations and focusing on official infrastructure tools.

  • Socket4mo

    No alerts

  • Snyk4mo

    Risk: LOW · No issues

Signed by skilld at 7804b4d. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 2 days ago
metadata
{
  "author": "Microsoft",
  "version": "0.0.0-placeholder"
}
  • azure
  • reliability
  • zone-redundancy
  • multi-region
  • failover
  • azure-functions
  • app-service
  • disaster-recovery
  • high-availability
  • iac

README badge

README badge for microsoft/github-copilot-for-azure/azure-reliability

Scans Azure Functions and App Service for zone redundancy, ZRS storage, health probes, and multi-region failover, then applies fixes via Azure CLI or infrastructure-as-code patches. Presents a feature-pivoted reliability checklist and walks through staged remediation with user confirmation at each step.

Generated from the current SKILL.md.

What Azure services does this skill assess?
Currently Azure Functions and Azure App Service only. Azure Container Apps support is planned but not yet available. The skill will identify Container Apps resources in your scope but mark them as not yet assessed.
Does this skill make changes to my resources automatically?
No. The skill always asks for confirmation before executing any changes. It presents a fix plan showing what will change, cost implications, and breaking changes, then lets you choose between applying fixes via CLI or patching your IaC (Bicep/Terraform).
What permissions do I need to run this skill?
Reader access on your subscription or resource group for assessment, and Contributor access if you want to make configuration changes. You must also have the Azure Resource Graph extension installed via `az extension add --name resource-graph`.
Does this skill help with multi-region failover setup?
Yes. After assessing and fixing core reliability features (zone redundancy, storage, health probes), the skill can help you set up multi-region failover using Front Door or Traffic Manager, but only with explicit user consent.

Generated from the current SKILL.md. These answers refresh after source changes.