diff --git a/tools/data/recommendations.json b/tools/data/recommendations.json index 9c145d722..8f3814f18 100644 --- a/tools/data/recommendations.json +++ b/tools/data/recommendations.json @@ -5,8 +5,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Create and use replica sets for resiliency or geolocation in Microsoft Entra Domain Services", - "url": "https://learn.microsoft.com/en-us/entra/identity/domain-services/tutorial-create-replica-set" + "url": "https://learn.microsoft.com/en-us/entra/identity/domain-services/tutorial-create-replica-set", + "name": "Create and use replica sets for resiliency or geolocation in Microsoft Entra Domain Services" } ], "recommendationControl": "HighAvailability", @@ -26,8 +26,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Create and use replica sets for resiliency or geolocation in Microsoft Entra Domain Services", - "url": "https://learn.microsoft.com/en-us/entra/identity/domain-services/tutorial-create-replica-set" + "url": "https://learn.microsoft.com/en-us/entra/identity/domain-services/tutorial-create-replica-set", + "name": "Create and use replica sets for resiliency or geolocation in Microsoft Entra Domain Services" } ], "recommendationControl": "HighAvailability", @@ -47,12 +47,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Change your API Management service tier", - "url": "https://learn.microsoft.com/en-us/azure/api-management/upgrade-and-scale#change-your-api-management-service-tier" - }, - { - "name": "Migrate Azure API Management to availability zone support", - "url": "https://learn.microsoft.com/en-us/azure/reliability/migrate-api-mgt" + "url": "https://learn.microsoft.com/en-us/azure/api-management/upgrade-and-scale#change-your-api-management-service-tier", + "name": "Change your API Management service tier" } ], "recommendationControl": "HighAvailability", @@ -72,12 +68,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Ensure API Management availability and reliability", - "url": "https://learn.microsoft.com/en-us/azure/api-management/high-availability#availability-zones" - }, - { - "name": "Migrate Azure API Management to availability zone support", - "url": "https://learn.microsoft.com/en-us/azure/reliability/migrate-api-mgt" + "url": "https://learn.microsoft.com/en-us/azure/api-management/high-availability#availability-zones", + "name": "Ensure API Management availability and reliability" } ], "recommendationControl": "HighAvailability", @@ -97,12 +89,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure API Management - stv1 platform retirement (August 2024)", - "url": "https://learn.microsoft.com/en-us/azure/api-management/breaking-changes/stv1-platform-retirement-august-2024" - }, - { - "name": "Azure API Management compute platform", - "url": "https://learn.microsoft.com/en-us/azure/api-management/compute-infrastructure" + "url": "https://learn.microsoft.com/en-us/azure/api-management/breaking-changes/stv1-platform-retirement-august-2024", + "name": "Azure API Management - stv1 platform retirement (August 2024)" } ], "recommendationControl": "HighAvailability", @@ -122,8 +110,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Setting up auto-scale for Azure API Management", - "url": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale" + "url": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale", + "name": "Setting up auto-scale for Azure API Management" } ], "recommendationControl": "HighAvailability", @@ -143,8 +131,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Deploy API Management instance to multiple Azure regions", - "url": "https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-deploy-multi-region" + "url": "https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-deploy-multi-region", + "name": "Deploy API Management instance to multiple Azure regions" } ], "recommendationControl": "DisasterRecovery", @@ -164,12 +152,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Add caching to improve performance in Azure API Management", - "url": "https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-cache" - }, - { - "name": "Use an external cache in Azure API Management", - "url": "https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-cache-external" + "url": "https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-cache", + "name": "Add caching to improve performance in Azure API Management" } ], "recommendationControl": "HighAvailability", @@ -189,8 +173,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Health probes for Azure Container Apps", - "url": "https://learn.microsoft.com/azure/container-apps/health-probes?tabs=arm-template" + "url": "https://learn.microsoft.com/azure/container-apps/health-probes?tabs=arm-template", + "name": "Health probes for Azure Container Apps" } ], "recommendationControl": "HighAvailability", @@ -210,8 +194,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Reliability in Azure Container Apps", - "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-azure-container-apps" + "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-azure-container-apps", + "name": "Reliability in Azure Container Apps" } ], "recommendationControl": "HighAvailability", @@ -231,8 +215,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Purge protection", - "url": "https://learn.microsoft.com/en-us/azure/azure-app-configuration/concept-soft-delete#purge-protection" + "url": "https://learn.microsoft.com/en-us/azure/azure-app-configuration/concept-soft-delete#purge-protection", + "name": "Purge protection" } ], "recommendationControl": "Governance", @@ -252,8 +236,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Choose App Configuration tier", - "url": "https://learn.microsoft.com/en-us/azure/azure-app-configuration/faq#which-app-configuration-tier-should-i-use" + "url": "https://learn.microsoft.com/en-us/azure/azure-app-configuration/faq#which-app-configuration-tier-should-i-use", + "name": "Choose App Configuration tier" } ], "recommendationControl": "HighAvailability", @@ -273,12 +257,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Disaster recovery for Automation accounts", - "url": "https://learn.microsoft.com/en-us/azure/automation/automation-disaster-recovery?tabs=win-hrw%2Cps-script%2Coption-one" - }, - { - "name": "Disaster recovery scenarios for cloud and hybrid jobs", - "url": "https://learn.microsoft.com/en-us/azure/automation/automation-disaster-recovery?tabs=win-hrw%2Cps-script%2Coption-one#scenarios-for-cloud-and-hybrid-jobs" + "url": "https://learn.microsoft.com/en-us/azure/automation/automation-disaster-recovery?tabs=win-hrw%2Cps-script%2Coption-one", + "name": "Disaster recovery for Automation accounts" } ], "recommendationControl": "HighAvailability", @@ -298,8 +278,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Configure Azure Service Health alerts", - "url": "https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring#design-recommendations" + "url": "https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring#design-recommendations", + "name": "Configure Azure Service Health alerts" } ], "recommendationControl": "MonitoringAndAlerting", @@ -319,8 +299,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure and streamline alerts", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts", + "name": "Configure and streamline alerts" } ], "recommendationControl": "MonitoringAndAlerting", @@ -340,8 +320,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure and streamline alerts", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts", + "name": "Configure and streamline alerts" } ], "recommendationControl": "MonitoringAndAlerting", @@ -361,12 +341,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Implement high availability", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/infrastructure#implement-high-availability" - }, - { - "name": "Stretched Clusters", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/deploy-vsan-stretched-clusters" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/deploy-vsan-stretched-clusters", + "name": "Stretched Clusters" } ], "recommendationControl": "HighAvailability", @@ -386,8 +362,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Supported metrics and activities", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-alerts-for-azure-vmware-solution#supported-metrics-and-activities" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-alerts-for-azure-vmware-solution#supported-metrics-and-activities", + "name": "Supported metrics and activities" } ], "recommendationControl": "MonitoringAndAlerting", @@ -407,8 +383,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Manage logs and archives", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#manage-logs-and-archives" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#manage-logs-and-archives", + "name": "Manage logs and archives" } ], "recommendationControl": "MonitoringAndAlerting", @@ -428,8 +404,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure and streamline alerts", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts", + "name": "Configure and streamline alerts" } ], "recommendationControl": "MonitoringAndAlerting", @@ -449,8 +425,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure and streamline alerts", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/monitoring#configure-and-streamline-alerts", + "name": "Configure and streamline alerts" } ], "recommendationControl": "MonitoringAndAlerting", @@ -470,8 +446,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Lock your resources to protect your infrastructure", - "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources" + "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources", + "name": "Lock your resources to protect your infrastructure" } ], "recommendationControl": "Governance", @@ -491,8 +467,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure Customer Managed Keys", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-customer-managed-keys?tabs=azure-portal" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-customer-managed-keys?tabs=azure-portal", + "name": "Configure Customer Managed Keys" } ], "recommendationControl": "Security", @@ -512,8 +488,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure DNS forwarder", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-dns-azure-vmware-solution#configure-dns-forwarder" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-dns-azure-vmware-solution#configure-dns-forwarder", + "name": "Configure DNS forwarder" } ], "recommendationControl": "HighAvailability", @@ -533,8 +509,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/reliability/reliability-batch#cross-region-disaster-recovery-and-business-continuity" + "url": "https://learn.microsoft.com/azure/reliability/reliability-batch#cross-region-disaster-recovery-and-business-continuity", + "name": "Learn More" } ], "recommendationControl": "MonitoringAndAlerting", @@ -554,8 +530,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/batch/create-pool-availability-zones" + "url": "https://learn.microsoft.com/azure/batch/create-pool-availability-zones", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -575,8 +551,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Enable zone redundancy for Azure Cache for Redis", - "url": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy" + "url": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy", + "name": "Enable zone redundancy for Azure Cache for Redis" } ], "recommendationControl": "HighAvailability", @@ -596,8 +572,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Schedule Redis Updates", - "url": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-administration#update-channel-and-schedule-updates" + "url": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-administration#update-channel-and-schedule-updates", + "name": "Schedule Redis Updates" } ], "recommendationControl": "HighAvailability", @@ -617,8 +593,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Configure private endpoints for Azure Redis Cache", - "url": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-network-isolation" + "url": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-network-isolation", + "name": "Configure private endpoints for Azure Redis Cache" } ], "recommendationControl": "Security", @@ -638,8 +614,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Secure traffic to Azure Front Door origins", - "url": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions&pivots=front-door-standard-premium" + "url": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions&pivots=front-door-standard-premium", + "name": "Secure traffic to Azure Front Door origins" } ], "recommendationControl": "Security", @@ -659,16 +635,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "REST API Reference", - "url": "https://learn.microsoft.com/rest/api/frontdoor/" - }, - { - "name": "Client library for Java", - "url": "https://learn.microsoft.com/java/api/overview/azure/resourcemanager-frontdoor-readme?view=azure-java-preview" - }, - { - "name": "SDK for Python", - "url": "https://learn.microsoft.com/python/api/overview/azure/front-door?view=azure-python" + "url": "https://learn.microsoft.com/rest/api/frontdoor/", + "name": "REST API Reference" } ], "recommendationControl": "Scalability", @@ -688,16 +656,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor metrics and logs in Azure Front Door", - "url": "https://learn.microsoft.com/azure/frontdoor/front-door-diagnostics?pivots=front-door-standard-premium" - }, - { - "name": "WAF logs", - "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-monitor?pivots=front-door-standard-premium#waf-logs" - }, - { - "name": "Configure Azure Front Door logs", - "url": "https://learn.microsoft.com/azure/frontdoor/standard-premium/how-to-logs" + "url": "https://learn.microsoft.com/azure/frontdoor/front-door-diagnostics?pivots=front-door-standard-premium", + "name": "Monitor metrics and logs in Azure Front Door" } ], "recommendationControl": "MonitoringAndAlerting", @@ -717,8 +677,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "End-to-end TLS with Azure Front Door", - "url": "https://learn.microsoft.com/azure/frontdoor/end-to-end-tls?pivots=front-door-standard-premium" + "url": "https://learn.microsoft.com/azure/frontdoor/end-to-end-tls?pivots=front-door-standard-premium", + "name": "End-to-end TLS with Azure Front Door" } ], "recommendationControl": "Security", @@ -738,8 +698,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Create HTTP to HTTPS redirect rule", - "url": "https://learn.microsoft.com/azure/frontdoor/front-door-how-to-redirect-https#create-http-to-https-redirect-rule" + "url": "https://learn.microsoft.com/azure/frontdoor/front-door-how-to-redirect-https#create-http-to-https-redirect-rule", + "name": "Create HTTP to HTTPS redirect rule" } ], "recommendationControl": "Security", @@ -759,8 +719,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Configure HTTPS on an Azure Front Door custom domain using the Azure portal", - "url": "https://learn.microsoft.com/azure/frontdoor/standard-premium/how-to-configure-https-custom-domain?tabs=powershell" + "url": "https://learn.microsoft.com/azure/frontdoor/standard-premium/how-to-configure-https-custom-domain?tabs=powershell", + "name": "Configure HTTPS on an Azure Front Door custom domain using the Azure portal" } ], "recommendationControl": "Security", @@ -780,8 +740,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Select the certificate for Azure Front Door to deploy", - "url": "https://learn.microsoft.com/azure/frontdoor/standard-premium/how-to-configure-https-custom-domain?tabs=powershell#select-the-certificate-for-azure-front-door-to-deploy" + "url": "https://learn.microsoft.com/azure/frontdoor/standard-premium/how-to-configure-https-custom-domain?tabs=powershell#select-the-certificate-for-azure-front-door-to-deploy", + "name": "Select the certificate for Azure Front Door to deploy" } ], "recommendationControl": "HighAvailability", @@ -801,8 +761,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Preserve the original HTTP host name between a reverse proxy and its back-end web application", - "url": "https://learn.microsoft.com/azure/architecture/best-practices/host-name-preservation" + "url": "https://learn.microsoft.com/azure/architecture/best-practices/host-name-preservation", + "name": "Preserve the original HTTP host name between a reverse proxy and its back-end web application" } ], "recommendationControl": "Governance", @@ -822,8 +782,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Web Application Firewall on Azure Front Door", - "url": "https://learn.microsoft.com/azure/frontdoor/web-application-firewall" + "url": "https://learn.microsoft.com/azure/frontdoor/web-application-firewall", + "name": "Web Application Firewall on Azure Front Door" } ], "recommendationControl": "Security", @@ -843,8 +803,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Health probes", - "url": "https://learn.microsoft.com/azure/frontdoor/health-probes" + "url": "https://learn.microsoft.com/azure/frontdoor/health-probes", + "name": "Health probes" } ], "recommendationControl": "HighAvailability", @@ -864,8 +824,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Health Endpoint Monitoring pattern", - "url": "https://learn.microsoft.com/azure/architecture/patterns/health-endpoint-monitoring" + "url": "https://learn.microsoft.com/azure/architecture/patterns/health-endpoint-monitoring", + "name": "Health Endpoint Monitoring pattern" } ], "recommendationControl": "HighAvailability", @@ -885,8 +845,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Supported HTTP methods for health probes", - "url": "https://learn.microsoft.com/azure/frontdoor/health-probes#supported-http-methods-for-health-probes" + "url": "https://learn.microsoft.com/azure/frontdoor/health-probes#supported-http-methods-for-health-probes", + "name": "Supported HTTP methods for health probes" } ], "recommendationControl": "Scalability", @@ -906,8 +866,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Geo filter WAF policy - GeoMatch", - "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-geo-filtering" + "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-geo-filtering", + "name": "Geo filter WAF policy - GeoMatch" } ], "recommendationControl": "Security", @@ -927,8 +887,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Private link for Azure Front Door", - "url": "https://learn.microsoft.com/azure/frontdoor/private-link" + "url": "https://learn.microsoft.com/azure/frontdoor/private-link", + "name": "Private link for Azure Front Door" } ], "recommendationControl": "Security", @@ -948,8 +908,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Compare pricing between Azure Front Door tiers", - "url": "https://learn.microsoft.com/en-us/azure/frontdoor/understanding-pricing" + "url": "https://learn.microsoft.com/en-us/azure/frontdoor/understanding-pricing", + "name": "Compare pricing between Azure Front Door tiers" } ], "recommendationControl": "ServiceUpgradeAndRetirement", @@ -963,21 +923,42 @@ "automationAvailable": false, "query": "//under-development\r\n" }, + { + "aprlGuid": "042c034e-2b85-4c1d-bf9a-65c75a6b43e9", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#global-provisioned", + "name": "Learn More" + } + ], + "recommendationControl": "HighAvailability", + "longDescription": "Global provisioned deployments provide reserved model processing capacity for high and predictable throughput using Azure global infrastructure. Suitable for applications requiring lower latency variance at large workload usage. Provides cost savings.\n", + "pgVerified": true, + "description": "Leverage Global provisioned deployment to ensure high and predictable throughput", + "potentialBenefits": "Low latency variance, high throughputs, business continuity", + "tags": null, + "recommendationResourceType": "Microsoft.CognitiveServices/Accounts", + "recommendationImpact": "High", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\r\n" + }, { "aprlGuid": "081fc8a4-b2d9-405b-b351-334e621016f5", "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#global-provisioned" + "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#global-standard", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", - "longDescription": "Global deployments leverage Azure's global infrastructure to route customer traffic to the best available data center for the customer’s inference requests. This ensures highest initial throughput limits and best model availability while still providing our uptime SLA and low latency.", - "pgVerified": false, - "description": "Ensure AOAI models are deployed using Global deployment", - "potentialBenefits": "Low latency, best model availability, business continuity", + "longDescription": "Global Standard leverages Azure's global infrastructure to route traffic to the best available data center for customer's real-time inference requests. It provides the highest default quota and eliminates the need to load balance across multiple resources. Optimized for low to medium volume usage.\n", + "pgVerified": true, + "description": "Ensure PAYG AOAI models leverage Global Standard deployment", + "potentialBenefits": "Best model availability, business continuity", "tags": null, "recommendationResourceType": "Microsoft.CognitiveServices/Accounts", "recommendationImpact": "High", @@ -990,12 +971,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput" + "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", - "longDescription": "Provisioned Throughput offers pre-allocated capacity for consistent workloads, while Pay-as-You-Go charges for actual usage, ideal for variable workloads. During overflow, the Pay-as-You-Go instance manages excess load, ensuring service efficiency\n", + "longDescription": "Provisioned Throughput offers pre-allocated capacity for consistent workloads, while Pay-as-You-Go charges for actual usage, ideal for variable workloads. During overflow, the Pay-as-You-Go instance manages excess load, ensuring service efficiency.\n", "pgVerified": true, "description": "Deploy a PAYG instance of the model with provisioned throughput to manage overflow effectively", "potentialBenefits": "PAYG model balances cost and performance and helps scale", @@ -1011,12 +992,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#global-batch" + "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#global-batch", + "name": "Learn More" } ], "recommendationControl": "Scalability", - "longDescription": "Global batch efficiently handles large-scale tasks within 24 hours. Submit requests in a single file, with a separate quota to protect online workloads. Key uses: data processing, content generation, document review, customer support automation, data extraction, NLP tasks, and marketing\n", + "longDescription": "Global batch efficiently handles large-scale tasks within 24 hours. Submit requests in a single file, with a separate quota to protect online workloads. Key uses: data processing, content generation, document review, customer support automation, data extraction, NLP tasks, and marketing.\n", "pgVerified": true, "description": "Ensure that models are deployed using Global batch for large scale processing", "potentialBenefits": "Cost effective faster turnaround for large-scale processing.", @@ -1032,12 +1013,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#data-zone-standard" + "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#data-zone-standard", + "name": "Learn More" } ], "recommendationControl": "Governance", - "longDescription": "Data zone deployments route customer traffic to the highest availability data center within the defined data zone, ensuring data at rest remains within the Azure OpenAI resource geography. This approach offers increased quota limits and ensures data processing occurs within the specified data zone\n", + "longDescription": "Data zone deployments route customer traffic to the highest availability data center within the defined data zone, ensuring data at rest remains within the Azure OpenAI resource geography. This approach offers increased quota limits and ensures data processing occurs within the specified data zone.\n", "pgVerified": true, "description": "Ensure AOAI models are deployed using Data Zone Standard for data residency requirements", "potentialBenefits": "Enforce data residency and compliance standards", @@ -1047,14 +1028,35 @@ "automationAvailable": false, "query": "// cannot-be-validated-with-arg\r\n" }, + { + "aprlGuid": "72b1b4ad-a14b-4430-9799-91bda782973d", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/architecture/ai-ml/openai/architecture/log-monitor-azure-openai", + "name": "Learn more" + } + ], + "recommendationControl": "MonitoringAndAlerting", + "longDescription": "Implementing a comprehensive monitoring solution for AOAI involves using Azure Monitor to track API usage, performance metrics, and security events. This setup helps optimize performance, manage costs, and ensure compliance by providing detailed insights into model usage and potential issues.\n", + "pgVerified": false, + "description": "Use comprehensive monitoring solution for AOAI service", + "potentialBenefits": "Optimize performance and compliance with detailed insights", + "tags": null, + "recommendationResourceType": "Microsoft.CognitiveServices/Accounts", + "recommendationImpact": "Medium", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\r\n" + }, { "aprlGuid": "61187af4-7d36-4b48-b16e-de78bef143a0", "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/business-continuity-disaster-recovery" + "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -1074,12 +1076,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Shared Disk Introduction", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-shared" - }, - { - "name": "Enable Shared Disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-shared-enable?tabs=azure-portal" + "url": "https://learn.microsoft.com/azure/virtual-machines/disks-shared", + "name": "Azure Shared Disk Introduction" } ], "recommendationControl": "OtherBestPractices", @@ -1099,8 +1097,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Redundancy options for managed disks", - "url": "https://aka.ms/zrsdisksdoc" + "url": "https://aka.ms/zrsdisksdoc", + "name": "Redundancy options for managed disks" } ], "recommendationControl": "HighAvailability", @@ -1120,8 +1118,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Compute Gallery best practices", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#best-practices" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#best-practices", + "name": "Compute Gallery best practices" } ], "recommendationControl": "HighAvailability", @@ -1141,12 +1139,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Compute Gallery best practices", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#best-practices" - }, - { - "name": "Zone-redundant storage", - "url": "https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy#zone-redundant-storage" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#best-practices", + "name": "Compute Gallery best practices" } ], "recommendationControl": "HighAvailability", @@ -1166,16 +1160,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Compute Gallery best practices", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#best-practices" - }, - { - "name": "Generation 1 vs Generation 2 in Hyper-V", - "url": "https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/plan/should-i-create-a-generation-1-or-2-virtual-machine-in-hyper-v" - }, - { - "name": "Images in Compute gallery", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/shared-image-galleries?tabs=azure-cli" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#best-practices", + "name": "Compute Gallery best practices" } ], "recommendationControl": "HighAvailability", @@ -1195,8 +1181,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Compute Gallery Replication", - "url": "https://learn.microsoft.com/azure/virtual-machines/azure-compute-gallery#replication" + "url": "https://learn.microsoft.com/azure/virtual-machines/azure-compute-gallery#replication", + "name": "Compute Gallery Replication" } ], "recommendationControl": "DisasterRecovery", @@ -1216,8 +1202,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Compute Gallery Scaling", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#scaling" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery#scaling", + "name": "Compute Gallery Scaling" } ], "recommendationControl": "DisasterRecovery", @@ -1237,12 +1223,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What has changed with Flexible orchestration mode", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-orchestration-modes#what-has-changed-with-flexible-orchestration-mode" - }, - { - "name": "Attach or detach a Virtual Machine to or from a Virtual Machine Scale Set", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-attach-detach-vm?branch=main&tabs=portal-1%2Cportal-2%2Cportal-3" + "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-orchestration-modes#what-has-changed-with-flexible-orchestration-mode", + "name": "What has changed with Flexible orchestration mode" } ], "recommendationControl": "HighAvailability", @@ -1258,12 +1240,12 @@ }, { "aprlGuid": "2bd0be95-a825-6f47-a8c6-3db1fb5eb387", - "recommendationTypeId": "066a047a-9ace-45f4-ac50-6325840a6b00", + "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Create virtual machines in an availability zone using the Azure portal", - "url": "https://learn.microsoft.com/azure/virtual-machines/create-portal-availability-zone?tabs=standard" + "url": "https://learn.microsoft.com/azure/virtual-machines/create-portal-availability-zone?tabs=standard", + "name": "Create virtual machines in an availability zone using the Azure portal" } ], "recommendationControl": "HighAvailability", @@ -1283,8 +1265,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Migrate deployments and resources to Virtual Machine Scale Sets in Flexible orchestration", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/flexible-virtual-machine-scale-sets-migration-resources" + "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/flexible-virtual-machine-scale-sets-migration-resources", + "name": "Migrate deployments and resources to Virtual Machine Scale Sets in Flexible orchestration" } ], "recommendationControl": "HighAvailability", @@ -1304,12 +1286,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist for Virtual Machines", - "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#virtual-machines" - }, - { - "name": "Run a test failover (disaster recovery drill) to Azure", - "url": "https://learn.microsoft.com/azure/site-recovery/site-recovery-test-failover-to-azure" + "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#virtual-machines", + "name": "Resiliency checklist for Virtual Machines" } ], "recommendationControl": "DisasterRecovery", @@ -1329,16 +1307,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Migrate your Azure unmanaged disks by Sep 30, 2025", - "url": "https://learn.microsoft.com/azure/virtual-machines/unmanaged-disks-deprecation" - }, - { - "name": "Migrate Windows VM from unmanaged disks to managed disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/windows/convert-unmanaged-to-managed-disks" - }, - { - "name": "Migrate Linux VM from unmanaged disks to managed disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/linux/convert-unmanaged-to-managed-disks" + "url": "https://learn.microsoft.com/azure/virtual-machines/unmanaged-disks-deprecation", + "name": "Migrate your Azure unmanaged disks by Sep 30, 2025" } ], "recommendationControl": "HighAvailability", @@ -1358,12 +1328,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Introduction to Azure managed disks - Data disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#data-disk" - }, - { - "name": "Azure managed disk types", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-types" + "url": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#data-disk", + "name": "Introduction to Azure managed disks - Data disks" } ], "recommendationControl": "Scalability", @@ -1383,8 +1349,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What is the Azure Backup service?", - "url": "https://learn.microsoft.com/azure/backup/backup-overview" + "url": "https://learn.microsoft.com/azure/backup/backup-overview", + "name": "What is the Azure Backup service?" } ], "recommendationControl": "DisasterRecovery", @@ -1404,8 +1370,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "States and billing status of Azure Virtual Machines", - "url": "https://learn.microsoft.com/azure/virtual-machines/states-billing?context=%2Ftroubleshoot%2Fazure%2Fvirtual-machines%2Fcontext%2Fcontext#power-states-and-billing" + "url": "https://learn.microsoft.com/azure/virtual-machines/states-billing?context=%2Ftroubleshoot%2Fazure%2Fvirtual-machines%2Fcontext%2Fcontext#power-states-and-billing", + "name": "States and billing status of Azure Virtual Machines" } ], "recommendationControl": "Governance", @@ -1425,8 +1391,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Accelerated Networking (AccelNet) overview", - "url": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview" + "url": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview", + "name": "Accelerated Networking (AccelNet) overview" } ], "recommendationControl": "Scalability", @@ -1446,8 +1412,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Accelerated Networking (AccelNet) overview", - "url": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview" + "url": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview", + "name": "Accelerated Networking (AccelNet) overview" } ], "recommendationControl": "Governance", @@ -1467,8 +1433,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Use Source Network Address Translation (SNAT) for outbound connections", - "url": "https://learn.microsoft.com/azure/load-balancer/load-balancer-outbound-connections" + "url": "https://learn.microsoft.com/azure/load-balancer/load-balancer-outbound-connections", + "name": "Use Source Network Address Translation (SNAT) for outbound connections" } ], "recommendationControl": "Security", @@ -1488,8 +1454,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "How network security groups filter network traffic", - "url": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works#intra-subnet-traffic" + "url": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works#intra-subnet-traffic", + "name": "How network security groups filter network traffic" } ], "recommendationControl": "Security", @@ -1509,8 +1475,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Enable or disable IP forwarding", - "url": "https://learn.microsoft.com/azure/virtual-network/virtual-network-network-interface?tabs=network-interface-portal#enable-or-disable-ip-forwarding" + "url": "https://learn.microsoft.com/azure/virtual-network/virtual-network-network-interface?tabs=network-interface-portal#enable-or-disable-ip-forwarding", + "name": "Enable or disable IP forwarding" } ], "recommendationControl": "Security", @@ -1530,8 +1496,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Name resolution for resources in Azure virtual networks", - "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances" + "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances", + "name": "Name resolution for resources in Azure virtual networks" } ], "recommendationControl": "OtherBestPractices", @@ -1551,8 +1517,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Restrict import/export access for managed disks using Azure Private Link", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-enable-private-links-for-import-export-portal" + "url": "https://learn.microsoft.com/azure/virtual-machines/disks-enable-private-links-for-import-export-portal", + "name": "Restrict import/export access for managed disks using Azure Private Link" } ], "recommendationControl": "Security", @@ -1572,12 +1538,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Policy-driven governance", - "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-principles#policy-driven-governance" - }, - { - "name": "Azure Policy Regulatory Compliance controls for Azure Virtual Machines", - "url": "https://learn.microsoft.com/azure/virtual-machines/security-policy" + "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-principles#policy-driven-governance", + "name": "Policy-driven governance" } ], "recommendationControl": "Governance", @@ -1597,8 +1559,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Overview of managed disk encryption options", - "url": "https://learn.microsoft.com/azure/virtual-machines/disk-encryption-overview" + "url": "https://learn.microsoft.com/azure/virtual-machines/disk-encryption-overview", + "name": "Overview of managed disk encryption options" } ], "recommendationControl": "Security", @@ -1618,12 +1580,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Overview of VM insights", - "url": "https://learn.microsoft.com/azure/azure-monitor/vm/vminsights-overview" - }, - { - "name": "Did the extension install properly?", - "url": "https://learn.microsoft.com/azure/azure-monitor/vm/vminsights-troubleshoot#did-the-extension-install-properly" + "url": "https://learn.microsoft.com/azure/azure-monitor/vm/vminsights-overview", + "name": "Overview of VM insights" } ], "recommendationControl": "MonitoringAndAlerting", @@ -1643,8 +1601,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Monitor Agent overview", - "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/agents/agents-overview" + "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/agents/agents-overview", + "name": "Azure Monitor Agent overview" } ], "recommendationControl": "MonitoringAndAlerting", @@ -1664,8 +1622,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use maintenance configurations to control and manage the VM updates", - "url": "https://learn.microsoft.com/azure/virtual-machines/maintenance-configurations" + "url": "https://learn.microsoft.com/azure/virtual-machines/maintenance-configurations", + "name": "Use maintenance configurations to control and manage the VM updates" } ], "recommendationControl": "HighAvailability", @@ -1685,8 +1643,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "B-series burstable virtual machine sizes", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/sizes-b-series-burstable" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/sizes-b-series-burstable", + "name": "B-series burstable virtual machine sizes" } ], "recommendationControl": "Scalability", @@ -1706,8 +1664,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Disk type comparison and decision tree", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types#disk-type-comparison" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types#disk-type-comparison", + "name": "Disk type comparison and decision tree" } ], "recommendationControl": "Scalability", @@ -1727,12 +1685,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Microsoft Azure Boost", - "url": "https://learn.microsoft.com/azure/azure-boost/overview" - }, - { - "name": "Announcing the general availability of Azure Boost", - "url": "https://aka.ms/AzureBoostGABlog" + "url": "https://learn.microsoft.com/azure/azure-boost/overview", + "name": "Microsoft Azure Boost" } ], "recommendationControl": "HighAvailability", @@ -1752,16 +1706,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor scheduled events for your Azure VMs", - "url": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-event-service" - }, - { - "name": "Azure Metadata Service Scheduled Events for Linux VMs", - "url": "https://learn.microsoft.com/azure/virtual-machines/linux/scheduled-events" - }, - { - "name": "Azure Metadata Service Scheduled Events for Windows VMs", - "url": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events" + "url": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-event-service", + "name": "Monitor scheduled events for your Azure VMs" } ], "recommendationControl": "HighAvailability", @@ -1781,8 +1727,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "On-demand Capacity Reservation", - "url": "https://aka.ms/on-demand-capacity-reservations-docs" + "url": "https://aka.ms/on-demand-capacity-reservations-docs", + "name": "On-demand Capacity Reservation" } ], "recommendationControl": "HighAvailability", @@ -1802,8 +1748,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "How to update the Azure Linux Agent on a VM", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/extensions/update-linux-agent?tabs=ubuntu" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/extensions/update-linux-agent?tabs=ubuntu", + "name": "How to update the Azure Linux Agent on a VM" } ], "recommendationControl": "HighAvailability", @@ -1823,8 +1769,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "On-demand Capacity Reservation", - "url": "https://aka.ms/on-demand-capacity-reservations-docs" + "url": "https://aka.ms/on-demand-capacity-reservations-docs", + "name": "On-demand Capacity Reservation" } ], "recommendationControl": "DisasterRecovery", @@ -1844,12 +1790,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "When to use VMSS instead of VMs", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-design-overview#when-to-use-scale-sets-instead-of-virtual-machines" - }, - { - "name": "Azure Well-Architected Framework review - Virtual Machines and Scale Sets", - "url": "https://learn.microsoft.com/azure/well-architected/services/compute/virtual-machines/virtual-machines-review" + "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-design-overview#when-to-use-scale-sets-instead-of-virtual-machines", + "name": "When to use VMSS instead of VMs" } ], "recommendationControl": "Scalability", @@ -1869,8 +1811,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Using Application Health extension with Virtual Machine Scale Sets", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-health-extension?tabs=rest-api" + "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-health-extension?tabs=rest-api", + "name": "Using Application Health extension with Virtual Machine Scale Sets" } ], "recommendationControl": "MonitoringAndAlerting", @@ -1890,8 +1832,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Automatic instance repairs for Azure Virtual Machine Scale Sets", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs#requirements-for-using-automatic-instance-repairs" + "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs#requirements-for-using-automatic-instance-repairs", + "name": "Automatic instance repairs for Azure Virtual Machine Scale Sets" } ], "recommendationControl": "HighAvailability", @@ -1911,12 +1853,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Get started with autoscale in Azure", - "url": "https://learn.microsoft.com/azure/azure-monitor/autoscale/autoscale-get-started?WT.mc_id=Portal-Microsoft_Azure_Monitoring" - }, - { - "name": "Overview of autoscale in Azure", - "url": "https://learn.microsoft.com/azure/azure-monitor/autoscale/autoscale-overview" + "url": "https://learn.microsoft.com/azure/azure-monitor/autoscale/autoscale-get-started?WT.mc_id=Portal-Microsoft_Azure_Monitoring", + "name": "Get started with autoscale in Azure" } ], "recommendationControl": "Scalability", @@ -1936,8 +1874,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use predictive autoscale to scale out before load demands in virtual machine scale sets", - "url": "https://learn.microsoft.com/azure/azure-monitor/autoscale/autoscale-predictive" + "url": "https://learn.microsoft.com/azure/azure-monitor/autoscale/autoscale-predictive", + "name": "Use predictive autoscale to scale out before load demands in virtual machine scale sets" } ], "recommendationControl": "Scalability", @@ -1957,8 +1895,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use scale-in policies with Azure Virtual Machine Scale Sets", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-scale-in-policy" + "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-scale-in-policy", + "name": "Use scale-in policies with Azure Virtual Machine Scale Sets" } ], "recommendationControl": "HighAvailability", @@ -1978,12 +1916,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Create a Virtual Machine Scale Set that uses Availability Zones", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-use-availability-zones" - }, - { - "name": "Update scale set to add availability zones", - "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-use-availability-zones?tabs=cli-1%2Cportal-2#update-scale-set-to-add-availability-zones" + "url": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-use-availability-zones", + "name": "Create a Virtual Machine Scale Set that uses Availability Zones" } ], "recommendationControl": "HighAvailability", @@ -2003,12 +1937,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Automatic VM Guest Patching for Azure VMs", - "url": "https://learn.microsoft.com/azure/virtual-machines/automatic-vm-guest-patching" - }, - { - "name": "Auto OS Image Upgrades", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade" + "url": "https://learn.microsoft.com/azure/virtual-machines/automatic-vm-guest-patching", + "name": "Automatic VM Guest Patching for Azure VMs" } ], "recommendationControl": "OtherBestPractices", @@ -2028,8 +1958,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Deprecated Azure Marketplace images", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/deprecated-images" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/deprecated-images", + "name": "Deprecated Azure Marketplace images" } ], "recommendationControl": "Governance", @@ -2049,8 +1979,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Container Registry Best Practices", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices", + "name": "Container Registry Best Practices" } ], "recommendationControl": "Scalability", @@ -2070,8 +2000,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Registry best practices - Enable zone redundancy", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/zone-redundancy?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json&branch=main" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/zone-redundancy?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json&branch=main", + "name": "Registry best practices - Enable zone redundancy" } ], "recommendationControl": "HighAvailability", @@ -2091,12 +2021,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Registry best practices - Enable geo-replication", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#geo-replicate-multi-region-deployments" - }, - { - "name": "Geo-Replicate Container Registry", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-geo-replication" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#geo-replicate-multi-region-deployments", + "name": "Registry best practices - Enable geo-replication" } ], "recommendationControl": "DisasterRecovery", @@ -2116,8 +2042,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Registry best practices - use repository namespaces", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#repository-namespaces" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#repository-namespaces", + "name": "Registry best practices - use repository namespaces" } ], "recommendationControl": "Security", @@ -2137,8 +2063,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Registry best practices - Use dedicated resource group", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#dedicated-resource-group" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#dedicated-resource-group", + "name": "Registry best practices - Use dedicated resource group" } ], "recommendationControl": "Governance", @@ -2158,12 +2084,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Registry best practices - Manage registry size", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#manage-registry-size" - }, - { - "name": "Retention Policy", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-retention-policy#about-the-retention-policy" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#manage-registry-size", + "name": "Registry best practices - Manage registry size" } ], "recommendationControl": "Scalability", @@ -2183,8 +2105,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Enable anonymous pull access", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/anonymous-pull-access#about-anonymous-pull-access" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/anonymous-pull-access#about-anonymous-pull-access", + "name": "Enable anonymous pull access" } ], "recommendationControl": "Security", @@ -2204,12 +2126,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitoring Azure Container Registry data reference - Resource Logs", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service-reference#resource-logs" - }, - { - "name": "Monitor Azure Container Registry - Enable diagnostic logs", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service#collection-and-routing" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service#collection-and-routing", + "name": "Monitor Azure Container Registry - Enable diagnostic logs" } ], "recommendationControl": "MonitoringAndAlerting", @@ -2229,12 +2147,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitoring Azure Container Registry data reference", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service-reference#metrics" - }, - { - "name": "Monitor Azure Container Registry", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service", + "name": "Monitor Azure Container Registry" } ], "recommendationControl": "MonitoringAndAlerting", @@ -2254,8 +2168,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Enable soft delete policy", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-soft-delete-policy" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-soft-delete-policy", + "name": "Enable soft delete policy" } ], "recommendationControl": "DisasterRecovery", @@ -2275,12 +2189,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "AKS Availability Zones", - "url": "https://learn.microsoft.com/en-us/azure/aks/availability-zones" - }, - { - "name": "Zone Balancing", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-use-availability-zones#zone-balancing" + "url": "https://learn.microsoft.com/en-us/azure/aks/availability-zones", + "name": "AKS Availability Zones" } ], "recommendationControl": "HighAvailability", @@ -2300,8 +2210,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "System and user node pools", - "url": "https://learn.microsoft.com/en-us/azure/aks/use-system-pools?tabs=azure-cli#system-and-user-node-pools" + "url": "https://learn.microsoft.com/en-us/azure/aks/use-system-pools?tabs=azure-cli#system-and-user-node-pools", + "name": "System and user node pools" } ], "recommendationControl": "HighAvailability", @@ -2321,16 +2231,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Entra integration", - "url": "https://learn.microsoft.com/en-us/azure/aks/concepts-identity#azure-ad-integration" - }, - { - "name": "Use Azure role-based access control for AKS", - "url": "https://learn.microsoft.com/en-us/azure/aks/manage-azure-rbac?source=recommendations" - }, - { - "name": "Manage AKS local accounts", - "url": "https://learn.microsoft.com/en-us/azure/aks/manage-local-accounts-managed-azure-ad?source=recommendations" + "url": "https://learn.microsoft.com/en-us/azure/aks/concepts-identity#azure-ad-integration", + "name": "Entra integration" } ], "recommendationControl": "Security", @@ -2350,12 +2252,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure Azure CNI networking", - "url": "https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni-dynamic-ip-allocation" - }, - { - "name": "Configure Azure CNI Overlay networking", - "url": "https://learn.microsoft.com/en-us/azure/aks/azure-cni-overlay" + "url": "https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni-dynamic-ip-allocation", + "name": "Configure Azure CNI networking" } ], "recommendationControl": "Scalability", @@ -2375,20 +2273,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use the Cluster Autoscaler on AKS", - "url": "https://learn.microsoft.com/azure/aks/cluster-autoscaler?tabs=azure-cli" - }, - { - "name": "Best practices for advanced scheduler features", - "url": "https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler" - }, - { - "name": "Node pool scaling considerations and best practices", - "url": "https://learn.microsoft.com/azure/aks/best-practices-performance-scale-large#node-pool-scaling" - }, - { - "name": "Best practices for basic scheduler features", - "url": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler" + "url": "https://learn.microsoft.com/azure/aks/cluster-autoscaler?tabs=azure-cli", + "name": "Use the Cluster Autoscaler on AKS" } ], "recommendationControl": "Scalability", @@ -2408,12 +2294,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "AKS Backups", - "url": "https://learn.microsoft.com/en-us/azure/backup/azure-kubernetes-service-cluster-backup" - }, - { - "name": "Best Practices for AKS Backups", - "url": "https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-storage" + "url": "https://learn.microsoft.com/en-us/azure/backup/azure-kubernetes-service-cluster-backup", + "name": "AKS Backups" } ], "recommendationControl": "DisasterRecovery", @@ -2433,24 +2315,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Availability zones overview", - "url": "https://learn.microsoft.com/azure/reliability/availability-zones-overview?tabs=azure-cli" - }, - { - "name": "Zone-redundant storage", - "url": "https://learn.microsoft.com/azure/storage/common/storage-redundancy#zone-redundant-storage" - }, - { - "name": "ZRS disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-redundancy#zone-redundant-storage-for-managed-disks" - }, - { - "name": "Convert a disk from LRS to ZRS", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-migrate-lrs-zrs" - }, - { - "name": "Enable multi-zone storage redundancy in Azure Container Storage", - "url": "https://learn.microsoft.com/azure/storage/container-storage/enable-multi-zone-redundancy" + "url": "https://learn.microsoft.com/azure/reliability/availability-zones-overview?tabs=azure-cli", + "name": "Availability zones overview" } ], "recommendationControl": "HighAvailability", @@ -2470,12 +2336,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "CSI Storage Drivers", - "url": "https://learn.microsoft.com/azure/aks/csi-storage-drivers" - }, - { - "name": "CSI Migrate in Tree Volumes", - "url": "https://learn.microsoft.com/azure/aks/csi-migrate-in-tree-volumes" + "url": "https://learn.microsoft.com/azure/aks/csi-storage-drivers", + "name": "CSI Storage Drivers" } ], "recommendationControl": "Governance", @@ -2495,8 +2357,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Resource Quotas", - "url": "https://kubernetes.io/docs/concepts/policy/resource-quotas/" + "url": "https://kubernetes.io/docs/concepts/policy/resource-quotas/", + "name": "Resource Quotas" } ], "recommendationControl": "Scalability", @@ -2516,12 +2378,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Virtual Nodes", - "url": "https://learn.microsoft.com/azure/aks/virtual-nodes" - }, - { - "name": "Azure Container Instances", - "url": "https://learn.microsoft.com/azure/container-instances/container-instances-overview" + "url": "https://learn.microsoft.com/azure/aks/virtual-nodes", + "name": "Virtual Nodes" } ], "recommendationControl": "Scalability", @@ -2541,12 +2399,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Pricing Tiers", - "url": "https://learn.microsoft.com/en-us/azure/aks/free-standard-pricing-tiers" - }, - { - "name": "AKS Baseline Architecture", - "url": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks/baseline-aks?toc=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fazure%2Faks%2Ftoc.json&bc=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fazure%2Fbread%2Ftoc.json#kubernetes-api-server-sla" + "url": "https://learn.microsoft.com/en-us/azure/aks/free-standard-pricing-tiers", + "name": "Pricing Tiers" } ], "recommendationControl": "HighAvailability", @@ -2566,8 +2420,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor AKS", - "url": "https://learn.microsoft.com/azure/aks/monitor-aks" + "url": "https://learn.microsoft.com/azure/aks/monitor-aks", + "name": "Monitor AKS" } ], "recommendationControl": "MonitoringAndAlerting", @@ -2587,16 +2441,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Ephemeral OS disk", - "url": "https://learn.microsoft.com/azure/aks/concepts-storage#ephemeral-os-disk" - }, - { - "name": "Configure an AKS cluster", - "url": "https://learn.microsoft.com/azure/aks/cluster-configuration" - }, - { - "name": "Everything you want to know about ephemeral OS disks and AKS", - "url": "https://learn.microsoft.com/samples/azure-samples/aks-ephemeral-os-disk/aks-ephemeral-os-disk/" + "url": "https://learn.microsoft.com/azure/aks/concepts-storage#ephemeral-os-disk", + "name": "Ephemeral OS disk" } ], "recommendationControl": "Scalability", @@ -2616,12 +2462,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "AKS Baseline - Policy Management", - "url": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks/baseline-aks?toc=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fazure%2Faks%2Ftoc.json&bc=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fazure%2Fbread%2Ftoc.json#policy-management" - }, - { - "name": "Built-in Policy Definitions for AKS", - "url": "https://learn.microsoft.com/en-us/azure/aks/policy-reference" + "url": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks/baseline-aks?toc=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fazure%2Faks%2Ftoc.json&bc=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fazure%2Fbread%2Ftoc.json#policy-management", + "name": "AKS Baseline - Policy Management" } ], "recommendationControl": "Governance", @@ -2641,12 +2483,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "GitOps with AKS", - "url": "https://learn.microsoft.com/en-us/azure/architecture/guide/aks/aks-cicd-github-actions-and-gitops" - }, - { - "name": "GitOps for AKS - Reference Architecture", - "url": "https://learn.microsoft.com/en-us/azure/architecture/example-scenario/gitops-aks/gitops-blueprint-aks" + "url": "https://learn.microsoft.com/en-us/azure/architecture/guide/aks/aks-cicd-github-actions-and-gitops", + "name": "GitOps with AKS" } ], "recommendationControl": "OtherBestPractices", @@ -2666,12 +2504,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Topology Spread Constraints", - "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/" - }, - { - "name": "Assign Pod Node", - "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/" + "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/", + "name": "Topology Spread Constraints" } ], "recommendationControl": "HighAvailability", @@ -2691,12 +2525,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure probes", - "url": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/" - }, - { - "name": "Assign Pod Node", - "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/" + "url": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/", + "name": "Configure probes" } ], "recommendationControl": "HighAvailability", @@ -2716,8 +2546,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Replica Sets", - "url": "https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/" + "url": "https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/", + "name": "Replica Sets" } ], "recommendationControl": "HighAvailability", @@ -2737,8 +2567,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "System nodepools", - "url": "https://learn.microsoft.com/azure/aks/use-system-pools?tabs=azure-cli" + "url": "https://learn.microsoft.com/azure/aks/use-system-pools?tabs=azure-cli", + "name": "System nodepools" } ], "recommendationControl": "HighAvailability", @@ -2758,8 +2588,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Well-Architected Framework review for Azure Kubernetes Service (AKS)", - "url": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-kubernetes-service#design-checklist" + "url": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-kubernetes-service#design-checklist", + "name": "Azure Well-Architected Framework review for Azure Kubernetes Service (AKS)" } ], "recommendationControl": "HighAvailability", @@ -2779,12 +2609,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure PDBs", - "url": "https://kubernetes.io/docs/tasks/run-application/configure-pdb/" - }, - { - "name": "Plan availability using PDBs", - "url": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler#plan-for-availability-using-pod-disruption-budgets" + "url": "https://kubernetes.io/docs/tasks/run-application/configure-pdb/", + "name": "Configure PDBs" } ], "recommendationControl": "HighAvailability", @@ -2804,8 +2630,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure CNI Dynamic IP Allocation", - "url": "https://learn.microsoft.com/azure/aks/configure-azure-cni-dynamic-ip-allocation" + "url": "https://learn.microsoft.com/azure/aks/configure-azure-cni-dynamic-ip-allocation", + "name": "Azure CNI Dynamic IP Allocation" } ], "recommendationControl": "HighAvailability", @@ -2825,8 +2651,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Quotas", - "url": "https://learn.microsoft.com/azure/quotas/quotas-overview" + "url": "https://learn.microsoft.com/azure/quotas/quotas-overview", + "name": "Azure Quotas" } ], "recommendationControl": "HighAvailability", @@ -2846,8 +2672,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Linux", - "url": "https://learn.microsoft.com/azure/aks/use-azure-linux" + "url": "https://learn.microsoft.com/azure/aks/use-azure-linux", + "name": "Azure Linux" } ], "recommendationControl": "HighAvailability", @@ -2867,8 +2693,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Multi-replica apps", - "url": "https://learn.microsoft.com/azure/aks/best-practices-app-cluster-reliability#multi-replica-applications" + "url": "https://learn.microsoft.com/azure/aks/best-practices-app-cluster-reliability#multi-replica-applications", + "name": "Multi-replica apps" } ], "recommendationControl": "HighAvailability", @@ -2888,12 +2714,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Managed Grafana service reliability", - "url": "https://learn.microsoft.com/azure/managed-grafana/high-availability" - }, - { - "name": "Enable zone redundancy in Azure Managed Grafana", - "url": "https://learn.microsoft.com/Azure/managed-grafana/how-to-enable-zone-redundancy" + "url": "https://learn.microsoft.com/Azure/managed-grafana/how-to-enable-zone-redundancy", + "name": "Enable zone redundancy in Azure Managed Grafana" } ], "recommendationControl": "HighAvailability", @@ -2913,8 +2735,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Databricks runtime support lifecycles", - "url": "https://learn.microsoft.com/en-us/azure/databricks/release-notes/runtime/databricks-runtime-ver" + "url": "https://learn.microsoft.com/en-us/azure/databricks/release-notes/runtime/databricks-runtime-ver", + "name": "Databricks runtime support lifecycles" } ], "recommendationControl": "Governance", @@ -2934,8 +2756,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure managed disk types", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-types#premium-ssd" + "url": "https://learn.microsoft.com/azure/virtual-machines/disks-types#premium-ssd", + "name": "Azure managed disk types" } ], "recommendationControl": "Scalability", @@ -2955,8 +2777,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#enable-autoscaling-for-batch-workloadss" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#enable-autoscaling-for-batch-workloadss", + "name": "Best practices for reliability" } ], "recommendationControl": "Scalability", @@ -2976,8 +2798,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#enable-autoscaling-for-sql-warehouse" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#enable-autoscaling-for-sql-warehouse", + "name": "Best practices for reliability" } ], "recommendationControl": "Scalability", @@ -2997,12 +2819,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/azure/databricks/lakehouse-architecture/reliability/best-practices" - }, - { - "name": "Databricks enhanced autoscaling", - "url": "https://learn.microsoft.com/azure/databricks/delta-live-tables/settings#use-autoscaling-to-increase-efficiency-and-reduce-resource-usage" + "url": "https://learn.microsoft.com/azure/databricks/delta-live-tables/settings#use-autoscaling-to-increase-efficiency-and-reduce-resource-usage", + "name": "Databricks enhanced autoscaling" } ], "recommendationControl": "Scalability", @@ -3022,8 +2840,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "HighAvailability", @@ -3043,8 +2861,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Create a cluster", - "url": "https://learn.microsoft.com/en-us/azure/databricks/clusters/configure#cluster-log-delivery" + "url": "https://learn.microsoft.com/en-us/azure/databricks/clusters/configure#cluster-log-delivery", + "name": "Create a cluster" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3064,8 +2882,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "HighAvailability", @@ -3085,8 +2903,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "BusinessContinuity", @@ -3106,8 +2924,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "HighAvailability", @@ -3127,8 +2945,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "Scalability", @@ -3148,8 +2966,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "HighAvailability", @@ -3169,8 +2987,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "BusinessContinuity", @@ -3190,8 +3008,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "OtherBestPractices", @@ -3211,8 +3029,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#use-constraints-and-data-expectations" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#use-constraints-and-data-expectations", + "name": "Best practices for reliability" } ], "recommendationControl": "BusinessContinuity", @@ -3232,8 +3050,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#create-regular-backups" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#create-regular-backups", + "name": "Best practices for reliability" } ], "recommendationControl": "DisasterRecovery", @@ -3253,8 +3071,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#recover-from-structured-streaming-query-failures" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#recover-from-structured-streaming-query-failures", + "name": "Best practices for reliability" } ], "recommendationControl": "HighAvailability", @@ -3274,8 +3092,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#recover-etl-jobs-based-on-delta-time-travel" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#recover-etl-jobs-based-on-delta-time-travel", + "name": "Best practices for reliability" } ], "recommendationControl": "DisasterRecovery", @@ -3295,8 +3113,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" } ], "recommendationControl": "DisasterRecovery", @@ -3316,8 +3134,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Databricks Best Practices", - "url": "https://github.com/Azure/AzureDatabricksBestPractices/tree/master" + "url": "https://github.com/Azure/AzureDatabricksBestPractices/tree/master", + "name": "Azure Databricks Best Practices" } ], "recommendationControl": "DisasterRecovery", @@ -3337,8 +3155,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for operational excellence", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/operational-excellence/best-practices#2-automate-deployments-and-workloads" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/operational-excellence/best-practices#2-automate-deployments-and-workloads", + "name": "Best practices for operational excellence" } ], "recommendationControl": "OtherBestPractices", @@ -3358,8 +3176,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for operational excellence", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/operational-excellence/best-practices#system-monitoring" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/operational-excellence/best-practices#system-monitoring", + "name": "Best practices for operational excellence" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3379,8 +3197,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Databricks Best Practices", - "url": "https://github.com/Azure/AzureDatabricksBestPractices/blob/master/toc.md#deploy-workspaces-in-multiple-subscriptions-to-honor-azure-capacity-limits" + "url": "https://github.com/Azure/AzureDatabricksBestPractices/blob/master/toc.md#deploy-workspaces-in-multiple-subscriptions-to-honor-azure-capacity-limits", + "name": "Azure Databricks Best Practices" } ], "recommendationControl": "Scalability", @@ -3400,8 +3218,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Databricks Best Practices", - "url": "https://github.com/Azure/AzureDatabricksBestPractices/blob/master/toc.md#consider-isolating-each-workspace-in-its-own-vnet" + "url": "https://github.com/Azure/AzureDatabricksBestPractices/blob/master/toc.md#consider-isolating-each-workspace-in-its-own-vnet", + "name": "Azure Databricks Best Practices" } ], "recommendationControl": "Scalability", @@ -3421,8 +3239,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Databricks Best Practices", - "url": "https://github.com/Azure/AzureDatabricksBestPractices/blob/master/toc.md#do-not-store-any-production-data-in-default-dbfs-folders" + "url": "https://github.com/Azure/AzureDatabricksBestPractices/blob/master/toc.md#do-not-store-any-production-data-in-default-dbfs-folders", + "name": "Azure Databricks Best Practices" } ], "recommendationControl": "HighAvailability", @@ -3442,8 +3260,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use Azure Spot Virtual Machines", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/spot-vms" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/spot-vms", + "name": "Use Azure Spot Virtual Machines" } ], "recommendationControl": "HighAvailability", @@ -3463,16 +3281,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Databricks control plane addresses", - "url": "https://learn.microsoft.com/azure/databricks/resources/supported-regions#--azure-databricks-control-plane-addresses" - }, - { - "name": "Migrate - maintained by Databricks Inc.", - "url": "https://github.com/databrickslabs/migrate" - }, - { - "name": "Databricks Terraform Exporter - maintained by Databricks Inc. (Experimental)", - "url": "https://registry.terraform.io/providers/databricks/databricks/latest/docs/guides/experimental-exporter" + "url": "https://learn.microsoft.com/azure/databricks/resources/supported-regions#--azure-databricks-control-plane-addresses", + "name": "Azure Databricks control plane addresses" } ], "recommendationControl": "HighAvailability", @@ -3492,12 +3302,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Compute configuration best practices", - "url": "https://learn.microsoft.com/azure/databricks/compute/cluster-config-best-practices" - }, - { - "name": "GPU-enabled compute", - "url": "https://learn.microsoft.com/azure/databricks/compute/gpu" + "url": "https://learn.microsoft.com/azure/databricks/compute/cluster-config-best-practices", + "name": "Compute configuration best practices" } ], "recommendationControl": "Personalized", @@ -3517,8 +3323,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#use-managed-services-where-possible" + "url": "https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/reliability/best-practices#use-managed-services-where-possible", + "name": "Best practices for reliability" } ], "recommendationControl": "Scalability", @@ -3538,8 +3344,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "High availability concepts in Azure Database for MySQL - Flexible Server", - "url": "https://learn.microsoft.com/azure/mysql/flexible-server/concepts-high-availability" + "url": "https://learn.microsoft.com/azure/mysql/flexible-server/concepts-high-availability", + "name": "High availability concepts in Azure Database for MySQL - Flexible Server" } ], "recommendationControl": "HighAvailability", @@ -3559,8 +3365,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Scheduled maintenance in Azure Database for MySQL - Flexible Server", - "url": "https://learn.microsoft.com/azure/mysql/flexible-server/concepts-maintenance" + "url": "https://learn.microsoft.com/azure/mysql/flexible-server/concepts-maintenance", + "name": "Scheduled maintenance in Azure Database for MySQL - Flexible Server" } ], "recommendationControl": "Scalability", @@ -3580,8 +3386,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Backup and restore in Azure Database for MySQL - Flexible Server", - "url": "https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-backup-restore" + "url": "https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-backup-restore", + "name": "Backup and restore in Azure Database for MySQL - Flexible Server" } ], "recommendationControl": "DisasterRecovery", @@ -3601,8 +3407,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Read replicas in Azure Database for MySQL - Flexible Server", - "url": "https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-read-replicas" + "url": "https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-read-replicas", + "name": "Read replicas in Azure Database for MySQL - Flexible Server" } ], "recommendationControl": "DisasterRecovery", @@ -3622,8 +3428,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Database for MySQL - Flexible Server service tiers - Storage auto grow", - "url": "https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-service-tiers-storage#storage-auto-grow" + "url": "https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-service-tiers-storage#storage-auto-grow", + "name": "Azure Database for MySQL - Flexible Server service tiers - Storage auto grow" } ], "recommendationControl": "Scalability", @@ -3643,8 +3449,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Overview of high availability with Azure Database for PostgreSQL", - "url": "https://learn.microsoft.com/azure/postgresql/flexible-server/concepts-high-availability" + "url": "https://learn.microsoft.com/azure/postgresql/flexible-server/concepts-high-availability", + "name": "Overview of high availability with Azure Database for PostgreSQL" } ], "recommendationControl": "HighAvailability", @@ -3664,8 +3470,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Scheduled maintenance in Azure Database for PostgreSQL - Flexible Server", - "url": "https://learn.microsoft.com/azure/postgresql/flexible-server/concepts-maintenance" + "url": "https://learn.microsoft.com/azure/postgresql/flexible-server/concepts-maintenance", + "name": "Scheduled maintenance in Azure Database for PostgreSQL - Flexible Server" } ], "recommendationControl": "Scalability", @@ -3685,8 +3491,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Backup and restore in Azure Database for PostgreSQL - Flexible Server", - "url": "https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-backup-restore" + "url": "https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-backup-restore", + "name": "Backup and restore in Azure Database for PostgreSQL - Flexible Server" } ], "recommendationControl": "DisasterRecovery", @@ -3706,8 +3512,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Read replicas in Azure Database for PostgreSQL - Flexible Server", - "url": "https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-read-replicas" + "url": "https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-read-replicas", + "name": "Read replicas in Azure Database for PostgreSQL - Flexible Server" } ], "recommendationControl": "DisasterRecovery", @@ -3727,8 +3533,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Storage autogrow using Azure portal in Azure Database for PostgreSQL - Flexible Server", - "url": "https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-auto-grow-storage-portal" + "url": "https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-auto-grow-storage-portal", + "name": "Storage autogrow using Azure portal in Azure Database for PostgreSQL - Flexible Server" } ], "recommendationControl": "Scalability", @@ -3748,8 +3554,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure a host pool as a validation environment", - "url": "https://learn.microsoft.com/azure/virtual-desktop/configure-validation-environment?tabs=azure-portal" + "url": "https://learn.microsoft.com/azure/virtual-desktop/configure-validation-environment?tabs=azure-portal", + "name": "Configure a host pool as a validation environment" } ], "recommendationControl": "Governance", @@ -3769,8 +3575,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Scheduled Agent Updates for Azure Virtual Desktop host pools", - "url": "https://learn.microsoft.com/azure/virtual-desktop/scheduled-agent-updates" + "url": "https://learn.microsoft.com/azure/virtual-desktop/scheduled-agent-updates", + "name": "Scheduled Agent Updates for Azure Virtual Desktop host pools" } ], "recommendationControl": "Governance", @@ -3790,8 +3596,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure the VMs and install Active Directory Domain Services", - "url": "https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/deploy/virtual-dc/adds-on-azure-vm#configure-the-vms-and-install-active-directory-domain-services" + "url": "https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/deploy/virtual-dc/adds-on-azure-vm#configure-the-vms-and-install-active-directory-domain-services", + "name": "Configure the VMs and install Active Directory Domain Services" } ], "recommendationControl": "Governance", @@ -3811,8 +3617,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "About Site Recovery", - "url": "https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview" + "url": "https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview", + "name": "About Site Recovery" } ], "recommendationControl": "DisasterRecovery", @@ -3832,8 +3638,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Create and assign an autoscale scaling plan", - "url": "https://learn.microsoft.com/azure/virtual-desktop/autoscale-scaling-plan?tabs=portal" + "url": "https://learn.microsoft.com/azure/virtual-desktop/autoscale-scaling-plan?tabs=portal", + "name": "Create and assign an autoscale scaling plan" } ], "recommendationControl": "Scalability", @@ -3853,12 +3659,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Import and export IoT Hub device identities in bulk", - "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-bulk-identity-mgmt" - }, - { - "name": "IoT Hub high availability and disaster recovery", - "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-ha-dr#manual-failover" + "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-bulk-identity-mgmt", + "name": "Import and export IoT Hub device identities in bulk" } ], "recommendationControl": "DisasterRecovery", @@ -3878,8 +3680,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Choose the right IoT Hub tier and size for your solution", - "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-scaling" + "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-scaling", + "name": "Choose the right IoT Hub tier and size for your solution" } ], "recommendationControl": "HighAvailability", @@ -3899,8 +3701,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure IoT Hub high availability and disaster recovery", - "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-ha-dr#availability-zones" + "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-ha-dr#availability-zones", + "name": "Azure IoT Hub high availability and disaster recovery" } ], "recommendationControl": "HighAvailability", @@ -3920,16 +3722,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "IoT Hub Device Provisioning Service (DPS) terminology", - "url": "https://learn.microsoft.com/en-us/azure/iot-dps/concepts-service" - }, - { - "name": "Best practices for large-scale IoT device deployments", - "url": "https://learn.microsoft.com/en-us/azure/iot-dps/concepts-deploy-at-scale" - }, - { - "name": "IoT Hub Device Provisioning Service high availability and disaster recovery", - "url": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr" + "url": "https://learn.microsoft.com/en-us/azure/iot-dps/concepts-service", + "name": "IoT Hub Device Provisioning Service (DPS) terminology" } ], "recommendationControl": "Scalability", @@ -3949,8 +3743,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "IoT Hub high availability and disaster recovery", - "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-ha-dr" + "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-ha-dr", + "name": "IoT Hub high availability and disaster recovery" } ], "recommendationControl": "HighAvailability", @@ -3970,8 +3764,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use message routing - Fallback route", - "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-d2c#fallback-route" + "url": "https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-d2c#fallback-route", + "name": "Use message routing - Fallback route" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3991,12 +3785,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Distribute data globally with Azure Cosmos DB", - "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally" - }, - { - "name": "Tips for building highly available applications", - "url": "https://learn.microsoft.com/azure/cosmos-db/high-availability#tips-for-building-highly-available-applications" + "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally", + "name": "Distribute data globally with Azure Cosmos DB" } ], "recommendationControl": "HighAvailability", @@ -4016,8 +3806,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Manage an Azure Cosmos DB account by using the Azure portal", - "url": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover" + "url": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover", + "name": "Manage an Azure Cosmos DB account by using the Azure portal" } ], "recommendationControl": "DisasterRecovery", @@ -4037,8 +3827,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "High availability in Azure Cosmos DB", - "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-cosmos-db-nosql" + "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-cosmos-db-nosql", + "name": "High availability in Azure Cosmos DB" } ], "recommendationControl": "HighAvailability", @@ -4058,12 +3848,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Distribute data globally with Azure Cosmos DB", - "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally" - }, - { - "name": "Conflict resolution types and resolution policies in Azure Cosmos DB", - "url": "https://learn.microsoft.com/azure/cosmos-db/conflict-resolution-policies" + "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally", + "name": "Distribute data globally with Azure Cosmos DB" } ], "recommendationControl": "HighAvailability", @@ -4083,8 +3869,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Continuous backup with point in time restore feature in Azure Cosmos DB", - "url": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction" + "url": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction", + "name": "Continuous backup with point in time restore feature in Azure Cosmos DB" } ], "recommendationControl": "DisasterRecovery", @@ -4104,8 +3890,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Pagination in Azure Cosmos DB", - "url": "https://learn.microsoft.com/azure/cosmos-db/nosql/query/pagination#handling-multiple-pages-of-results" + "url": "https://learn.microsoft.com/azure/cosmos-db/nosql/query/pagination#handling-multiple-pages-of-results", + "name": "Pagination in Azure Cosmos DB" } ], "recommendationControl": "Scalability", @@ -4125,8 +3911,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Designing resilient applications with Azure Cosmos DB SDKs", - "url": "https://learn.microsoft.com/azure/cosmos-db/nosql/conceptual-resilient-sdk-applications" + "url": "https://learn.microsoft.com/azure/cosmos-db/nosql/conceptual-resilient-sdk-applications", + "name": "Designing resilient applications with Azure Cosmos DB SDKs" } ], "recommendationControl": "Scalability", @@ -4146,8 +3932,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Designing resilient applications with Azure Cosmos DB SDKs", - "url": "https://learn.microsoft.com/azure/cosmos-db/nosql/conceptual-resilient-sdk-applications" + "url": "https://learn.microsoft.com/azure/cosmos-db/nosql/conceptual-resilient-sdk-applications", + "name": "Designing resilient applications with Azure Cosmos DB SDKs" } ], "recommendationControl": "HighAvailability", @@ -4167,8 +3953,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Create alerts for Azure Cosmos DB using Azure Monitor", - "url": "https://learn.microsoft.com/azure/cosmos-db/create-alerts" + "url": "https://learn.microsoft.com/azure/cosmos-db/create-alerts", + "name": "Create alerts for Azure Cosmos DB using Azure Monitor" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4188,8 +3974,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Event Grid - Enable diagnostic logs for Event Grid resources", - "url": "https://learn.microsoft.com/en-us/azure/event-grid/enable-diagnostic-logs-topic" + "url": "https://learn.microsoft.com/en-us/azure/event-grid/enable-diagnostic-logs-topic", + "name": "Azure Event Grid - Enable diagnostic logs for Event Grid resources" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4209,8 +3995,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Event Grid delivery and retry", - "url": "https://learn.microsoft.com/en-us/azure/event-grid/delivery-and-retry#dead-letter-events" + "url": "https://learn.microsoft.com/en-us/azure/event-grid/delivery-and-retry#dead-letter-events", + "name": "Azure Event Grid delivery and retry" } ], "recommendationControl": "Personalized", @@ -4230,8 +4016,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Configure private endpoints for Azure Event Grid topics or domains", - "url": "https://learn.microsoft.com/en-us/azure/event-grid/configure-private-endpoints" + "url": "https://learn.microsoft.com/en-us/azure/event-grid/configure-private-endpoints", + "name": "Configure private endpoints for Azure Event Grid topics or domains" } ], "recommendationControl": "Security", @@ -4251,8 +4037,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Event Hubs - Geo-disaster recovery", - "url": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal#availability-zones" + "url": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal#availability-zones", + "name": "Azure Event Hubs - Geo-disaster recovery" } ], "recommendationControl": "HighAvailability", @@ -4272,8 +4058,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Event Hubs - Automatically scale throughput units", - "url": "https://learn.microsoft.com/azure/event-hubs/event-hubs-auto-inflate" + "url": "https://learn.microsoft.com/azure/event-hubs/event-hubs-auto-inflate", + "name": "Azure Event Hubs - Automatically scale throughput units" } ], "recommendationControl": "Scalability", @@ -4293,16 +4079,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resource Health", - "url": "https://learn.microsoft.com/en-us/azure/service-health/resource-health-overview" - }, - { - "name": "Configure Resource Health alerts in the Azure portal", - "url": "https://learn.microsoft.com/en-us/azure/service-health/resource-health-alert-monitor-guide#create-a-resource-health-alert-rule-in-the-azure-portal" - }, - { - "name": "Alerts Health", - "url": "https://learn.microsoft.com/en-us/azure/service-health/alerts-activity-log-service-notifications-portal" + "url": "https://learn.microsoft.com/en-us/azure/service-health/resource-health-overview", + "name": "Resource Health" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4322,8 +4100,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Migrate an Application Insights classic resource to a workspace-based resource", - "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/convert-classic-resource" + "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/convert-classic-resource", + "name": "Migrate an Application Insights classic resource to a workspace-based resource" } ], "recommendationControl": "ServiceUpgradeAndRetirement", @@ -4343,8 +4121,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Key Vault soft-delete overview", - "url": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview" + "url": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview", + "name": "Azure Key Vault soft-delete overview" } ], "recommendationControl": "DisasterRecovery", @@ -4364,8 +4142,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Key Vault purge-protection overview", - "url": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection" + "url": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection", + "name": "Azure Key Vault purge-protection overview" } ], "recommendationControl": "DisasterRecovery", @@ -4385,8 +4163,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Key Vault Private Link Service overview", - "url": "https://learn.microsoft.com/azure/key-vault/general/security-features#network-security" + "url": "https://learn.microsoft.com/azure/key-vault/general/security-features#network-security", + "name": "Azure Key Vault Private Link Service overview" } ], "recommendationControl": "Security", @@ -4406,8 +4184,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Key Vault best practices overview", - "url": "https://learn.microsoft.com/azure/key-vault/general/best-practices#why-we-recommend-separate-key-vaults" + "url": "https://learn.microsoft.com/azure/key-vault/general/best-practices#why-we-recommend-separate-key-vaults", + "name": "Azure Key Vault best practices overview" } ], "recommendationControl": "Governance", @@ -4427,8 +4205,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Key Vault logging overview", - "url": "https://learn.microsoft.com/azure/key-vault/general/logging?tabs=Vault" + "url": "https://learn.microsoft.com/azure/key-vault/general/logging?tabs=Vault", + "name": "Azure Key Vault logging overview" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4448,8 +4226,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Manage Azure Machine Learning registries", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-registries?view=azureml-api-2&tabs=cli" + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-registries?view=azureml-api-2&tabs=cli", + "name": "Manage Azure Machine Learning registries" } ], "recommendationControl": "DisasterRecovery", @@ -4469,8 +4247,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Plan for multi-regional deployment", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-high-availability-machine-learning?view=azureml-api-2" + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-high-availability-machine-learning?view=azureml-api-2", + "name": "Plan for multi-regional deployment" } ], "recommendationControl": "DisasterRecovery", @@ -4490,8 +4268,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Failover for business continuity and disaster recovery", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-high-availability-machine-learning?view=azureml-api-2" + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-high-availability-machine-learning?view=azureml-api-2", + "name": "Failover for business continuity and disaster recovery" } ], "recommendationControl": "DisasterRecovery", @@ -4511,12 +4289,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Failover for business continuity and disaster recovery", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-high-availability-machine-learning?view=azureml-api-2" - }, - { - "name": "Compute targets in Azure Machine Learning", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/concept-compute-target?view=azureml-api-2" + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-high-availability-machine-learning?view=azureml-api-2", + "name": "Failover for business continuity and disaster recovery" } ], "recommendationControl": "DisasterRecovery", @@ -4530,14 +4304,35 @@ "automationAvailable": false, "query": null }, + { + "aprlGuid": "98f15850-f31e-4fb2-8874-74f5aabbcf91", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/reference-checkpoint-performance-for-large-models?view=azureml-api-2&tabs=PYTORCH#why-checkpoint-optimization-for-large-model-training-matters", + "name": "Importance of checkpoint optimization" + } + ], + "recommendationControl": "DisasterRecovery", + "longDescription": "Checkpoint optimization for large model training is crucial for disaster recovery. It reduces training time, increases reliability, improves cost efficiency, enhances resource utilization, and supports scalability by saving model states periodically to resume training from the last saved point.\n", + "pgVerified": false, + "description": "Ensure checkpoints are used for AI training models", + "potentialBenefits": "Reduces costs, training time and increases reliability.", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "High", + "automationAvailable": false, + "query": null + }, { "aprlGuid": "6e4f0fd1-1853-4b94-9736-6d6d239d2694", "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Manage resource quotas", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-quotas?view=azureml-api-2" + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-quotas?view=azureml-api-2", + "name": "Manage resource quotas" } ], "recommendationControl": "DisasterRecovery", @@ -4557,8 +4352,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What are compute targets in Azure Machine Learning", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/concept-compute-target?view=azureml-api-2#supported-vm-series-and-sizes" + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/concept-compute-target?view=azureml-api-2#supported-vm-series-and-sizes", + "name": "What are compute targets in Azure Machine Learning" } ], "recommendationControl": "ServiceUpgradeAndRetirement", @@ -4578,12 +4373,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "NC sizes series", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/nc-series?tabs=sizebasic" - }, - { - "name": "Migration Guide for GPU Compute Workloads in Azure", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/n-series-migration" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/n-series-migration", + "name": "Migration Guide for GPU Compute Workloads in Azure" } ], "recommendationControl": "ServiceUpgradeAndRetirement", @@ -4603,8 +4394,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Manage and increase quotas and limits for resources with Azure Machine Learning", - "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-quotas?view=azureml-api-2" + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-quotas?view=azureml-api-2", + "name": "Manage and increase quotas and limits for resources with Azure Machine Learning" } ], "recommendationControl": "OtherBestPractices", @@ -4624,8 +4415,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Service levels for Azure NetApp Files | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels", + "name": "Service levels for Azure NetApp Files | Microsoft Learn" } ], "recommendationControl": "Scalability", @@ -4645,8 +4436,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Guidelines for Azure NetApp Files network planning | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies", + "name": "Guidelines for Azure NetApp Files network planning | Microsoft Learn" } ], "recommendationControl": "Scalability", @@ -4666,8 +4457,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use availability zones for high availability in Azure NetApp Files | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/use-availability-zones" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/use-availability-zones", + "name": "Use availability zones for high availability in Azure NetApp Files | Microsoft Learn" } ], "recommendationControl": "HighAvailability", @@ -4687,8 +4478,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Manage availability zone volume placement for Azure NetApp Files | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/manage-availability-zone-volume-placement" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/manage-availability-zone-volume-placement", + "name": "Manage availability zone volume placement for Azure NetApp Files | Microsoft Learn" } ], "recommendationControl": "OtherBestPractices", @@ -4708,8 +4499,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "How Azure NetApp Files snapshots work | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/snapshots-introduction" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/snapshots-introduction", + "name": "How Azure NetApp Files snapshots work | Microsoft Learn" } ], "recommendationControl": "HighAvailability", @@ -4729,8 +4520,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Understand Azure NetApp Files backup | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/backup-introduction" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/backup-introduction", + "name": "Understand Azure NetApp Files backup | Microsoft Learn" } ], "recommendationControl": "DisasterRecovery", @@ -4750,8 +4541,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Cross-region replication of Azure NetApp Files volumes", - "url": "https://learn.microsoft.com/en-us/azure/azure-netapp-files/cross-region-replication-introduction" + "url": "https://learn.microsoft.com/en-us/azure/azure-netapp-files/cross-region-replication-introduction", + "name": "Cross-region replication of Azure NetApp Files volumes" } ], "recommendationControl": "DisasterRecovery", @@ -4771,8 +4562,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Cross-zone replication of Azure NetApp Files volumes | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/cross-zone-replication-introduction" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/cross-zone-replication-introduction", + "name": "Cross-zone replication of Azure NetApp Files volumes | Microsoft Learn" } ], "recommendationControl": "DisasterRecovery", @@ -4792,8 +4583,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Ways to monitor Azure NetApp Files | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/monitor-azure-netapp-files" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/monitor-azure-netapp-files", + "name": "Ways to monitor Azure NetApp Files | Microsoft Learn" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4813,12 +4604,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Policy definitions for Azure NetApp Files | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-policy-definitions" - }, - { - "name": "Creating custom policy definitions | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/governance/policy/tutorials/create-custom-policy-definition" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-policy-definitions", + "name": "Azure Policy definitions for Azure NetApp Files | Microsoft Learn" } ], "recommendationControl": "Governance", @@ -4838,24 +4625,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Configure network features for an Azure NetApp Files volume", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/configure-network-features" - }, - { - "name": "Manage SMB share ACLs in Azure NetApp Files", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/manage-smb-share-access-control-lists" - }, - { - "name": "Configure export policy for NFS or dual-protocol volumes", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-configure-export-policy" - }, - { - "name": "Configure access control lists on NFSv4.1 volumes for Azure NetApp Files", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/configure-access-control-lists" - }, - { - "name": "Configure Unix permissions and change ownership mode for NFS and dual-protocol volumes", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/configure-unix-permissions-change-ownership-mode" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/configure-network-features", + "name": "Configure network features for an Azure NetApp Files volume" } ], "recommendationControl": "Security", @@ -4875,8 +4646,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Do I need to take special precautions for SMB-based applications? | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/faq-application-resilience#do-i-need-to-take-special-precautions-for-smb-based-applications" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/faq-application-resilience#do-i-need-to-take-special-precautions-for-smb-based-applications", + "name": "Do I need to take special precautions for SMB-based applications? | Microsoft Learn" } ], "recommendationControl": "HighAvailability", @@ -4896,8 +4667,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What do you recommend for handling potential application disruptions due to storage service maintenance events? | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/faq-application-resilience#what-do-you-recommend-for-handling-potential-application-disruptions-due-to-storage-service-maintenance-events" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/faq-application-resilience#what-do-you-recommend-for-handling-potential-application-disruptions-due-to-storage-service-maintenance-events", + "name": "What do you recommend for handling potential application disruptions due to storage service maintenance events? | Microsoft Learn" } ], "recommendationControl": "HighAvailability", @@ -4917,8 +4688,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Autoscaling Zone-Redundant", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant#autoscaling-and-high-availability" + "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant#autoscaling-and-high-availability", + "name": "Application Gateway Autoscaling Zone-Redundant" } ], "recommendationControl": "Scalability", @@ -4938,24 +4709,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Application Gateway Security", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#security" - }, - { - "name": "Application Gateway SSL Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/ssl-overview" - }, - { - "name": "Application Gateway SSL Policy Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-ssl-policy-overview" - }, - { - "name": "Application Gateway KeyVault Certs", - "url": "https://learn.microsoft.com/azure/application-gateway/key-vault-certs" - }, - { - "name": "Application Gateway SSL Cert Management", - "url": "https://learn.microsoft.com/azure/application-gateway/ssl-certificate-management" + "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#security", + "name": "Application Gateway Security" } ], "recommendationControl": "Security", @@ -4975,12 +4730,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Well-Architected Framework Application Gateway Overview", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway" - }, - { - "name": "Application Gateway - Web Application Firewall", - "url": "https://learn.microsoft.com/azure/application-gateway/features#web-application-firewall" + "url": "https://learn.microsoft.com/azure/application-gateway/features#web-application-firewall", + "name": "Application Gateway - Web Application Firewall" } ], "recommendationControl": "Security", @@ -5000,16 +4751,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Overview V2", - "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2" - }, - { - "name": "Application Gateway Feature Comparison Between V1 and V2", - "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2#feature-comparison-between-v1-sku-and-v2-sku" - }, - { - "name": "Application Gateway V1 Retirement", - "url": "https://azure.microsoft.com/updates/application-gateway-v1-will-be-retired-on-28-april-2026-transition-to-application-gateway-v2/" + "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2", + "name": "Application Gateway Overview V2" } ], "recommendationControl": "Scalability", @@ -5029,12 +4772,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Metrics", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-metrics" - }, - { - "name": "Application Gateway Diagnostics", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-diagnostics" + "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-metrics", + "name": "Application Gateway Metrics" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5054,12 +4793,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Probe Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-probe-overview" - }, - { - "name": "Well-Architected Framework Application Gateway Overview", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway" + "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-probe-overview", + "name": "Application Gateway Probe Overview" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5079,12 +4814,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Well-Architected Framework Application Gateway Reliability", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#reliability" - }, - { - "name": "Application Gateway V2 Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2" + "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#reliability", + "name": "Well-Architected Framework Application Gateway Reliability" } ], "recommendationControl": "HighAvailability", @@ -5104,12 +4835,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Connection Draining", - "url": "https://learn.microsoft.com/azure/application-gateway/features#connection-draining" - }, - { - "name": "Application Gateway Connection Draining HTTP Settings", - "url": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings#connection-draining" + "url": "https://learn.microsoft.com/azure/application-gateway/features#connection-draining", + "name": "Application Gateway Connection Draining" } ], "recommendationControl": "HighAvailability", @@ -5129,8 +4856,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Application Gateway infrastructure configuration | Microsoft Learn", - "url": "https://learn.microsoft.com/en-us/azure/application-gateway/configuration-infrastructure#size-of-the-subnet" + "url": "https://learn.microsoft.com/en-us/azure/application-gateway/configuration-infrastructure#size-of-the-subnet", + "name": "Azure Application Gateway infrastructure configuration | Microsoft Learn" } ], "recommendationControl": "OtherBestPractices", @@ -5150,12 +4877,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Well Architected Framework - Azure Firewall", - "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-firewall" - }, - { - "name": "Deploy Azure Firewall across multiple availability zones", - "url": "https://learn.microsoft.com/azure/firewall/deploy-availability-zone-powershell" + "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-firewall", + "name": "Azure Well Architected Framework - Azure Firewall" } ], "recommendationControl": "HighAvailability", @@ -5175,12 +4898,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Firewall metrics supported in Azure Monitor", - "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/metrics-supported#microsoftnetworkazurefirewalls" - }, - { - "name": "Azure Firewall performance", - "url": "https://learn.microsoft.com/azure/firewall/firewall-performance" + "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/metrics-supported#microsoftnetworkazurefirewalls", + "name": "Azure Firewall metrics supported in Azure Monitor" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5200,8 +4919,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure DDoS Protection overview", - "url": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview" + "url": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", + "name": "Azure DDoS Protection overview" } ], "recommendationControl": "Security", @@ -5221,8 +4940,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Firewall Policy hierarchy", - "url": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy" + "url": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy", + "name": "Azure Firewall Policy hierarchy" } ], "recommendationControl": "Governance", @@ -5242,8 +4961,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Well-Architected Framework review - Azure Firewall", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-firewall#recommendations" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-firewall#recommendations", + "name": "Azure Well-Architected Framework review - Azure Firewall" } ], "recommendationControl": "HighAvailability", @@ -5263,12 +4982,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Well-Architected Framework review - Azure Firewall", - "url": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall#recommendations" - }, - { - "name": "Azure Firewall metrics overview", - "url": "https://learn.microsoft.com/azure/firewall/metrics" + "url": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall#recommendations", + "name": "Azure Well-Architected Framework review - Azure Firewall" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5282,14 +4997,60 @@ "automationAvailable": false, "query": "// under development\r\n\r\n" }, + { + "aprlGuid": "c9b0c6f6-1f64-4b4b-8165-00770b295dd7", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bastion", + "name": "Reliability in Azure Bastion" + }, + { + "url": "https://learn.microsoft.com/en-us/azure/bastion/tutorial-create-host-portal", + "name": "Deploy Azure Bastion by using specified settings" + } + ], + "recommendationControl": "HighAvailability", + "longDescription": "Azure Bastion provides secure operational access to workload components. By distributing your Bastion resource across multiple availability zones, you can enhance the resiliency and reliability of your production workloads.\n", + "pgVerified": true, + "description": "Deploy Azure Bastion across Availability Zones", + "potentialBenefits": "Provide high availability and resilience to failures", + "tags": null, + "recommendationResourceType": "Microsoft.Network/bastionHosts", + "recommendationImpact": "Medium", + "automationAvailable": true, + "query": "// under-development\r\n" + }, + { + "aprlGuid": "0e57956d-71d9-4a35-bdcf-d7cfd7cd71f4", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bastion#multi-region-support", + "name": "Multi-region support in Azure bastion" + } + ], + "recommendationControl": "DisasterRecovery", + "longDescription": "Azure Bastion is a single-region service, if the primary region becomes unavailable, the Bastion resource will also be unavailable. To ensure disaster recovery, it is recommended to deploy Azure Bastion into separate virtual networks across different regions.\n", + "pgVerified": true, + "description": "Deploy Azure Bastion into the virtual network in secondary Azure region", + "potentialBenefits": "Provides disaster recovery from regional outages", + "tags": null, + "recommendationResourceType": "Microsoft.Network/bastionHosts", + "recommendationImpact": "Medium", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\r\n" + }, { "aprlGuid": "f6a14b32-a727-4ace-b5fa-7b1c6bdff402", "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "About ExpressRoute FastPath", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/about-fastpath" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/about-fastpath", + "name": "About ExpressRoute FastPath" } ], "recommendationControl": "Scalability", @@ -5309,8 +5070,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Protect your Azure resources with a lock - Azure Resource Manager | Microsoft Learn", - "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?tabs=json" + "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?tabs=json", + "name": "Protect your Azure resources with a lock - Azure Resource Manager | Microsoft Learn" } ], "recommendationControl": "HighAvailability", @@ -5330,8 +5091,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitoring Azure DDoS Protection", - "url": "https://learn.microsoft.com/en-us/azure/ddos-protection/monitor-ddos-protection-reference" + "url": "https://learn.microsoft.com/en-us/azure/ddos-protection/monitor-ddos-protection-reference", + "name": "Monitoring Azure DDoS Protection" } ], "recommendationControl": "Security", @@ -5345,14 +5106,35 @@ "automationAvailable": false, "query": "// under-development\r\n\r\n" }, + { + "aprlGuid": "bdd38c02-96bf-4d4e-a636-293729463f3d", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/azure/dns/private-resolver-reliability", + "name": "Resiliency in Azure DNS Private Resolver" + } + ], + "recommendationControl": "DisasterRecovery", + "longDescription": "Deploy Azure DNS Private Resolvers across multiple regions to establish cross-region failover.\n", + "pgVerified": false, + "description": "Setup DNS cross-region failover using Azure DNS Private Resolvers", + "potentialBenefits": "Ensures BCDR during regional outages.", + "tags": null, + "recommendationResourceType": "Microsoft.Network/dnsResolvers", + "recommendationImpact": "High", + "automationAvailable": true, + "query": "// under-development\r\n" + }, { "aprlGuid": "7d09523b-b3c0-403e-b104-d5d46240d683", "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Reliability in Azure DNS", - "url": "https://learn.microsoft.com/azure/reliability/reliability-dns" + "url": "https://learn.microsoft.com/azure/reliability/reliability-dns", + "name": "Reliability in Azure DNS" } ], "recommendationControl": "DisasterRecovery", @@ -5372,8 +5154,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for disaster recovery with ExpressRoute private peering", - "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering" + "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", + "name": "Designing for disaster recovery with ExpressRoute private peering" } ], "recommendationControl": "HighAvailability", @@ -5393,12 +5175,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for high availability with ExpressRoute", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/designing-for-high-availability-with-expressroute" - }, - { - "name": "Azure Well-Architected Framework review - Azure ExpressRoute - Design Checklist", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-expressroute#recommendations" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/designing-for-high-availability-with-expressroute", + "name": "Designing for high availability with ExpressRoute" } ], "recommendationControl": "HighAvailability", @@ -5418,8 +5196,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for high availability with ExpressRoute - Active-active connections", - "url": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections" + "url": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections", + "name": "Designing for high availability with ExpressRoute - Active-active connections" } ], "recommendationControl": "HighAvailability", @@ -5439,8 +5217,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure BFD over ExpressRoute", - "url": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd" + "url": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd", + "name": "Configure BFD over ExpressRoute" } ], "recommendationControl": "HighAvailability", @@ -5460,8 +5238,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Monitor Baseline Alerts - expressRouteCircuits", - "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/expressRouteCircuits/" + "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/expressRouteCircuits/", + "name": "Azure Monitor Baseline Alerts - expressRouteCircuits" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5481,8 +5259,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "How to view and configure alerts for Azure ExpressRoute circuit maintenance", - "url": "https://learn.microsoft.com/azure/expressroute/maintenance-alerts" + "url": "https://learn.microsoft.com/azure/expressroute/maintenance-alerts", + "name": "How to view and configure alerts for Azure ExpressRoute circuit maintenance" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5502,8 +5280,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Rate limiting for ExpressRoute Direct circuits (Preview)", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/rate-limit" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/rate-limit", + "name": "Rate limiting for ExpressRoute Direct circuits (Preview)" } ], "recommendationControl": "Scalability", @@ -5523,8 +5301,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for disaster recovery with ExpressRoute private peering", - "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering" + "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", + "name": "Designing for disaster recovery with ExpressRoute private peering" } ], "recommendationControl": "HighAvailability", @@ -5544,12 +5322,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Virtual WAN Monitoring Best Practices", - "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#expressroute-gateway" + "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#expressroute-gateway", + "name": "Virtual WAN Monitoring Best Practices" } ], "recommendationControl": "MonitoringAndAlerting", - "longDescription": "Set up monitoring and alerts for ExpressRoute Gateway. Create alert rule for ensuring promptly response to critical events such as exceeding packets per second, exceeding BGP routes prefixes, Gateway overutilization and high frequency in route changes.", + "longDescription": "Set up monitoring and alerts for ExpressRoute Gateway. Create alert rule for ensuring promptly response to critical events such as exceeding packets per second, exceeding BGP routes prefixes, Gateway overutilization and high frequency in route changes.\n", "pgVerified": true, "description": "Monitor health for ExpressRoute gateway", "potentialBenefits": "Detection and mitigation to avoid disruptions.", @@ -5565,8 +5343,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "How to configure ExpressRoute Direct Change Admin State of links", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/expressroute-howto-erdirect#state" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/expressroute-howto-erdirect#state", + "name": "How to configure ExpressRoute Direct Change Admin State of links" } ], "recommendationControl": "HighAvailability", @@ -5586,8 +5364,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "About ExpressRoute Direct Circuit Sizes", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/expressroute-erdirect-about?source=recommendations#circuit-sizes" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/expressroute-erdirect-about?source=recommendations#circuit-sizes", + "name": "About ExpressRoute Direct Circuit Sizes" } ], "recommendationControl": "Scalability", @@ -5607,8 +5385,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Monitor Baseline Alerts - expressRoutePorts", - "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/expressRoutePorts/" + "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/expressRoutePorts/", + "name": "Azure Monitor Baseline Alerts - expressRoutePorts" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5628,8 +5406,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for disaster recovery with ExpressRoute private peering", - "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering" + "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", + "name": "Designing for disaster recovery with ExpressRoute private peering" } ], "recommendationControl": "HighAvailability", @@ -5649,12 +5427,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for high availability with ExpressRoute", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/designing-for-high-availability-with-expressroute" - }, - { - "name": "Azure Well-Architected Framework review - Azure ExpressRoute - Design Checklist", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-expressroute#recommendations" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/designing-for-high-availability-with-expressroute", + "name": "Designing for high availability with ExpressRoute" } ], "recommendationControl": "HighAvailability", @@ -5674,8 +5448,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for high availability with ExpressRoute - Active-active connections", - "url": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections" + "url": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections", + "name": "Designing for high availability with ExpressRoute - Active-active connections" } ], "recommendationControl": "HighAvailability", @@ -5695,20 +5469,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Web Application Firewall monitoring and logging - Access Log", - "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-monitor?pivots=front-door-standard-premium#access-logs" - }, - { - "name": "Understanding WAF logs", - "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-tuning?pivots=front-door-standard-premium#understanding-waf-logs" - }, - { - "name": "Web Application Firewall exclusion lists", - "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-configuration?tabs=portal" - }, - { - "name": "Fixing a false positive", - "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/web-application-firewall-troubleshoot#fixing-false-positives" + "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-monitor?pivots=front-door-standard-premium#access-logs", + "name": "Azure Web Application Firewall monitoring and logging - Access Log" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5728,12 +5490,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Web Application Firewall Monitoring and Logging", - "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-metrics#logs-and-diagnostics" - }, - { - "name": "Diagnostic logs", - "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/web-application-firewall-logs#diagnostic-logs" + "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-metrics#logs-and-diagnostics", + "name": "Azure Web Application Firewall Monitoring and Logging" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5753,12 +5511,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "WAF monitoring", - "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview#waf-monitoring" - }, - { - "name": "Azure Monitor Workbook for WAF", - "url": "https://github.com/Azure/Azure-Network-Security/tree/master/Azure%20WAF/Workbook%20-%20WAF%20Monitor%20Workbook" + "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview#waf-monitoring", + "name": "WAF monitoring" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5778,12 +5532,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Reliability and Azure Load Balancer", - "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-load-balancer/reliability" - }, - { - "name": "Resiliency checklist for specific Azure services- Azure Load Balancer", - "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#azure-load-balancer" + "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-load-balancer/reliability", + "name": "Reliability and Azure Load Balancer" } ], "recommendationControl": "HighAvailability", @@ -5803,8 +5553,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist for specific Azure services- Azure Load Balancer", - "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#azure-load-balancer" + "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#azure-load-balancer", + "name": "Resiliency checklist for specific Azure services- Azure Load Balancer" } ], "recommendationControl": "HighAvailability", @@ -5824,8 +5574,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist for specific Azure services- Azure Load Balancer", - "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#azure-load-balancer" + "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#azure-load-balancer", + "name": "Resiliency checklist for specific Azure services- Azure Load Balancer" } ], "recommendationControl": "HighAvailability", @@ -5845,8 +5595,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Load Balancer and Availability Zones", - "url": "https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-standard-availability-zones#zone-redundant" + "url": "https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-standard-availability-zones#zone-redundant", + "name": "Load Balancer and Availability Zones" } ], "recommendationControl": "HighAvailability", @@ -5866,8 +5616,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Load Balancer Health Probe Overview", - "url": "https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-custom-probe-overview" + "url": "https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-custom-probe-overview", + "name": "Load Balancer Health Probe Overview" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5887,12 +5637,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What is Azure NAT Gateway metrics and alerts?", - "url": "https://learn.microsoft.com/en-us/azure/nat-gateway/nat-metrics" - }, - { - "name": "AMBA - NAT Gateway", - "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/natGateways/" + "url": "https://learn.microsoft.com/en-us/azure/nat-gateway/nat-metrics", + "name": "What is Azure NAT Gateway metrics and alerts?" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5912,8 +5658,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Diagnostic settings in Azure Monitor", - "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/diagnostic-settings" + "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/diagnostic-settings", + "name": "Diagnostic settings in Azure Monitor" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5933,8 +5679,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Monitor activity log", - "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log?tabs=powershell" + "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log?tabs=powershell", + "name": "Azure Monitor activity log" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5954,8 +5700,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Lock your resources to protect your infrastructure", - "url": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?toc=%2Fazure%2Fvirtual-network%2Ftoc.json&tabs=json" + "url": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?toc=%2Fazure%2Fvirtual-network%2Ftoc.json&tabs=json", + "name": "Lock your resources to protect your infrastructure" } ], "recommendationControl": "Governance", @@ -5975,8 +5721,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Security rules", - "url": "https://learn.microsoft.com/azure/virtual-network/network-security-groups-overview#security-rules" + "url": "https://learn.microsoft.com/azure/virtual-network/network-security-groups-overview#security-rules", + "name": "Security rules" } ], "recommendationControl": "Security", @@ -5996,8 +5742,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What is Azure Network Watcher?", - "url": "https://learn.microsoft.com/azure/network-watcher/network-watcher-overview" + "url": "https://learn.microsoft.com/azure/network-watcher/network-watcher-overview", + "name": "What is Azure Network Watcher?" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6017,8 +5763,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Manage NSG flow logs using the Azure portal", - "url": "https://learn.microsoft.com/azure/network-watcher/nsg-flow-logging" + "url": "https://learn.microsoft.com/azure/network-watcher/nsg-flow-logging", + "name": "Manage NSG flow logs using the Azure portal" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6038,8 +5784,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Connection monitor overview", - "url": "https://learn.microsoft.com/en-us/azure/network-watcher/connection-monitor-overview" + "url": "https://learn.microsoft.com/en-us/azure/network-watcher/connection-monitor-overview", + "name": "Connection monitor overview" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6059,8 +5805,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Network Watcher traffic analytics", - "url": "https://learn.microsoft.com/en-us/azure/network-watcher/traffic-analytics" + "url": "https://learn.microsoft.com/en-us/azure/network-watcher/traffic-analytics", + "name": "Network Watcher traffic analytics" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6080,12 +5826,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Virtual WAN Monitoring Best Practices", - "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#point-to-site-vpn-gateway" + "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#point-to-site-vpn-gateway", + "name": "Virtual WAN Monitoring Best Practices" } ], "recommendationControl": "MonitoringAndAlerting", - "longDescription": "Set up monitoring and alerts for Point-to-Site VPN gateways. Create alert rule for ensuring promptly response to critical events such as Gateway over utilization, connection count limits and User VPN route limits. Mission Critical workloads should use dual ExpressRoutes instead of VPN.", + "longDescription": "Set up monitoring and alerts for Point-to-Site VPN gateways. Create alert rule for ensuring promptly response to critical events such as Gateway over utilization, connection count limits and User VPN route limits. Mission Critical workloads should use dual ExpressRoutes instead of VPN.\n", "pgVerified": false, "description": "Monitor health for v-Hub's Point-to-Site VPN gateways", "potentialBenefits": "Detection and mitigation to avoid disruptions.", @@ -6101,8 +5847,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Protecting private DNS Zones and Records - Azure DNS", - "url": "https://learn.microsoft.com/en-us/azure/dns/dns-protect-private-zones-recordsets" + "url": "https://learn.microsoft.com/en-us/azure/dns/dns-protect-private-zones-recordsets", + "name": "Protecting private DNS Zones and Records - Azure DNS" } ], "recommendationControl": "Security", @@ -6122,8 +5868,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Monitor Baseline Alerts - privateDnsZones", - "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/privateDnsZones/" + "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/privateDnsZones/", + "name": "Azure Monitor Baseline Alerts - privateDnsZones" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6143,8 +5889,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Private Link and DNS integration at scale", - "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/private-link-and-dns-integration-at-scale" + "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/private-link-and-dns-integration-at-scale", + "name": "Private Link and DNS integration at scale" } ], "recommendationControl": "DisasterRecovery", @@ -6164,8 +5910,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Reliability in Azure DNS", - "url": "https://learn.microsoft.com/azure/reliability/reliability-dns" + "url": "https://learn.microsoft.com/azure/reliability/reliability-dns", + "name": "Reliability in Azure DNS" } ], "recommendationControl": "DisasterRecovery", @@ -6185,8 +5931,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Private endpoint connections", - "url": "https://learn.microsoft.com/azure/private-link/manage-private-endpoint?tabs=manage-private-link-powershell#private-endpoint-connections" + "url": "https://learn.microsoft.com/azure/private-link/manage-private-endpoint?tabs=manage-private-link-powershell#private-endpoint-connections", + "name": "Private endpoint connections" } ], "recommendationControl": "HighAvailability", @@ -6206,12 +5952,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Public IP addresses - Availability Zones", - "url": "https://learn.microsoft.com/azure/virtual-network/ip-services/public-ip-addresses#availability-zone" - }, - { - "name": "Upgrading a basic public IP address to Standard SKU", - "url": "https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/public-ip-basic-upgrade-guidance#steps-to-complete-the-upgrade" + "url": "https://learn.microsoft.com/azure/virtual-network/ip-services/public-ip-addresses#availability-zone", + "name": "Public IP addresses - Availability Zones" } ], "recommendationControl": "HighAvailability", @@ -6231,12 +5973,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use NAT GW for outbound connectivity", - "url": "https://learn.microsoft.com/azure/advisor/advisor-reference-reliability-recommendations#use-nat-gateway-for-outbound-connectivity" - }, - { - "name": "TCP and SNAT Ports", - "url": "https://learn.microsoft.com/azure/architecture/framework/services/compute/azure-app-service/reliability#tcp-and-snat-ports" + "url": "https://learn.microsoft.com/azure/advisor/advisor-reference-reliability-recommendations#use-nat-gateway-for-outbound-connectivity", + "name": "Use NAT GW for outbound connectivity" } ], "recommendationControl": "HighAvailability", @@ -6256,12 +5994,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Upgrading a basic public IP address to Standard SKU - Guidance", - "url": "https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/public-ip-basic-upgrade-guidance" - }, - { - "name": "Upgrade to Standard SKU public IP addresses in Azure by 30 September 2025 as Basic SKU will be retired", - "url": "https://azure.microsoft.com/en-us/updates/upgrade-to-standard-sku-public-ip-addresses-in-azure-by-30-september-2025-basic-sku-will-be-retired/" + "url": "https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/public-ip-basic-upgrade-guidance", + "name": "Upgrading a basic public IP address to Standard SKU - Guidance" } ], "recommendationControl": "HighAvailability", @@ -6281,8 +6015,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure DDoS Protection", - "url": "https://learn.microsoft.com/en-us/azure/ddos-protection/ddos-protection-overview" + "url": "https://learn.microsoft.com/en-us/azure/ddos-protection/ddos-protection-overview", + "name": "Azure DDoS Protection" } ], "recommendationControl": "Security", @@ -6302,8 +6036,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure activity log - Azure Monitor | Microsoft Learn", - "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/activity-log?tabs=powershell" + "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/activity-log?tabs=powershell", + "name": "Azure activity log - Azure Monitor | Microsoft Learn" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6323,8 +6057,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Protect your Azure resources with a lock - Azure Resource Manager | Microsoft Learn", - "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?toc=%2Fazure%2Fvirtual-network%2Ftoc.json&tabs=json" + "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?toc=%2Fazure%2Fvirtual-network%2Ftoc.json&tabs=json", + "name": "Protect your Azure resources with a lock - Azure Resource Manager | Microsoft Learn" } ], "recommendationControl": "Governance", @@ -6344,16 +6078,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Traffic Manager endpoint monitoring", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-monitoring" - }, - { - "name": "Enable or disable health checks", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-monitoring#enable-or-disable-health-checks-preview" - }, - { - "name": "Troubleshooting degraded state on Azure Traffic Manager", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-troubleshooting-degraded" + "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-monitoring", + "name": "Azure Traffic Manager endpoint monitoring" } ], "recommendationControl": "HighAvailability", @@ -6373,8 +6099,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Traffic Manager Endpoint Types", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-endpoint-types" + "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-endpoint-types", + "name": "Traffic Manager Endpoint Types" } ], "recommendationControl": "HighAvailability", @@ -6394,8 +6120,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Reliability recommendations", - "url": "https://learn.microsoft.com/azure/advisor/advisor-reference-reliability-recommendations#add-at-least-one-more-endpoint-to-the-profile-preferably-in-another-azure-region" + "url": "https://learn.microsoft.com/azure/advisor/advisor-reference-reliability-recommendations#add-at-least-one-more-endpoint-to-the-profile-preferably-in-another-azure-region", + "name": "Reliability recommendations" } ], "recommendationControl": "DisasterRecovery", @@ -6415,12 +6141,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Add an endpoint configured to \"All (World)\"", - "url": "https://learn.microsoft.com/azure/advisor/advisor-reference-reliability-recommendations#add-an-endpoint-configured-to-all-world" - }, - { - "name": "Traffic Manager profile - GeographicProfile (Add an endpoint configured to \"\"All (World)\"\").", - "url": "https://aka.ms/Rf7vc5" + "url": "https://learn.microsoft.com/azure/advisor/advisor-reference-reliability-recommendations#add-an-endpoint-configured-to-all-world", + "name": "Add an endpoint configured to \"All (World)\"" } ], "recommendationControl": "DisasterRecovery", @@ -6440,20 +6162,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Load Balancing Options", - "url": "https://learn.microsoft.com/azure/architecture/guide/technology-choices/load-balancing-overview" - }, - { - "name": "Azure Traffic Manager", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-overview" - }, - { - "name": "Azure Front Door", - "url": "https://learn.microsoft.com/azure/frontdoor/front-door-overview" - }, - { - "name": "Mission-critical global content delivery", - "url": "https://learn.microsoft.com/en-us/azure/architecture/guide/networking/global-web-applications/mission-critical-content-delivery" + "url": "https://learn.microsoft.com/azure/architecture/guide/technology-choices/load-balancing-overview", + "name": "Azure Load Balancing Options" } ], "recommendationControl": "BusinessContinuity", @@ -6473,12 +6183,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Virtual WAN Monitoring Best Practices", - "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#virtual-hub" + "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#virtual-hub", + "name": "Virtual WAN Monitoring Best Practices" } ], "recommendationControl": "MonitoringAndAlerting", - "longDescription": "Set up monitoring and alerts for v-Hubs. Create alert rule for ensuring promptly response to changes in BGP status and Data processed by v-Hubs.", + "longDescription": "Set up monitoring and alerts for v-Hubs. Create alert rule for ensuring promptly response to changes in BGP status and Data processed by v-Hubs.\n", "pgVerified": false, "description": "Monitor health for v-Hubs", "potentialBenefits": "Detection and mitigation to avoid disruptions.", @@ -6494,8 +6204,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Designing for disaster recovery with ExpressRoute private peering", - "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering" + "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", + "name": "Designing for disaster recovery with ExpressRoute private peering" } ], "recommendationControl": "HighAvailability", @@ -6515,16 +6225,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "About ExpressRoute virtual network gateways - Zone-redundant gateway SKUs", - "url": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways#zrgw" - }, - { - "name": "About zone-redundant virtual network gateway in Azure availability zones", - "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways" - }, - { - "name": "Create a zone-redundant virtual network gateway in Azure Availability Zones", - "url": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway" + "url": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways#zrgw", + "name": "About ExpressRoute virtual network gateways - Zone-redundant gateway SKUs" } ], "recommendationControl": "HighAvailability", @@ -6536,7 +6238,7 @@ "recommendationResourceType": "Microsoft.Network/virtualNetworkGateways", "recommendationImpact": "High", "automationAvailable": true, - "query": "// Azure Resource Graph Query\r\n// For all VNGs of type ExpressRoute, show all that are not zone redundant (Zonal or Regional)\r\nadvisorresources\r\n| where properties.recommendationTypeId =~ 'c9af1ef6-55bc-48af-bfe4-2c80490159f8' // RecommendationID from Advisor\r\n| mv-expand resId = properties.resourceMetadata.resourceId\r\n| extend resId = tostring(resId)\r\n| project recId = properties.recommendationTypeId, resId\r\n| join kind=leftouter (\r\n resources\r\n | extend id = tostring(id)\r\n | project id, name, tags, location, properties\r\n) on $left.resId == $right.id\r\n| project recommendationId = \"bbe668b7-eb5c-c746-8b82-70afdedf0cae\", name , resId, tags, param1 = strcat(\"sku-tier: \", properties.sku.tier), param2 = location,param3 = \"Non Zone-Redundant GW\"\r\n" + "query": "// Azure Resource Graph Query\r\n// For all VNGs of type ExpressRoute, show all that are not zone redundant (Zonal or Regional)\r\nadvisorresources\r\n| where properties.recommendationTypeId =~ 'c9af1ef6-55bc-48af-bfe4-2c80490159f8' // RecommendationID from Advisor\r\n| mv-expand resId = properties.resourceMetadata.resourceId\r\n| extend resId = tostring(resId)\r\n| project recId = properties.recommendationTypeId, resId\r\n| join kind=leftouter (\r\n resources\r\n | extend id = tostring(id)\r\n | project id, name, tags, location, properties\r\n) on $left.resId == $right.id\r\n| project recommendationId = \"bbe668b7-eb5c-c746-8b82-70afdedf0cae\", name , id = resId, tags, param1 = strcat(\"sku-tier: \", properties.sku.tier), param2 = location,param3 = \"Non Zone-Redundant GW\"\r\n" }, { "aprlGuid": "c0f23a92-d322-4d4d-97e9-a238b5e3bbb8", @@ -6544,8 +6246,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Protect your Azure resources with a lock - Azure Resource Manager | Microsoft Learn", - "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?tabs=json" + "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?tabs=json", + "name": "Protect your Azure resources with a lock - Azure Resource Manager | Microsoft Learn" } ], "recommendationControl": "HighAvailability", @@ -6565,12 +6267,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "ExpressRoute monitoring, metrics, and alerts | ExpressRoute gateways", - "url": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts#expressroute-gateways" - }, - { - "name": "Azure ExpressRoute Insights using Network Insights", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/expressroute-network-insights" + "url": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts#expressroute-gateways", + "name": "ExpressRoute monitoring, metrics, and alerts | ExpressRoute gateways" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6590,8 +6288,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "About ExpressRoute virtual network gateways - VNet-to-VNet connectivity", - "url": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways#vnet-to-vnet-connectivity" + "url": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways#vnet-to-vnet-connectivity", + "name": "About ExpressRoute virtual network gateways - VNet-to-VNet connectivity" } ], "recommendationControl": "HighAvailability", @@ -6611,8 +6309,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure customer-controlled maintenance for your virtual network gateway - ExpressRoute | Microsoft Learn", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/customer-controlled-gateway-maintenance#azure-portal-steps" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/customer-controlled-gateway-maintenance#azure-portal-steps", + "name": "Configure customer-controlled maintenance for your virtual network gateway - ExpressRoute | Microsoft Learn" } ], "recommendationControl": "HighAvailability", @@ -6632,16 +6330,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Zone redundant Virtual network gateway in availability zone", - "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways" - }, - { - "name": "Gateway SKU", - "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways#gwskus" - }, - { - "name": "SLA summary for Azure services", - "url": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1" + "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways", + "name": "Zone redundant Virtual network gateway in availability zone" } ], "recommendationControl": "HighAvailability", @@ -6661,12 +6351,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Active-active VPN gateway", - "url": "https://learn.microsoft.com/azure/vpn-gateway/active-active-portal#gateway" - }, - { - "name": "Gateway SKU", - "url": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsku" + "url": "https://learn.microsoft.com/azure/vpn-gateway/active-active-portal#gateway", + "name": "Active-active VPN gateway" } ], "recommendationControl": "HighAvailability", @@ -6686,8 +6372,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Dual-redundancy active-active VPN gateways for both Azure and on-premises networks", - "url": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable#dual-redundancy-active-active-vpn-gateways-for-both-azure-and-on-premises-networks" + "url": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable#dual-redundancy-active-active-vpn-gateways-for-both-azure-and-on-premises-networks", + "name": "Dual-redundancy active-active VPN gateways for both Azure and on-premises networks" } ], "recommendationControl": "DisasterRecovery", @@ -6707,8 +6393,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "VPN gateway data reference", - "url": "https://learn.microsoft.com/azure/vpn-gateway/monitor-vpn-gateway-reference" + "url": "https://learn.microsoft.com/azure/vpn-gateway/monitor-vpn-gateway-reference", + "name": "VPN gateway data reference" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6728,12 +6414,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Getting started with Azure Metrics Explorer", - "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/metrics-getting-started" - }, - { - "name": "Monitor VPN gateway", - "url": "https://learn.microsoft.com/azure/vpn-gateway/monitor-vpn-gateway-reference#metrics" + "url": "https://learn.microsoft.com/azure/vpn-gateway/monitor-vpn-gateway-reference#metrics", + "name": "Monitor VPN gateway" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6753,8 +6435,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "About zone-redundant virtual network gateway in Azure availability zones", - "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways" + "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways", + "name": "About zone-redundant virtual network gateway in Azure availability zones" } ], "recommendationControl": "HighAvailability", @@ -6774,20 +6456,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Virtual Network - Concepts and best practices | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/virtual-network/concepts-and-best-practices" - }, - { - "name": "GatewaySUbnet", - "url": "https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub" - }, - { - "name": "Can I associate a network security group (NSG) to the RouteServerSubnet?", - "url": "https://learn.microsoft.com/en-us/azure/route-server/route-server-faq#can-i-associate-a-network-security-group-nsg-to-the-routeserversubnet" - }, - { - "name": "Are Network Security Groups (NSGs) supported on the AzureFirewallSubnet?", - "url": "https://learn.microsoft.com/en-us/azure/firewall/firewall-faq#are-network-security-groups--nsgs--supported-on-the-azurefirewallsubnet" + "url": "https://learn.microsoft.com/azure/virtual-network/concepts-and-best-practices", + "name": "Azure Virtual Network - Concepts and best practices | Microsoft Learn" } ], "recommendationControl": "Security", @@ -6807,8 +6477,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Reliability and Azure Virtual Network - Microsoft Azure Well-Architected Framework | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-virtual-network/reliability" + "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-virtual-network/reliability", + "name": "Reliability and Azure Virtual Network - Microsoft Azure Well-Architected Framework | Microsoft Learn" } ], "recommendationControl": "Security", @@ -6828,16 +6498,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Virtual Network FAQ | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-faq" - }, - { - "name": "Reliability and Network connectivity - Microsoft Azure Well-Architected Framework | Microsoft LearnNetworking Reliability", - "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/network-connectivity/reliability" - }, - { - "name": "Azure Private Link availability", - "url": "https://learn.microsoft.com/en-us/azure/private-link/availability" + "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-faq", + "name": "Azure Virtual Network FAQ | Microsoft Learn" } ], "recommendationControl": "Security", @@ -6857,8 +6519,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Virtual network flow logs", - "url": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview" + "url": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview", + "name": "Virtual network flow logs" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6878,8 +6540,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Route Server frequently asked questions (FAQ)", - "url": "https://learn.microsoft.com/azure/route-server/route-server-faq#do-i-need-to-peer-each-nva-with-both-azure-route-server-instances" + "url": "https://learn.microsoft.com/azure/route-server/route-server-faq#do-i-need-to-peer-each-nva-with-both-azure-route-server-instances", + "name": "Azure Route Server frequently asked questions (FAQ)" } ], "recommendationControl": "HighAvailability", @@ -6899,8 +6561,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor Azure Route Server", - "url": "https://learn.microsoft.com/azure/route-server/monitor-route-server" + "url": "https://learn.microsoft.com/azure/route-server/monitor-route-server", + "name": "Monitor Azure Route Server" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6920,12 +6582,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Virtual WAN Monitoring Best Practices", - "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#virtual-wan-gateways" + "url": "https://learn.microsoft.com/en-us/azure/virtual-wan/monitoring-best-practices#virtual-wan-gateways", + "name": "Virtual WAN Monitoring Best Practices" } ], "recommendationControl": "MonitoringAndAlerting", - "longDescription": "Set up monitoring and alerts for v-Hub's VPN Gateway. Create alert rule for ensuring promptly response to critical events such as packet drop counts, BGP status, Gateway over utilization. Mission Critical workloads should use dual ExpressRoutes instead of VPN.", + "longDescription": "Set up monitoring and alerts for v-Hub's VPN Gateway. Create alert rule for ensuring promptly response to critical events such as packet drop counts, BGP status, Gateway over utilization. Mission Critical workloads should use dual ExpressRoutes instead of VPN.\n", "pgVerified": false, "description": "Monitor gateway for Site-to-site v-Hub's VPN gateway", "potentialBenefits": "Detection and mitigation to avoid disruptions.", @@ -6941,8 +6603,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure ExpressRoute Traffic Collector", - "url": "https://learn.microsoft.com/en-us/azure/expressroute/traffic-collector" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/traffic-collector", + "name": "Azure ExpressRoute Traffic Collector" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6962,12 +6624,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Log Analytics workspace data export in Azure Monitor", - "url": "https://learn.microsoft.com/azure/azure-monitor/logs/logs-data-export" - }, - { - "name": "Azure Monitor configuration recommendations", - "url": "https://learn.microsoft.com/azure/azure-monitor/best-practices-logs#configuration-recommendations" + "url": "https://learn.microsoft.com/azure/azure-monitor/logs/logs-data-export", + "name": "Log Analytics workspace data export in Azure Monitor" } ], "recommendationControl": "Governance", @@ -6987,12 +6645,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor Log Analytics workspace health", - "url": "https://learn.microsoft.com/azure/azure-monitor/logs/log-analytics-workspace-health" - }, - { - "name": "Azure Monitor configuration recommendations", - "url": "https://learn.microsoft.com/azure/azure-monitor/best-practices-logs#configuration-recommendations" + "url": "https://learn.microsoft.com/azure/azure-monitor/logs/log-analytics-workspace-health", + "name": "Monitor Log Analytics workspace health" } ], "recommendationControl": "MonitoringAndAlerting", @@ -7012,8 +6666,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Setup network mapping for site recovery", - "url": "https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-network-mapping#set-up-ip-addressing-for-target-vms" + "url": "https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-network-mapping#set-up-ip-addressing-for-target-vms", + "name": "Setup network mapping for site recovery" } ], "recommendationControl": "DisasterRecovery", @@ -7033,8 +6687,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Run a test failover", - "url": "https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-dr-drill#run-a-test-failover" + "url": "https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-dr-drill#run-a-test-failover", + "name": "Run a test failover" } ], "recommendationControl": "DisasterRecovery", @@ -7054,12 +6708,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Move to Azure monitor Alerts", - "url": "https://learn.microsoft.com/azure/backup/move-to-azure-monitor-alerts" - }, - { - "name": "Classic alerts retirement announcement", - "url": "https://azure.microsoft.com/updates/transition-to-builtin-azure-monitor-alerts-for-recovery-services-vaults-in-azure-backup-by-31-march-2026/" + "url": "https://learn.microsoft.com/azure/backup/move-to-azure-monitor-alerts", + "name": "Move to Azure monitor Alerts" } ], "recommendationControl": "MonitoringAndAlerting", @@ -7079,20 +6729,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Set Cross Region Restore", - "url": "https://learn.microsoft.com/azure/backup/backup-create-recovery-services-vault#set-cross-region-restore" - }, - { - "name": "Azure Backup Best Practices", - "url": "https://learn.microsoft.com/azure/backup/guidance-best-practices" - }, - { - "name": "Minimum Role Requirements for Cross Region Restore", - "url": "https://learn.microsoft.com/azure/backup/backup-rbac-rs-vault#minimum-role-requirements-for-azure-vm-backup" - }, - { - "name": "Recovery Services Vault", - "url": "https://learn.microsoft.com/azure/backup/backup-azure-arm-vms-prepare" + "url": "https://learn.microsoft.com/azure/backup/backup-create-recovery-services-vault#set-cross-region-restore", + "name": "Set Cross Region Restore" } ], "recommendationControl": "DisasterRecovery", @@ -7112,8 +6750,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Soft Delete for Azure Backup", - "url": "https://learn.microsoft.com/azure/backup/backup-azure-security-feature-cloud?tabs=azure-portal" + "url": "https://learn.microsoft.com/azure/backup/backup-azure-security-feature-cloud?tabs=azure-portal", + "name": "Soft Delete for Azure Backup" } ], "recommendationControl": "DisasterRecovery", @@ -7133,16 +6771,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Service Bus and reliability", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/services/messaging/service-bus/reliability" - }, - { - "name": "Azure Service Bus Geo-disaster recovery", - "url": "https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-geo-dr#availability-zones" - }, - { - "name": "Insulate Azure Service Bus applications against outages and disasters", - "url": "https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-outages-disasters" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/services/messaging/service-bus/reliability", + "name": "Service Bus and reliability" } ], "recommendationControl": "HighAvailability", @@ -7162,8 +6792,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Service Bus auto-scaling", - "url": "https://learn.microsoft.com/azure/service-bus-messaging/automate-update-messaging-units" + "url": "https://learn.microsoft.com/azure/service-bus-messaging/automate-update-messaging-units", + "name": "Service Bus auto-scaling" } ], "recommendationControl": "HighAvailability", @@ -7183,12 +6813,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure support for TLS 1.0 and TLS 1.1 will end by 31 October 2024", - "url": "https://azure.microsoft.com/updates/azure-support-tls-will-end-by-31-october-2024-2/" - }, - { - "name": "Configure the minimum TLS version for a Service Bus namespace", - "url": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-configure-minimum-version" + "url": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-configure-minimum-version", + "name": "Configure the minimum TLS version for a Service Bus namespace" } ], "recommendationControl": "ServiceUpgradeAndRetirement", @@ -7208,8 +6834,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Availability zones support in Azure SignalR Service", - "url": "https://learn.microsoft.com/azure/azure-signalr/availability-zones" + "url": "https://learn.microsoft.com/azure/azure-signalr/availability-zones", + "name": "Availability zones support in Azure SignalR Service" } ], "recommendationControl": "HighAvailability", @@ -7229,8 +6855,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "High availability through zone-redundancy", - "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/high-availability-sla-local-zone-redundancy?view=azuresql-mi#zone-redundant-availability" + "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/high-availability-sla-local-zone-redundancy?view=azuresql-mi#zone-redundant-availability", + "name": "High availability through zone-redundancy" } ], "recommendationControl": "HighAvailability", @@ -7250,8 +6876,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Backup storage redundancy", - "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/automated-backups-overview?view=azuresql-mi&preserve-view=true#backup-storage-redundancy" + "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/automated-backups-overview?view=azuresql-mi&preserve-view=true#backup-storage-redundancy", + "name": "Backup storage redundancy" } ], "recommendationControl": "DisasterRecovery", @@ -7271,8 +6897,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Connection types", - "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connection-types-overview?view=azuresql#connection-types" + "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connection-types-overview?view=azuresql#connection-types", + "name": "Connection types" } ], "recommendationControl": "Scalability", @@ -7292,8 +6918,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Failover groups overview and best practices", - "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/failover-group-sql-mi?view=azuresql" + "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/failover-group-sql-mi?view=azuresql", + "name": "Failover groups overview and best practices" } ], "recommendationControl": "DisasterRecovery", @@ -7313,8 +6939,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure SQL Managed Instance monitoring options", - "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/monitoring-sql-managed-instance-azure-monitor?view=azuresql-mi" + "url": "https://learn.microsoft.com/azure/azure-sql/managed-instance/monitoring-sql-managed-instance-azure-monitor?view=azuresql-mi", + "name": "Azure SQL Managed Instance monitoring options" } ], "recommendationControl": "MonitoringAndAlerting", @@ -7334,8 +6960,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Overview of Always Encrypted", - "url": "https://learn.microsoft.com/azure/azure-sql/database/always-encrypted-landing?view=azuresql" + "url": "https://learn.microsoft.com/azure/azure-sql/database/always-encrypted-landing?view=azuresql", + "name": "Overview of Always Encrypted" } ], "recommendationControl": "DisasterRecovery", @@ -7355,8 +6981,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Active Geo Replication", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview" + "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview", + "name": "Active Geo Replication" } ], "recommendationControl": "DisasterRecovery", @@ -7376,12 +7002,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "AutoFailover Groups", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/auto-failover-group-overview?tabs=azure-powershell" - }, - { - "name": "DR Design", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/designing-cloud-solutions-for-disaster-recovery" + "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/auto-failover-group-overview?tabs=azure-powershell", + "name": "AutoFailover Groups" } ], "recommendationControl": "DisasterRecovery", @@ -7401,8 +7023,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Zone Redundant Databases", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/high-availability-sla" + "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/high-availability-sla", + "name": "Zone Redundant Databases" } ], "recommendationControl": "HighAvailability", @@ -7422,8 +7044,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "How to Implement Retry Logic", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/troubleshoot-common-connectivity-issues" + "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/troubleshoot-common-connectivity-issues", + "name": "How to Implement Retry Logic" } ], "recommendationControl": "HighAvailability", @@ -7443,16 +7065,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Monitor", - "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/insights/azure-sql#analyze-data-and-create-alerts" - }, - { - "name": "Azure SQL Database Monitoring", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/monitoring-sql-database-azure-monitor" - }, - { - "name": "Monitoring SQL Database Reference", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/monitoring-sql-database-azure-monitor-reference" + "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/insights/azure-sql#analyze-data-and-create-alerts", + "name": "Azure Monitor" } ], "recommendationControl": "MonitoringAndAlerting", @@ -7472,12 +7086,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Key Vault", - "url": "https://learn.microsoft.com/en-us/azure/key-vault/general/overview" - }, - { - "name": "Getting Started with Always Encrypted", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/always-encrypted-landing?view=azuresql" + "url": "https://learn.microsoft.com/en-us/azure/key-vault/general/overview", + "name": "Azure Key Vault" } ], "recommendationControl": "DisasterRecovery", @@ -7497,8 +7107,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Failover Group endpoint redirection", - "url": "https://learn.microsoft.com/azure/azure-sql/database/failover-group-sql-db?view=azuresql#endpoint-redirection" + "url": "https://learn.microsoft.com/azure/azure-sql/database/failover-group-sql-db?view=azuresql#endpoint-redirection", + "name": "Failover Group endpoint redirection" } ], "recommendationControl": "DisasterRecovery", @@ -7518,12 +7128,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Storage redundancy", - "url": "https://learn.microsoft.com/azure/storage/common/storage-redundancy" - }, - { - "name": "Change the redundancy configuration for a storage account", - "url": "https://learn.microsoft.com/azure/storage/common/redundancy-migration" + "url": "https://learn.microsoft.com/azure/storage/common/storage-redundancy", + "name": "Azure Storage redundancy" } ], "recommendationControl": "HighAvailability", @@ -7543,24 +7149,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Types of storage accounts", - "url": "https://learn.microsoft.com/azure/storage/common/storage-account-overview#types-of-storage-accounts" - }, - { - "name": "Scalability and performance targets for standard storage accounts", - "url": "https://learn.microsoft.com/azure/storage/common/scalability-targets-standard-account" - }, - { - "name": "Performance and scalability checklist for Blob storage", - "url": "https://learn.microsoft.com/azure/storage/blobs/storage-performance-checklist" - }, - { - "name": "Scalability and performance targets for Blob storage", - "url": "https://learn.microsoft.com/azure/storage/blobs/scalability-targets" - }, - { - "name": "Premium block blob storage accounts", - "url": "https://learn.microsoft.com/azure/storage/blobs/storage-blob-block-blob-premium" + "url": "https://learn.microsoft.com/azure/storage/blobs/storage-blob-block-blob-premium", + "name": "Premium block blob storage accounts" } ], "recommendationControl": "Scalability", @@ -7580,8 +7170,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Soft delete detail docs", - "url": "https://learn.microsoft.com//azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal " + "url": "https://learn.microsoft.com//azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal", + "name": "Soft delete detail docs" } ], "recommendationControl": "DisasterRecovery", @@ -7601,8 +7191,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Blob versioning", - "url": "https://learn.microsoft.com/azure/storage/blobs/versioning-overview " + "url": "https://learn.microsoft.com/azure/storage/blobs/versioning-overview", + "name": "Blob versioning" } ], "recommendationControl": "DisasterRecovery", @@ -7622,12 +7212,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Point-in-time restore for block blobs", - "url": "https://learn.microsoft.com/azure/storage/blobs/point-in-time-restore-overview" - }, - { - "name": "Perform a point-in-time restore on block blob data", - "url": "https://learn.microsoft.com/azure/storage/blobs/point-in-time-restore-manage?tabs=portal" + "url": "https://learn.microsoft.com/azure/storage/blobs/point-in-time-restore-overview", + "name": "Point-in-time restore for block blobs" } ], "recommendationControl": "DisasterRecovery", @@ -7647,12 +7233,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor Azure Blob Storage", - "url": "https://learn.microsoft.com/azure/storage/blobs/monitor-blob-storage" - }, - { - "name": "Best practices for monitoring Azure Blob Storage", - "url": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios" + "url": "https://learn.microsoft.com/azure/storage/blobs/monitor-blob-storage", + "name": "Monitor Azure Blob Storage" } ], "recommendationControl": "MonitoringAndAlerting", @@ -7672,12 +7254,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Legacy storage account types", - "url": "https://learn.microsoft.com/azure/storage/common/storage-account-overview#legacy-storage-account-types" - }, - { - "name": "Upgrade to a general-purpose v2 storage account", - "url": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade" + "url": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade", + "name": "Upgrade to a general-purpose v2 storage account" } ], "recommendationControl": "Scalability", @@ -7697,12 +7275,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/azure/architecture/example-scenario/wvd/windows-virtual-desktop#azure-virtual-desktop-limitations" - }, - { - "name": "Private Link", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-virtual-desktop/networking#private-endpoints-private-link" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-virtual-desktop/networking#private-endpoints-private-link", + "name": "Private Link" } ], "recommendationControl": "Security", @@ -7722,8 +7296,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Overview of Azure Stream Analytics Cluster", - "url": "https://learn.microsoft.com/azure/stream-analytics/cluster-overview" + "url": "https://learn.microsoft.com/azure/stream-analytics/cluster-overview", + "name": "Overview of Azure Stream Analytics Cluster" } ], "recommendationControl": "Scalability", @@ -7743,8 +7317,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Understand and adjust streaming units", - "url": "https://learn.microsoft.com/azure/stream-analytics/stream-analytics-streaming-unit-consumption" + "url": "https://learn.microsoft.com/azure/stream-analytics/stream-analytics-streaming-unit-consumption", + "name": "Understand and adjust streaming units" } ], "recommendationControl": "HighAvailability", @@ -7764,8 +7338,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Citrix Limits", - "url": "https://docs.citrix.com/en-us/citrix-daas-azure/limits" + "url": "https://docs.citrix.com/en-us/citrix-daas-azure/limits", + "name": "Citrix Limits" } ], "recommendationControl": "Governance", @@ -7785,12 +7359,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Management group recommendations", - "url": "https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-group-recommendations" - }, - { - "name": "Root management group for each directory", - "url": "https://learn.microsoft.com/en-us/azure/governance/management-groups/overview#root-management-group-for-each-directory" + "url": "https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-group-recommendations", + "name": "Management group recommendations" } ], "recommendationControl": "Governance", @@ -7810,12 +7380,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What is Azure Service Health?", - "url": "https://learn.microsoft.com/azure/service-health/overview" - }, - { - "name": "Configure alerts for service health events", - "url": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal" + "url": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal", + "name": "Configure alerts for service health events" } ], "recommendationControl": "MonitoringAndAlerting", @@ -7835,8 +7401,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Resource Manager Overview", - "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/overview#resource-group-location-alignment" + "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/overview#resource-group-location-alignment", + "name": "Azure Resource Manager Overview" } ], "recommendationControl": "DisasterRecovery", @@ -7856,8 +7422,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Generation 1 vs generation 2 virtual machines", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/generation-2#features-and-capabilities" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/generation-2#features-and-capabilities", + "name": "Generation 1 vs generation 2 virtual machines" } ], "recommendationControl": "HighAvailability", @@ -7877,12 +7443,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Image Template resiliency", - "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-image-builder?toc=%2Fazure%2Fvirtual-machines%2Ftoc.json&bc=%2Fazure%2Fvirtual-machines%2Fbreadcrumb%2Ftoc.json&tabs=graph#disaster-recovery" - }, - { - "name": "Azure Image Builder Supported Regions", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/image-builder-overview?tabs=azure-powershell#regions" + "url": "https://learn.microsoft.com/en-us/azure/reliability/reliability-image-builder?toc=%2Fazure%2Fvirtual-machines%2Ftoc.json&bc=%2Fazure%2Fvirtual-machines%2Fbreadcrumb%2Ftoc.json&tabs=graph#disaster-recovery", + "name": "Image Template resiliency" } ], "recommendationControl": "DisasterRecovery", @@ -7902,12 +7464,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Migrate App Service to availability zone support", - "url": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service" - }, - { - "name": "High availability enterprise deployment using App Service Environment", - "url": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/enterprise-integration/ase-high-availability-deployment" + "url": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service", + "name": "Migrate App Service to availability zone support" } ], "recommendationControl": "HighAvailability", @@ -7927,8 +7485,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist for specific Azure services", - "url": "https://learn.microsoft.com/en-us/azure/architecture/checklist/resiliency-per-service#app-service" + "url": "https://learn.microsoft.com/en-us/azure/architecture/checklist/resiliency-per-service#app-service", + "name": "Resiliency checklist for specific Azure services" } ], "recommendationControl": "HighAvailability", @@ -7948,8 +7506,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Resiliency checklist for specific Azure services", - "url": "https://learn.microsoft.com/en-us/azure/architecture/checklist/resiliency-per-service#app-service" + "url": "https://learn.microsoft.com/en-us/azure/architecture/checklist/resiliency-per-service#app-service", + "name": "Resiliency checklist for specific Azure services" } ], "recommendationControl": "Scalability", @@ -7969,8 +7527,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist for specific Azure services", - "url": "https://learn.microsoft.com/en-us/azure/architecture/checklist/resiliency-per-service#app-service" + "url": "https://learn.microsoft.com/en-us/azure/architecture/checklist/resiliency-per-service#app-service", + "name": "Resiliency checklist for specific Azure services" } ], "recommendationControl": "Governance", @@ -7990,12 +7548,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Automatic scaling in Azure App Service", - "url": "https://learn.microsoft.com/en-us/azure/app-service/manage-automatic-scaling?tabs=azure-portal" - }, - { - "name": "Auto Scale Web Apps", - "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/autoscale/autoscale-get-started" + "url": "https://learn.microsoft.com/en-us/azure/app-service/manage-automatic-scaling?tabs=azure-portal", + "name": "Automatic scaling in Azure App Service" } ], "recommendationControl": "Scalability", @@ -8015,8 +7569,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Ultimate guide to running healthy apps in the cloud", - "url": "https://azure.github.io/AppService/2020/05/15/Robust-Apps-for-the-cloud.html" + "url": "https://azure.github.io/AppService/2020/05/15/Robust-Apps-for-the-cloud.html", + "name": "Ultimate guide to running healthy apps in the cloud" } ], "recommendationControl": "Scalability", @@ -8025,7 +7579,7 @@ "description": "Set minimum instance count to 2 for app service", "potentialBenefits": "Improves app performance", "tags": null, - "recommendationResourceType": "Microsoft.Web/sites", + "recommendationResourceType": "Microsoft.Web/serverFarms", "recommendationImpact": "High", "automationAvailable": true, "query": "// Azure Resource Graph Query\r\n// Provides a list of App services that do not have minimum instance count of 2\r\n\r\nresources\r\n| where type == \"microsoft.web/serverfarms\"\r\n| where sku.capacity < 2\r\n| project recommendationId = \"855ca19a-6518-4f2e-9e5a-01796fbca9f8\", name, id, tags, param1 = \"Instance count is less than 2\"\r\n\r\n" @@ -8036,8 +7590,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Enable diagnostics logging for apps in Azure App Service", - "url": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs" + "url": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs", + "name": "Enable diagnostics logging for apps in Azure App Service" } ], "recommendationControl": "MonitoringAndAlerting", @@ -8057,12 +7611,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Insights", - "url": "https://learn.microsoft.com/azure/application-insights/app-insights-overview" - }, - { - "name": "Application monitoring for Azure App Service", - "url": "https://learn.microsoft.com/azure/azure-monitor/app/azure-web-apps" + "url": "https://learn.microsoft.com/azure/application-insights/app-insights-overview", + "name": "Application Insights" } ], "recommendationControl": "MonitoringAndAlerting", @@ -8082,8 +7632,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist for specific Azure services", - "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#app-service" + "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#app-service", + "name": "Resiliency checklist for specific Azure services" } ], "recommendationControl": "Scalability", @@ -8103,8 +7653,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist", - "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#app-service" + "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#app-service", + "name": "Resiliency checklist" } ], "recommendationControl": "Scalability", @@ -8124,8 +7674,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Set up staging environments in Azure App Service", - "url": "https://learn.microsoft.com/azure/app-service-web/web-sites-staged-publishing" + "url": "https://learn.microsoft.com/azure/app-service-web/web-sites-staged-publishing", + "name": "Set up staging environments in Azure App Service" } ], "recommendationControl": "Governance", @@ -8145,8 +7695,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure web apps in Azure App Service", - "url": "https://learn.microsoft.com/azure/app-service-web/web-sites-configure" + "url": "https://learn.microsoft.com/azure/app-service-web/web-sites-configure", + "name": "Configure web apps in Azure App Service" } ], "recommendationControl": "OtherBestPractices", @@ -8166,8 +7716,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor the health of App Service instances", - "url": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check?tabs=dotnet#enable-health-check" + "url": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check?tabs=dotnet#enable-health-check", + "name": "Monitor the health of App Service instances" } ], "recommendationControl": "OtherBestPractices", @@ -8187,8 +7737,8 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Set up Azure App Service access restrictions", - "url": "https://learn.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions?tabs=azurecli" + "url": "https://learn.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions?tabs=azurecli", + "name": "Set up Azure App Service access restrictions" } ], "recommendationControl": "Governance", @@ -8208,8 +7758,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Announcing the New Auto Healing Experience in App Service Diagnostics - Azure App Service", - "url": "https://azure.github.io/AppService/2018/09/10/Announcing-the-New-Auto-Healing-Experience-in-App-Service-Diagnostics.html" + "url": "https://azure.github.io/AppService/2018/09/10/Announcing-the-New-Auto-Healing-Experience-in-App-Service-Diagnostics.html", + "name": "Announcing the New Auto Healing Experience in App Service Diagnostics - Azure App Service" } ], "recommendationControl": "HighAvailability", @@ -8229,8 +7779,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Functions Warmup Trigger", - "url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-warmup?tabs=in-process%2Cnodejs-v4&pivots=programming-language-csharp#trigger" + "url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-warmup?tabs=in-process%2Cnodejs-v4&pivots=programming-language-csharp#trigger", + "name": "Azure Functions Warmup Trigger" } ], "recommendationControl": "MonitoringAndAlerting", @@ -8250,8 +7800,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resource naming restrictions - Azure Resource Manager", - "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules" + "url": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules", + "name": "Resource naming restrictions - Azure Resource Manager" } ], "recommendationControl": "Governance", @@ -8271,8 +7821,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Migrate version 3.x to 4.x", - "url": "https://learn.microsoft.com/en-us/azure/azure-functions/migrate-version-3-version-4?tabs=net6-in-proc%2Cazure-cli%2Cwindows&pivots=programming-language-csharp" + "url": "https://learn.microsoft.com/en-us/azure/azure-functions/migrate-version-3-version-4?tabs=net6-in-proc%2Cazure-cli%2Cwindows&pivots=programming-language-csharp", + "name": "Migrate version 3.x to 4.x" } ], "recommendationControl": "Governance", @@ -8292,8 +7842,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "FUNCTIONS_WORKER_RUNTIME", - "url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#functions_worker_runtime" + "url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#functions_worker_runtime", + "name": "FUNCTIONS_WORKER_RUNTIME" } ], "recommendationControl": "Governance", @@ -8307,14 +7857,56 @@ "automationAvailable": false, "query": "// cannot-be-validated-with-arg\r\n" }, + { + "aprlGuid": "47176883-2602-455b-97f0-6c6a371bf928", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-monitor-online-endpoints?view=azureml-api-2#using-application-insights", + "name": "Monitor online endpoints using Application Insights" + } + ], + "recommendationControl": "MonitoringAndAlerting", + "longDescription": "Azure Machine Learning uses integration with Azure Monitor to monitor metrics and logs for online endpoints. Use the built-in features of Application Insights (such as Live metrics, Transaction search, Failures, and Performance) for further analysis.\n", + "pgVerified": false, + "description": "Enable Application insights to monitor online endpoints for Azure Machine learning", + "potentialBenefits": "Monitoring endpoints gives visibility into metrics and logs", + "tags": "AI", + "recommendationResourceType": "Microsoft.Subscription/subscriptions", + "recommendationImpact": "Medium", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\r\n" + }, + { + "aprlGuid": "89928e61-bba8-4c25-99c5-a06a09849ecc", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/logs/data-retention-configure?tabs=portal-3%2Cportal-1%2Cportal-2", + "name": "Data collection, retention, and storage in Application Insights" + } + ], + "recommendationControl": "DisasterRecovery", + "longDescription": "Create Application Insights for machine learning workspace in both regions. To adjust the data-retention period, update and manage data retention in a Log Analytics workspace.\n", + "pgVerified": false, + "description": "Create Application insights for Machine learning workspace in both the regions", + "potentialBenefits": "Provides monitoring and data retention in DR region", + "tags": "AI", + "recommendationResourceType": "Microsoft.Subscription/subscriptions", + "recommendationImpact": "Medium", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\r\n" + }, { "aprlGuid": "0bf1a2bb-7617-4ab2-a784-e7ea40c5f01b", "recommendationTypeId": null, "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/well-architected/azure-virtual-desktop/monitoring#resource-health" + "url": "https://learn.microsoft.com/azure/well-architected/azure-virtual-desktop/monitoring#resource-health", + "name": "Learn More" } ], "recommendationControl": "Governance", @@ -8334,8 +7926,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/insights?tabs=monitor" + "url": "https://learn.microsoft.com/azure/virtual-desktop/insights?tabs=monitor", + "name": "Learn More" } ], "recommendationControl": "MonitoringAndAlerting", @@ -8355,8 +7947,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/diagnostics-log-analytics" + "url": "https://learn.microsoft.com/azure/virtual-desktop/diagnostics-log-analytics", + "name": "Learn More" } ], "recommendationControl": "DisasterRecovery", @@ -8376,8 +7968,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-virtual-desktop/enterprise-scale-landing-zone" + "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-virtual-desktop/enterprise-scale-landing-zone", + "name": "Learn More" } ], "recommendationControl": "Governance", @@ -8397,12 +7989,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Capacity Planning", - "url": "https://learn.microsoft.com/azure/well-architected/azure-virtual-desktop/business-continuity#capacity-planning" - }, - { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/windows-virtual-desktop#azure-virtual-desktop-limitations" + "url": "https://learn.microsoft.com/azure/well-architected/azure-virtual-desktop/business-continuity#capacity-planning", + "name": "Capacity Planning" } ], "recommendationControl": "DisasterRecovery", @@ -8422,8 +8010,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/architecture/example-scenario/azure-virtual-desktop/azure-virtual-desktop-multi-region-bcdr" + "url": "https://learn.microsoft.com/azure/architecture/example-scenario/azure-virtual-desktop/azure-virtual-desktop-multi-region-bcdr", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -8443,12 +8031,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Multi-region BCDR", - "url": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/azure-virtual-desktop-multi-region-bcdr" - }, - { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/well-architected/azure-virtual-desktop/business-continuity#active-active-scenarios" + "url": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/azure-virtual-desktop-multi-region-bcdr", + "name": "Multi-region BCDR" } ], "recommendationControl": "DisasterRecovery", @@ -8468,8 +8052,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/storage/files/storage-files-scale-targets" + "url": "https://learn.microsoft.com/azure/storage/files/storage-files-scale-targets", + "name": "Learn More" } ], "recommendationControl": "Scalability", @@ -8489,8 +8073,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/create-host-pools-user-profile" + "url": "https://learn.microsoft.com/azure/virtual-desktop/create-host-pools-user-profile", + "name": "Learn More" } ], "recommendationControl": "Scalability", @@ -8510,12 +8094,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "FSLogix", - "url": "https://learn.microsoft.com/fslogix/overview-what-is-fslogix" - }, - { - "name": "Backup Storage Account", - "url": "https://learn.microsoft.com/azure/backup/blob-backup-configure-manage?tabs=operational-backup" + "url": "https://learn.microsoft.com/fslogix/overview-what-is-fslogix", + "name": "FSLogix" } ], "recommendationControl": "HighAvailability", @@ -8535,8 +8115,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/rdp-shortpath?tabs=managed-networks" + "url": "https://learn.microsoft.com/azure/virtual-desktop/rdp-shortpath?tabs=managed-networks", + "name": "Learn More" } ], "recommendationControl": "OtherBestPractices", @@ -8556,12 +8136,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/troubleshoot-rdp-shortpath" - }, - { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/check-access-validate-required-fqdn-endpoint" + "url": "https://learn.microsoft.com/azure/virtual-desktop/troubleshoot-rdp-shortpath", + "name": "Learn More" } ], "recommendationControl": "Governance", @@ -8581,8 +8157,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/entra/identity/hybrid/connect/how-to-connect-install-multiple-domains" + "url": "https://learn.microsoft.com/entra/identity/hybrid/connect/how-to-connect-install-multiple-domains", + "name": "Learn More" } ], "recommendationControl": "Security", @@ -8602,8 +8178,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution" + "url": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -8623,8 +8199,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing" + "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing", + "name": "Learn More" } ], "recommendationControl": "BusinessContinuity", @@ -8644,12 +8220,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview" - }, - { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview" + "url": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview", + "name": "Learn More" } ], "recommendationControl": "OtherBestPractices", @@ -8669,8 +8241,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/training/modules/create-manage-session-host-image/" + "url": "https://learn.microsoft.com/training/modules/create-manage-session-host-image/", + "name": "Learn More" } ], "recommendationControl": "Governance", @@ -8690,8 +8262,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/fslogix/reference-configuration-settings?tabs=profiles" + "url": "https://learn.microsoft.com/fslogix/reference-configuration-settings?tabs=profiles", + "name": "Learn More" } ], "recommendationControl": "Governance", @@ -8711,8 +8283,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/fslogix/how-to-configure-storage-permissions" + "url": "https://learn.microsoft.com/fslogix/how-to-configure-storage-permissions", + "name": "Learn More" } ], "recommendationControl": "Security", @@ -8720,7 +8292,7 @@ "pgVerified": true, "description": "Ensure user permissions are set correctly on FSLogix SMB shares", "potentialBenefits": "Enhanced security & disaster recovery", - "tags": null, + "tags": "AVD", "recommendationResourceType": "Microsoft.Subscription/subscriptions", "recommendationImpact": "Medium", "automationAvailable": false, @@ -8732,12 +8304,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/fslogix/troubleshooting-events-logs-diagnostics" - }, - { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/storage/files/storage-files-monitoring" + "url": "https://learn.microsoft.com/fslogix/troubleshooting-events-logs-diagnostics", + "name": "Learn More" } ], "recommendationControl": "MonitoringAndAlerting", @@ -8757,8 +8325,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/fslogix/how-to-install-fslogix" + "url": "https://learn.microsoft.com/fslogix/how-to-install-fslogix", + "name": "Learn More" } ], "recommendationControl": "Governance", @@ -8778,8 +8346,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/app-attach-overview?pivots=msix-app-attach" + "url": "https://learn.microsoft.com/azure/virtual-desktop/app-attach-overview?pivots=msix-app-attach", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -8799,8 +8367,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/app-attach-overview?pivots=msix-app-attach" + "url": "https://learn.microsoft.com/azure/virtual-desktop/app-attach-overview?pivots=msix-app-attach", + "name": "Learn More" } ], "recommendationControl": "DisasterRecovery", @@ -8820,8 +8388,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance" + "url": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance", + "name": "Learn More" } ], "recommendationControl": "DisasterRecovery", @@ -8841,8 +8409,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/architecture/example-scenario/azure-virtual-desktop/azure-virtual-desktop-multi-region-bcdr" + "url": "https://learn.microsoft.com/azure/architecture/example-scenario/azure-virtual-desktop/azure-virtual-desktop-multi-region-bcdr", + "name": "Learn More" } ], "recommendationControl": "DisasterRecovery", @@ -8862,8 +8430,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/architecture/example-scenario/identity/adds-extend-domain#reliability" + "url": "https://learn.microsoft.com/azure/architecture/example-scenario/identity/adds-extend-domain#reliability", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -8883,8 +8451,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Connect Private Clouds in the same region", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/connect-multiple-private-clouds-same-region" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/connect-multiple-private-clouds-same-region", + "name": "Connect Private Clouds in the same region" } ], "recommendationControl": "HighAvailability", @@ -8904,12 +8472,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Set an external identity source for vCenter", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-identity-source-vcenter" - }, - { - "name": "Set an external identity for NSX-T", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-external-identity-source-nsx-t" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-identity-source-vcenter", + "name": "Set an external identity source for vCenter" } ], "recommendationControl": "Security", @@ -8929,12 +8493,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "HCX Network extension high availability", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-hcx-network-extension-high-availability" - }, - { - "name": "Understanding Network Extension High Availability", - "url": "https://docs.vmware.com/en/VMware-HCX/4.8/hcx-user-guide/GUID-E1353511-697A-44B0-82A0-852DB55F97D7.html" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-hcx-network-extension-high-availability", + "name": "HCX Network extension high availability" } ], "recommendationControl": "HighAvailability", @@ -8954,8 +8514,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Requirements for Network Extension", - "url": "https://docs.vmware.com/en/VMware-HCX/4.8/hcx-user-guide/GUID-0C746416-850E-46F7-85DD-4D4326A23785.html" + "url": "https://docs.vmware.com/en/VMware-HCX/4.8/hcx-user-guide/GUID-0C746416-850E-46F7-85DD-4D4326A23785.html", + "name": "Requirements for Network Extension" } ], "recommendationControl": "OtherBestPractices", @@ -8975,12 +8535,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use fault domains", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/application-platform#use-fault-domains" - }, - { - "name": "Configure storage policy", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-storage-policy" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/application-platform#use-fault-domains", + "name": "Use fault domains" } ], "recommendationControl": "HighAvailability", @@ -9000,12 +8556,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "APRL guidance for ExpressRoute circuits", - "url": "https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/expressroute-circuits" - }, - { - "name": "Create a new ExpressRoute circuit", - "url": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-circuit-portal-resource-manager?pivots=expressroute-preview#create-a-new-expressroute-circuit-preview" + "url": "https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/expressroute-circuits", + "name": "APRL guidance for ExpressRoute circuits" } ], "recommendationControl": "HighAvailability", @@ -9025,8 +8577,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Deploy vSAN streched cluster", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/deploy-vsan-stretched-clusters#deploy-a-stretched-cluster-private-cloud" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/deploy-vsan-stretched-clusters#deploy-a-stretched-cluster-private-cloud", + "name": "Deploy vSAN streched cluster" } ], "recommendationControl": "HighAvailability", @@ -9046,12 +8598,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Private Clouds in two regions", - "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/move-azure-vmware-solution-across-regions" - }, - { - "name": "Dual Region Network Topology", - "url": "https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-dual-region-network-topology" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/move-azure-vmware-solution-across-regions", + "name": "Private Clouds in two regions" } ], "recommendationControl": "DisasterRecovery", @@ -9071,8 +8619,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-ha-cloud?view=hpc19-ps#hpc-pack-cluster-shares" + "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-ha-cloud?view=hpc19-ps#hpc-pack-cluster-shares", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -9092,8 +8640,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-auto-grow-shrink?view=hpc19-ps" + "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-auto-grow-shrink?view=hpc19-ps", + "name": "Learn More" } ], "recommendationControl": "Scalability", @@ -9113,8 +8661,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-ha-cloud?view=hpc19-ps#dealing-with-head-node-failure" + "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-ha-cloud?view=hpc19-ps#dealing-with-head-node-failure", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -9134,8 +8682,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-ha-cloud?view=hpc19-ps#dealing-with-ad-failure" + "url": "https://learn.microsoft.com/en-us/powershell/high-performance-computing/hpcpack-ha-cloud?view=hpc19-ps#dealing-with-ad-failure", + "name": "Learn More" } ], "recommendationControl": "HighAvailability", @@ -9155,24 +8703,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Quality Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck" - }, - { - "name": "Move Regional SAP HA to Zonal", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/Move-VM-from-AvSet-to-AvZone/Move-Regional-SAP-HA-To-Zonal-SAP-HA-WhitePaper" - }, - { - "name": "High Availability Deployment Options for SAP", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-high-availability-architecture-scenarios#high-availability-deployment-options-for-sap-workload" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-high-availability-architecture-scenarios#high-availability-deployment-options-for-sap-workload", + "name": "High Availability Deployment Options for SAP" } ], "recommendationControl": "HighAvailability", @@ -9192,20 +8724,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" - }, - { - "name": "Virtual machine Scale Set SAP Deployment Guide", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/virtual-machine-scale-set-sap-deployment-guide" - }, - { - "name": "Considerations for Flexible VM Scale Sets for SAP", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/virtual-machine-scale-set-sap-deployment-guide?tabs=scaleset-cli#important-consideration-of-flexible-virtual-machine-scale-sets-for-sap-workload" - }, - { - "name": "Migrate existing SAP system VMs to VMSS Flex", - "url": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/how-to-easily-migrate-an-existing-sap-system-vms-to-flexible/ba-p/3833548" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/virtual-machine-scale-set-sap-deployment-guide", + "name": "Virtual machine Scale Set SAP Deployment Guide" } ], "recommendationControl": "HighAvailability", @@ -9225,24 +8745,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck" - }, - { - "name": "VM SLA", - "url": "https://www.azure.cn/en-us/support/sla/virtual-machines/" - }, - { - "name": "SAP Storage Planning Guide", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/planning-guide-storage" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/planning-guide-storage", + "name": "SAP Storage Planning Guide" } ], "recommendationControl": "HighAvailability", @@ -9262,12 +8766,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck" + "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck", + "name": "OpenSource Quality Checks" } ], "recommendationControl": "HighAvailability", @@ -9287,8 +8787,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" } ], "recommendationControl": "HighAvailability", @@ -9308,8 +8808,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Test Cases", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-hana-high-availability?tabs=lb-portal#test-the-cluster-setup" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-hana-high-availability?tabs=lb-portal#test-the-cluster-setup", + "name": "Test Cases" } ], "recommendationControl": "HighAvailability", @@ -9329,8 +8829,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" } ], "recommendationControl": "HighAvailability", @@ -9350,8 +8850,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Capacity Reservation", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-overview" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-overview", + "name": "Capacity Reservation" } ], "recommendationControl": "DisasterRecovery", @@ -9371,8 +8871,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP Disaster Recovery Guide", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", + "name": "SAP Disaster Recovery Guide" } ], "recommendationControl": "DisasterRecovery", @@ -9392,12 +8892,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS Insights" } ], "recommendationControl": "DisasterRecovery", @@ -9417,8 +8913,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "DR Guidance", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", + "name": "DR Guidance" } ], "recommendationControl": "DisasterRecovery", @@ -9438,8 +8934,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "DR Guidance", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", + "name": "DR Guidance" } ], "recommendationControl": "DisasterRecovery", @@ -9459,8 +8955,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "DR Guidance", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", + "name": "DR Guidance" } ], "recommendationControl": "DisasterRecovery", @@ -9480,8 +8976,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "DR Guidance", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", + "name": "DR Guidance" } ], "recommendationControl": "DisasterRecovery", @@ -9501,12 +8997,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "VM Scheduled Events", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events" - }, - { - "name": "Configure Pacemaker for Azure Scheduled Events", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/high-availability-guide-suse-pacemaker?tabs=msi#configure-pacemaker-for-azure-scheduled-events" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events", + "name": "VM Scheduled Events" } ], "recommendationControl": "MonitoringAndAlerting", @@ -9526,16 +9018,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck" - }, - { - "name": "ASCS-Pacemaker - Central Server Instance", - "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations" + "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations", + "name": "ASCS-Pacemaker - Central Server Instance" } ], "recommendationControl": "HighAvailability", @@ -9555,16 +9039,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck" - }, - { - "name": "ASCS-LB - Central Server Instance", - "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations" + "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations", + "name": "ASCS-LB - Central Server Instance" } ], "recommendationControl": "HighAvailability", @@ -9584,16 +9060,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck" - }, - { - "name": "DBHANA-Pacemaker - Database Instance", - "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations" + "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations", + "name": "DBHANA-Pacemaker - Database Instance" } ], "recommendationControl": "HighAvailability", @@ -9613,16 +9081,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck" - }, - { - "name": "DBHANA-LB- Database Instance", - "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations" + "url": "https://docs.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations", + "name": "DBHANA-LB- Database Instance" } ], "recommendationControl": "HighAvailability", @@ -9642,8 +9102,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP on Azure NetApp Planning Guide", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/planning-guide-storage#azure-netapp-files" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/planning-guide-storage#azure-netapp-files", + "name": "SAP on Azure NetApp Planning Guide" } ], "recommendationControl": "HighAvailability", @@ -9663,28 +9123,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "High-availability SAP NetWeaver with simple mount and NFS on SLES for SAP Applications VMs", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/high-availability-guide-suse-nfs-simple-mount?tabs=lb-portal%2Censa1" - }, - { - "name": "High availability for SAP NetWeaver on Azure VMs on SUSE Linux Enterprise Server with Azure NetApp Files for SAP applications", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/high-availability-guide-suse-netapp-files?tabs=lb-portal%2Censa1" - }, - { - "name": "High availability of SAP HANA scale-up with Azure NetApp Files on SUSE Enterprise Linux", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-hana-high-availability-netapp-files-suse?tabs=lb-portal" - }, - { - "name": "Azure Virtual Machines HA for SAP NetWeaver on RHEL with Azure NetApp Files for SAP applications", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/high-availability-guide-rhel-netapp-files?tabs=lb-portal%2Censa1" - }, - { - "name": "High availability of SAP HANA scale-up with Azure NetApp Files on RHEL", - "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-hana-high-availability-netapp-files-red-hat?tabs=lb-portal" - }, - { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/blob/main/QualityCheck/" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/high-availability-guide-suse-nfs-simple-mount?tabs=lb-portal%2Censa1", + "name": "High-availability SAP NetWeaver with simple mount and NFS on SLES for SAP Applications VMs" } ], "recommendationControl": "Scalability", @@ -9704,8 +9144,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:01 Simplicity and efficiency", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/simplify" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/simplify", + "name": "RE:01 Simplicity and efficiency" } ], "recommendationControl": "OtherBestPractices", @@ -9725,8 +9165,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:02 Critical flows", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/identify-flows" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/identify-flows", + "name": "RE:02 Critical flows" } ], "recommendationControl": "HighAvailability", @@ -9746,8 +9186,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:03 Failure mode analysis", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/failure-mode-analysis" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/failure-mode-analysis", + "name": "RE:03 Failure mode analysis" } ], "recommendationControl": "OtherBestPractices", @@ -9767,8 +9207,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:04 Target metrics", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/metrics" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/metrics", + "name": "RE:04 Target metrics" } ], "recommendationControl": "HighAvailability", @@ -9788,8 +9228,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:05 Redundancy", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/redundancy" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/redundancy", + "name": "RE:05 Redundancy" } ], "recommendationControl": "HighAvailability", @@ -9809,8 +9249,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:05 High-availability multi-region design", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/reliability/highly-available-multi-region-design" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/reliability/highly-available-multi-region-design", + "name": "RE:05 High-availability multi-region design" } ], "recommendationControl": "HighAvailability", @@ -9830,8 +9270,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Regions and availability zones", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/regions-availability-zones" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/regions-availability-zones", + "name": "Regions and availability zones" } ], "recommendationControl": "HighAvailability", @@ -9851,8 +9291,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:06 Data partitioning", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/partition-data" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/partition-data", + "name": "RE:06 Data partitioning" } ], "recommendationControl": "HighAvailability", @@ -9872,8 +9312,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:06 Scaling", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/scaling" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/scaling", + "name": "RE:06 Scaling" } ], "recommendationControl": "Scalability", @@ -9893,8 +9333,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:07 Background jobs", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/background-jobs" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/background-jobs", + "name": "RE:07 Background jobs" } ], "recommendationControl": "OtherBestPractices", @@ -9914,8 +9354,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:07 Self-preservation", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/self-preservation" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/self-preservation", + "name": "RE:07 Self-preservation" } ], "recommendationControl": "HighAvailability", @@ -9935,8 +9375,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:07 Transient faults", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/handle-transient-faults" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/handle-transient-faults", + "name": "RE:07 Transient faults" } ], "recommendationControl": "HighAvailability", @@ -9956,8 +9396,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:08 Testing", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/testing-strategy" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/testing-strategy", + "name": "RE:08 Testing" } ], "recommendationControl": "OtherBestPractices", @@ -9977,8 +9417,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:09 Disaster recovery", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/disaster-recovery" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/disaster-recovery", + "name": "RE:09 Disaster recovery" } ], "recommendationControl": "DisasterRecovery", @@ -9998,8 +9438,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "RE:10 Monitoring and alerting", - "url": "https://learn.microsoft.com/azure/well-architected/reliability/monitoring-alerting-strategy" + "url": "https://learn.microsoft.com/azure/well-architected/reliability/monitoring-alerting-strategy", + "name": "RE:10 Monitoring and alerting" } ], "recommendationControl": "MonitoringAndAlerting",