From c56256cd5ccce6ad088b0e7c55e6a99a6037e741 Mon Sep 17 00:00:00 2001 From: Soniya Mittal <71252948+sonmitt@users.noreply.github.com> Date: Mon, 16 Dec 2024 21:55:58 +0530 Subject: [PATCH 01/10] docs: Added new recommendations for Azure machine learning (#559) Co-authored-by: Soniya Mittal --- .../MachineLearningServices/_index.md | 2 +- .../workspaces/_index.md | 2 +- .../kql/13794a63-8d95-47ce-acbd-5925ede5b208 | 1 + .../kql/675d249a-9486-45e3-8e89-863f5802782d | 1 + .../kql/a86ed26a-59d9-47bd-b440-6bc71b843978 | 1 + .../workspaces/recommendations.yaml | 52 +++++++++++++++++++ 6 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 azure-resources/MachineLearningServices/workspaces/kql/13794a63-8d95-47ce-acbd-5925ede5b208 create mode 100644 azure-resources/MachineLearningServices/workspaces/kql/675d249a-9486-45e3-8e89-863f5802782d create mode 100644 azure-resources/MachineLearningServices/workspaces/kql/a86ed26a-59d9-47bd-b440-6bc71b843978 create mode 100644 azure-resources/MachineLearningServices/workspaces/recommendations.yaml diff --git a/azure-resources/MachineLearningServices/_index.md b/azure-resources/MachineLearningServices/_index.md index 859e063dc..517209993 100644 --- a/azure-resources/MachineLearningServices/_index.md +++ b/azure-resources/MachineLearningServices/_index.md @@ -1,5 +1,5 @@ --- title: MachineLearningServices geekdocCollapseSection: true -geekdocHidden: true +geekdocHidden: false --- diff --git a/azure-resources/MachineLearningServices/workspaces/_index.md b/azure-resources/MachineLearningServices/workspaces/_index.md index f2edd665d..5e7ae381f 100644 --- a/azure-resources/MachineLearningServices/workspaces/_index.md +++ b/azure-resources/MachineLearningServices/workspaces/_index.md @@ -1,7 +1,7 @@ --- title: workspaces geekdocCollapseSection: true -geekdocHidden: true +geekdocHidden: false --- {{< azure-resources-recommendationlist name="azure-resources-recommendationlist" >}} diff --git a/azure-resources/MachineLearningServices/workspaces/kql/13794a63-8d95-47ce-acbd-5925ede5b208 b/azure-resources/MachineLearningServices/workspaces/kql/13794a63-8d95-47ce-acbd-5925ede5b208 new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/kql/13794a63-8d95-47ce-acbd-5925ede5b208 @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/workspaces/kql/675d249a-9486-45e3-8e89-863f5802782d b/azure-resources/MachineLearningServices/workspaces/kql/675d249a-9486-45e3-8e89-863f5802782d new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/kql/675d249a-9486-45e3-8e89-863f5802782d @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/workspaces/kql/a86ed26a-59d9-47bd-b440-6bc71b843978 b/azure-resources/MachineLearningServices/workspaces/kql/a86ed26a-59d9-47bd-b440-6bc71b843978 new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/kql/a86ed26a-59d9-47bd-b440-6bc71b843978 @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/workspaces/recommendations.yaml b/azure-resources/MachineLearningServices/workspaces/recommendations.yaml new file mode 100644 index 000000000..7468c0ee1 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/recommendations.yaml @@ -0,0 +1,52 @@ +- description: Plan for a multi-regional deployment of Azure Machine Learning and associated resources + aprlGuid: a86ed26a-59d9-47bd-b440-6bc71b843978 + recommendationTypeId: null + recommendationControl: DisasterRecovery + recommendationImpact: High + recommendationResourceType: Microsoft.MachineLearningServices/workspaces + recommendationMetadataState: Active + longDescription: | + Ensure you have a recovery strategy defined. Check regional availability and paired regions. Machine Learning doesn't have auto failover. Therefore, you must design a strategy that encompasses the workspace and all its dependencies, such as Key Vault, Azure Storage, and Container Registry. + potentialBenefits: Provides multi-region disaster recovery strategy + pgVerified: false + automationAvailable: false + tags: null + 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" + +- description: Deploy Azure Machine learning workspace in secondary region + aprlGuid: 675d249a-9486-45e3-8e89-863f5802782d + recommendationTypeId: null + recommendationControl: DisasterRecovery + recommendationImpact: High + recommendationResourceType: Microsoft.MachineLearningServices/workspaces + recommendationMetadataState: Active + longDescription: | + If your primary workspace is unavailable, switch to the secondary workspace to continue work. Azure Machine Learning doesn't auto-submit jobs to the secondary workspace during an outage. Update your code configuration to point to the new workspace resource. + potentialBenefits: Provides recovery from regional outages + pgVerified: false + automationAvailable: false + tags: null + 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" + +- description: Ensure to create Machine Learning Compute resources in secondary region + aprlGuid: 13794a63-8d95-47ce-acbd-5925ede5b208 + recommendationTypeId: null + recommendationControl: DisasterRecovery + recommendationImpact: High + recommendationResourceType: Microsoft.MachineLearningServices/workspaces + recommendationMetadataState: Active + longDescription: | + Create compute resources for training a Machine Learning model in selected regions. Ensure both regions have sufficient compute quota for dynamic scaling. Customers must configure HA across zones for attached compute resources like AKS, Azure Databricks, Container Instances. + potentialBenefits: High availability and disaster recovery + pgVerified: false + automationAvailable: false + tags: null + 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" From 927ce2c89bb0e18cc56a5dc365a3da3cfec6207d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 23:16:45 +0000 Subject: [PATCH 02/10] build: Bump github/codeql-action from 3.27.6 to 3.27.9 (#576) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Eric Henry <44706965+ejhenry@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5e6cdf6ce..19e48bfa5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -55,6 +55,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 + uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 with: sarif_file: results.sarif From 885a4441d598b2264d606b1d8fc1d82321d3765c Mon Sep 17 00:00:00 2001 From: mandargujrathi Date: Wed, 18 Dec 2024 12:51:51 +1100 Subject: [PATCH 03/10] docs: APRL recommendations for Cog Services (#575) Co-authored-by: Mandar Gujrathi Co-authored-by: Zach Trocinski <30884663+oZakari@users.noreply.github.com> --- .../kql/081fc8a4-b2d9-405b-b351-334e621016f5.kql | 1 + .../accounts/recommendations.yaml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 azure-resources/CognitiveServices/accounts/kql/081fc8a4-b2d9-405b-b351-334e621016f5.kql diff --git a/azure-resources/CognitiveServices/accounts/kql/081fc8a4-b2d9-405b-b351-334e621016f5.kql b/azure-resources/CognitiveServices/accounts/kql/081fc8a4-b2d9-405b-b351-334e621016f5.kql new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/CognitiveServices/accounts/kql/081fc8a4-b2d9-405b-b351-334e621016f5.kql @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/CognitiveServices/accounts/recommendations.yaml b/azure-resources/CognitiveServices/accounts/recommendations.yaml index e655310c8..d8e24a772 100644 --- a/azure-resources/CognitiveServices/accounts/recommendations.yaml +++ b/azure-resources/CognitiveServices/accounts/recommendations.yaml @@ -1,3 +1,19 @@ +- description: Ensure AOAI models are deployed using Global deployment + aprlGuid: 081fc8a4-b2d9-405b-b351-334e621016f5 + recommendationTypeId: null + recommendationControl: HighAvailability + recommendationImpact: High + recommendationResourceType: Microsoft.CognitiveServices/Accounts + recommendationMetadataState: Active + 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. + potentialBenefits: Low latency, best model availability, business continuity + pgVerified: false + automationAvailable: false + tags: null + learnMoreLink: + - name: Learn More + url: "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#global-provisioned" + - description: Deploy a PAYG instance of the model with provisioned throughput to manage overflow effectively aprlGuid: 0c193899-da60-4a52-b4a0-77d75ac8c5c5 recommendationTypeId: null From 0cd752292ad4c353bd801cb32ff1bea0950864bf Mon Sep 17 00:00:00 2001 From: chinthakaru Date: Thu, 19 Dec 2024 00:56:23 +0530 Subject: [PATCH 04/10] docs: Updating the Machine Learning Services Recommendations regards to quota (#580) Co-authored-by: Zach Trocinski <30884663+oZakari@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../kql/48ea6480-6263-40ba-8937-326d790e63f6 | 1 + .../kql/6e2af91f-477d-46a5-b8ce-6cd1b8176550 | 1 + .../kql/6e4f0fd1-1853-4b94-9736-6d6d239d2694 | 1 + .../kql/cf2569bb-1cf2-46ce-8885-d742dc6f4a4c | 1 + .../workspaces/recommendations.yaml | 70 +++++++++++++++++++ 5 files changed, 74 insertions(+) create mode 100644 azure-resources/MachineLearningServices/workspaces/kql/48ea6480-6263-40ba-8937-326d790e63f6 create mode 100644 azure-resources/MachineLearningServices/workspaces/kql/6e2af91f-477d-46a5-b8ce-6cd1b8176550 create mode 100644 azure-resources/MachineLearningServices/workspaces/kql/6e4f0fd1-1853-4b94-9736-6d6d239d2694 create mode 100644 azure-resources/MachineLearningServices/workspaces/kql/cf2569bb-1cf2-46ce-8885-d742dc6f4a4c diff --git a/azure-resources/MachineLearningServices/workspaces/kql/48ea6480-6263-40ba-8937-326d790e63f6 b/azure-resources/MachineLearningServices/workspaces/kql/48ea6480-6263-40ba-8937-326d790e63f6 new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/kql/48ea6480-6263-40ba-8937-326d790e63f6 @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/workspaces/kql/6e2af91f-477d-46a5-b8ce-6cd1b8176550 b/azure-resources/MachineLearningServices/workspaces/kql/6e2af91f-477d-46a5-b8ce-6cd1b8176550 new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/kql/6e2af91f-477d-46a5-b8ce-6cd1b8176550 @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/workspaces/kql/6e4f0fd1-1853-4b94-9736-6d6d239d2694 b/azure-resources/MachineLearningServices/workspaces/kql/6e4f0fd1-1853-4b94-9736-6d6d239d2694 new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/kql/6e4f0fd1-1853-4b94-9736-6d6d239d2694 @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/workspaces/kql/cf2569bb-1cf2-46ce-8885-d742dc6f4a4c b/azure-resources/MachineLearningServices/workspaces/kql/cf2569bb-1cf2-46ce-8885-d742dc6f4a4c new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/workspaces/kql/cf2569bb-1cf2-46ce-8885-d742dc6f4a4c @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/workspaces/recommendations.yaml b/azure-resources/MachineLearningServices/workspaces/recommendations.yaml index 7468c0ee1..8430b847b 100644 --- a/azure-resources/MachineLearningServices/workspaces/recommendations.yaml +++ b/azure-resources/MachineLearningServices/workspaces/recommendations.yaml @@ -50,3 +50,73 @@ 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" + +- description: Selecting regions for BCDR, ensure that both regions offer adequate compute quotas + aprlGuid: 6e4f0fd1-1853-4b94-9736-6d6d239d2694 + recommendationTypeId: null + recommendationControl: DisasterRecovery + recommendationImpact: High + recommendationResourceType: Microsoft.MachineLearningServices/workspaces + recommendationMetadataState: Active + longDescription: | + When selecting regions for BCDR, ensure that both regions offer adequate compute quotas to meet your requirements in the same SKU. This ensures that you can failover to the secondary region without any issues. + potentialBenefits: Provide enough compute resources to the secondary region + pgVerified: false + automationAvailable: false + tags: null + learnMoreLink: + - name: Manage resource quotas + url: "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-quotas?view=azureml-api-2" + +- description: Choose SKUs with longer terms and avoid those nearing retirement + aprlGuid: 6e2af91f-477d-46a5-b8ce-6cd1b8176550 + recommendationTypeId: null + recommendationControl: ServiceUpgradeAndRetirement + recommendationImpact: Medium + recommendationResourceType: Microsoft.MachineLearningServices/workspaces + recommendationMetadataState: Active + longDescription: | + When choosing SKUs, opt for those that support longer terms and steer clear of any SKUs that are nearing retirement. This ensures that you can continue to use the SKU for a longer period of time. + potentialBenefits: supportability, longer term support + pgVerified: false + automationAvailable: false + tags: null + 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" + +- description: Avoid NC and NC_Promo series Azure VMs for machine learning quotas; migrate to newer versions + aprlGuid: cf2569bb-1cf2-46ce-8885-d742dc6f4a4c + recommendationTypeId: null + recommendationControl: ServiceUpgradeAndRetirement + recommendationImpact: High + recommendationResourceType: Microsoft.MachineLearningServices/workspaces + recommendationMetadataState: Active + longDescription: | + Avoid selecting NC and NC_Promo series Azure virtual machines for machine learning VM quotas and make sure to migrate to newer versions. + potentialBenefits: Avoid service disruption, longer term support + pgVerified: false + automationAvailable: false + tags: null + 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" + +- description: Make Azure Machine Learning quota requests through the Azure Machine Learning Studio + aprlGuid: 48ea6480-6263-40ba-8937-326d790e63f6 + recommendationTypeId: null + recommendationControl: OtherBestPractices + recommendationImpact: High + recommendationResourceType: Microsoft.MachineLearningServices/workspaces + recommendationMetadataState: Active + longDescription: | + Requests for additional Azure Machine Learning quota should be made through the Azure Machine Learning Studio instead of the subscription level in the Azure portal. + potentialBenefits: Scalability,capacity planning + pgVerified: false + automationAvailable: false + tags: null + 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" From f4c937be5567b8cba093281da31cdfc5851bdd51 Mon Sep 17 00:00:00 2001 From: Eric Henry <44706965+ejhenry@users.noreply.github.com> Date: Wed, 18 Dec 2024 11:55:16 -0800 Subject: [PATCH 05/10] docs: remove recommendationTypeId values for non-reliability Advisor recommendations (#579) Co-authored-by: Eric Henry --- azure-resources/ApiManagement/service/recommendations.yaml | 2 +- azure-resources/Cdn/profiles/recommendations.yaml | 2 +- .../Compute/virtualMachines/recommendations.yaml | 4 ++-- .../DocumentDB/databaseAccounts/recommendations.yaml | 2 +- azure-resources/KeyVault/vaults/recommendations.yaml | 6 +++--- .../Network/applicationGateways/recommendations.yaml | 4 ++-- .../RecoveryServices/vaults/recommendations.yaml | 2 +- .../Storage/storageAccounts/recommendations.yaml | 2 +- azure-resources/Web/sites/recommendations.yaml | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/azure-resources/ApiManagement/service/recommendations.yaml b/azure-resources/ApiManagement/service/recommendations.yaml index 39b2120de..7db9793ee 100644 --- a/azure-resources/ApiManagement/service/recommendations.yaml +++ b/azure-resources/ApiManagement/service/recommendations.yaml @@ -38,7 +38,7 @@ - description: Azure API Management platform version should be stv2 aprlGuid: e35cf148-8eee-49d1-a1c9-956160f99e0b - recommendationTypeId: e5f60ef8-3fcc-4fb5-bee7-7aaeb44c1509 + recommendationTypeId: null recommendationControl: HighAvailability recommendationImpact: High recommendationResourceType: Microsoft.ApiManagement/service diff --git a/azure-resources/Cdn/profiles/recommendations.yaml b/azure-resources/Cdn/profiles/recommendations.yaml index 3908652d4..e685d7890 100644 --- a/azure-resources/Cdn/profiles/recommendations.yaml +++ b/azure-resources/Cdn/profiles/recommendations.yaml @@ -17,7 +17,7 @@ - description: Use the latest API version and SDK version aprlGuid: 52bc9a7b-23c8-bc4c-9d2a-7bc43b50104a - recommendationTypeId: e607041e-3194-42ad-9994-b6ea5ec12f5e + recommendationTypeId: null recommendationControl: Scalability recommendationImpact: Medium recommendationResourceType: Microsoft.Cdn/profiles diff --git a/azure-resources/Compute/virtualMachines/recommendations.yaml b/azure-resources/Compute/virtualMachines/recommendations.yaml index 7dd7385bf..6967ce709 100644 --- a/azure-resources/Compute/virtualMachines/recommendations.yaml +++ b/azure-resources/Compute/virtualMachines/recommendations.yaml @@ -146,7 +146,7 @@ - description: Enable Accelerated Networking (AccelNet) aprlGuid: dfedbeb1-1519-fc47-86a5-52f96cf07105 - recommendationTypeId: 3a3c1a2a-8597-4d3a-981a-0a24a0ee9de4 + recommendationTypeId: null recommendationControl: Scalability recommendationImpact: Medium recommendationResourceType: Microsoft.Compute/virtualMachines @@ -214,7 +214,7 @@ - description: IP Forwarding should only be enabled for Network Virtual Appliances aprlGuid: 41a22a5e-5e08-9647-92d0-2ffe9ef1bdad - recommendationTypeId: c3b51c94-588b-426b-a892-24696f9e54cc + recommendationTypeId: null recommendationControl: Security recommendationImpact: Medium recommendationResourceType: Microsoft.Compute/virtualMachines diff --git a/azure-resources/DocumentDB/databaseAccounts/recommendations.yaml b/azure-resources/DocumentDB/databaseAccounts/recommendations.yaml index b2ea7ece0..f7966bbf1 100644 --- a/azure-resources/DocumentDB/databaseAccounts/recommendations.yaml +++ b/azure-resources/DocumentDB/databaseAccounts/recommendations.yaml @@ -72,7 +72,7 @@ - description: Configure continuous backup mode aprlGuid: e544520b-8505-7841-9e77-1f1974ee86ec - recommendationTypeId: 52fef986-5897-4359-8b92-0f22749f0d73 + recommendationTypeId: null recommendationControl: DisasterRecovery recommendationImpact: High recommendationResourceType: Microsoft.DocumentDB/databaseAccounts diff --git a/azure-resources/KeyVault/vaults/recommendations.yaml b/azure-resources/KeyVault/vaults/recommendations.yaml index 1ddef4934..2befb74dc 100644 --- a/azure-resources/KeyVault/vaults/recommendations.yaml +++ b/azure-resources/KeyVault/vaults/recommendations.yaml @@ -1,6 +1,6 @@ - description: Key vaults should have soft delete enabled aprlGuid: 1cca00d2-d9ab-8e42-a788-5d40f49405cb - recommendationTypeId: 78211c00-15a9-336e-17c4-0b48613dadf4 + recommendationTypeId: null recommendationControl: DisasterRecovery recommendationImpact: High recommendationResourceType: Microsoft.KeyVault/vaults @@ -17,7 +17,7 @@ - description: Key vaults should have purge protection enabled aprlGuid: 70fcfe6d-00e9-5544-a63a-fff42b9f2edb - recommendationTypeId: 4ed62ae4-5072-f9e7-8d94-51c76c48159a + recommendationTypeId: null recommendationControl: DisasterRecovery recommendationImpact: Medium recommendationResourceType: Microsoft.KeyVault/vaults @@ -68,7 +68,7 @@ - description: Diagnostic logs in Key Vault should be enabled aprlGuid: 1dc0821d-4f14-7644-bab4-ba208ff5f7fa - recommendationTypeId: 88bbc99c-e5af-ddd7-6105-6150b2bfa519 + recommendationTypeId: null recommendationControl: MonitoringAndAlerting recommendationImpact: Low recommendationResourceType: Microsoft.KeyVault/vaults diff --git a/azure-resources/Network/applicationGateways/recommendations.yaml b/azure-resources/Network/applicationGateways/recommendations.yaml index 5edbf95a9..b32f82496 100644 --- a/azure-resources/Network/applicationGateways/recommendations.yaml +++ b/azure-resources/Network/applicationGateways/recommendations.yaml @@ -61,7 +61,7 @@ - description: Migrate to Application Gateway v2 aprlGuid: 7893f0b3-8622-1d47-beed-4b50a19f7895 - recommendationTypeId: 0e19257e-dcef-4d00-8de1-5fe1ae0fd948 + recommendationTypeId: null recommendationControl: Scalability recommendationImpact: High recommendationResourceType: Microsoft.Network/applicationGateways @@ -158,7 +158,7 @@ - description: Ensure Application Gateway Subnet is using a /24 subnet mask aprlGuid: 8364fd0a-7c0e-e240-9d95-4bf965aec243 - recommendationTypeId: ef4da732-f541-4109-bc0e-465c68b6c7eb + recommendationTypeId: null recommendationControl: OtherBestPractices recommendationImpact: High recommendationResourceType: Microsoft.Network/applicationGateways diff --git a/azure-resources/RecoveryServices/vaults/recommendations.yaml b/azure-resources/RecoveryServices/vaults/recommendations.yaml index b2e3241ee..135a30b02 100644 --- a/azure-resources/RecoveryServices/vaults/recommendations.yaml +++ b/azure-resources/RecoveryServices/vaults/recommendations.yaml @@ -34,7 +34,7 @@ - description: Migrate from classic alerts to built-in Azure Monitor alerts for Azure Recovery Services Vaults aprlGuid: 2912472d-0198-4bdc-aa90-37f145790edc - recommendationTypeId: 06578866-1877-41e6-9d22-3ea5122e8048 + recommendationTypeId: null recommendationControl: MonitoringAndAlerting recommendationImpact: Medium recommendationResourceType: Microsoft.RecoveryServices/vaults diff --git a/azure-resources/Storage/storageAccounts/recommendations.yaml b/azure-resources/Storage/storageAccounts/recommendations.yaml index 03d09aff7..bff41c6ab 100644 --- a/azure-resources/Storage/storageAccounts/recommendations.yaml +++ b/azure-resources/Storage/storageAccounts/recommendations.yaml @@ -19,7 +19,7 @@ - description: Use premium performance block blob storage for high performance workloads aprlGuid: 5587ef77-7a05-a74d-9c6e-449547a12f27 - recommendationTypeId: c6b94711-f1f5-4e7e-9c89-c17ed4190969 + recommendationTypeId: null recommendationControl: Scalability recommendationImpact: Medium recommendationResourceType: Microsoft.Storage/storageAccounts diff --git a/azure-resources/Web/sites/recommendations.yaml b/azure-resources/Web/sites/recommendations.yaml index 18f2a84c4..7b42f9353 100644 --- a/azure-resources/Web/sites/recommendations.yaml +++ b/azure-resources/Web/sites/recommendations.yaml @@ -70,7 +70,7 @@ - description: Deploy to a staging slot aprlGuid: a1d91661-32d4-430b-b3b6-5adeb0975df7 - recommendationTypeId: 1d3b5a51-62d4-4b77-96f6-40ed0a3aa21f + recommendationTypeId: null recommendationControl: Governance recommendationImpact: Low recommendationResourceType: Microsoft.Web/sites From 770ffcd77e66c912eb0edd09ce53df2a7f3f8992 Mon Sep 17 00:00:00 2001 From: Claudio Merola Date: Wed, 18 Dec 2024 18:28:58 -0300 Subject: [PATCH 06/10] fix: Collector 2.1.18 & Analyzer 2.1.17 (#582) Co-authored-by: Zach Trocinski <30884663+oZakari@users.noreply.github.com> --- tools/1_wara_collector.ps1 | 123 +++++++++++++++++++++------------ tools/2_wara_data_analyzer.ps1 | 8 +-- tools/Version.json | 4 +- 3 files changed, 85 insertions(+), 50 deletions(-) diff --git a/tools/1_wara_collector.ps1 b/tools/1_wara_collector.ps1 index 3d00c323b..c5ee5ff2b 100644 --- a/tools/1_wara_collector.ps1 +++ b/tools/1_wara_collector.ps1 @@ -464,9 +464,9 @@ $Script:Runtime = Measure-Command -Expression { $workingFolderPath = $PSScriptRoot Set-Location -Path $workingFolderPath; if ($Script:ShellPlatform -eq 'Win32NT') { - $Script:clonePath = "$workingFolderPath\Azure-Proactive-Resiliency-Library" + $Script:clonePath = "$workingFolderPath\Azure-Proactive-Resiliency-Library-v2" } else { - $Script:clonePath = "$workingFolderPath/Azure-Proactive-Resiliency-Library" + $Script:clonePath = "$workingFolderPath/Azure-Proactive-Resiliency-Library-v2" } Write-Debug 'Checking default folder' if ((Get-ChildItem -Path $Script:clonePath -Force -ErrorAction SilentlyContinue | Measure-Object).Count -gt 0) { @@ -636,10 +636,18 @@ $Script:Runtime = Measure-Command -Expression { Select-AzSubscription -Subscription $Subscription -WarningAction SilentlyContinue -InformationAction SilentlyContinue | Out-Null if ($SubId -notin $LoopedSub) { - $Token = Get-AzAccessToken + try{ + $Token = Get-AzAccessToken -AsSecureString -WarningAction SilentlyContinue + } + catch { + Write-Host 'Failed to get token for subscription: ' -NoNewline + Write-Host $SubId.Name -ForegroundColor Red + Connect-ToAzure -TenantID $TenantID -AzureEnvironment $AzureEnvironment + } + $header = @{ - 'Authorization' = 'Bearer ' + $Token.Token + 'Authorization' = 'Bearer ' + ($Token.Token | ConvertFrom-SecureString -AsPlainText) } try { @@ -648,7 +656,7 @@ $Script:Runtime = Measure-Command -Expression { Write-Host 'Outages' -ForegroundColor Magenta $url = ('https://' + $BaseURL + '/subscriptions/' + $Subid + '/providers/Microsoft.ResourceHealth/events?api-version=2022-10-01&queryStartTime=' + $Date) $Outages = Invoke-RestMethod -Uri $url -Headers $header -Method GET - $Script:Outageslist += $Outages.value | Where-Object { $_.properties.impactStartTime -gt $DateOutages } | Sort-Object @{Expression = 'properties.eventlevel'; Descending = $false }, @{Expression = 'properties.status'; Descending = $false } | Select-Object -Property name, properties -First 15 + $Script:Outageslist += $Outages.value | Where-Object { $_.properties.impactStartTime -gt $DateOutages } | Sort-Object @{Expression = 'properties.eventlevel'; Descending = $false }, @{Expression = 'properties.status'; Descending = $false } | Select-Object -Property name, properties $Script:RetiredOutages += $Outages.value | Sort-Object @{Expression = 'properties.eventlevel'; Descending = $false }, @{Expression = 'properties.status'; Descending = $false } | Select-Object -Property name, properties } catch { $null } @@ -852,6 +860,8 @@ $Script:Runtime = Measure-Command -Expression { function Invoke-QueryExecution { param($type, $Subscription, $query, $checkId, $checkName, $selector, $validationAction) + $TempResult = @() + if ($Debugging.IsPresent) { Write-Host $query -ForegroundColor Yellow } @@ -866,41 +876,44 @@ $Script:Runtime = Measure-Command -Expression { $queryResults = $queryResults | Sort-Object -Property name, id, param1, param2, param3, param4, param5 -Unique foreach ($row in $queryResults) { - $result = [PSCustomObject]@{ - validationAction = [string]$validationAction - recommendationId = [string]$checkId - name = [string]$row.name - Type = [string]$type - id = [string]$row.id - param1 = [string]$row.param1 - param2 = [string]$row.param2 - param3 = [string]$row.param3 - param4 = [string]$row.param4 - param5 = [string]$row.param5 - checkName = [string]$checkName + $result = @{ + validationAction = [string]$validationAction; + recommendationId = [string]$checkId; + name = [string]$row.name; + Type = [string]$type; + id = [string]$row.id; + param1 = [string]$row.param1; + param2 = [string]$row.param2; + param3 = [string]$row.param3; + param4 = [string]$row.param4; + param5 = [string]$row.param5; + checkName = [string]$checkName; selector = [string]$selector } - $result + $TempResult += $result } } if ($type -like '*azure-specialized-workloads/*') { - $result = [PSCustomObject]@{ - validationAction = [string]$validationAction - recommendationId = [string]$checkId - name = [string]'' - Type = [string]$type - id = [string]'' - param1 = [string]'' - param2 = [string]'' - param3 = [string]'' - param4 = [string]'' - param5 = [string]'' - checkName = [string]$checkName + $result = @{ + validationAction = [string]$validationAction; + recommendationId = [string]$checkId; + name = [string]''; + Type = [string]$type; + id = [string]''; + param1 = [string]$type; + param2 = [string]''; + param3 = [string]''; + param4 = [string]''; + param5 = [string]''; + checkName = [string]$checkName; selector = [string]$selector } - $result + $TempResult += $result } + + return $TempResult + } catch { # Report Error $errorMessage = $_.Exception.Message @@ -1243,6 +1256,8 @@ $Script:Runtime = Measure-Command -Expression { $Script:InScope = $Script:InScope | Where-Object { $_.id -notin $Script:ExcludeList.id } } + $Script:AllGroupedResourceTypes = $Script:InScope | Group-Object -Property type + Write-Host 'Ordering Impacted Resources..' -ForegroundColor Cyan $Script:results = $Script:results | Sort-Object -Unique -Property validationAction, recommendationId, name, Type, id, param1, param2, param3, param4, param5, checkName, selector @@ -1290,6 +1305,25 @@ $Script:Runtime = Measure-Command -Expression { selector = $Temp.selector } $result + } elseif ($Temp.Type -like '*azure-specialized-workloads/*') { + $result = [PSCustomObject]@{ + validationAction = $Temp.validationAction + recommendationId = $Temp.recommendationId + name = '' + id = '' + type = 'Microsoft.Subscription/Subscriptions' + location = '' + subscriptionId = '' + resourceGroup = '' + param1 = $Temp.param1 + param2 = '' + param3 = '' + param4 = '' + param5 = '' + checkName = $Temp.checkName + selector = $Temp.selector + } + $result } } @@ -1334,25 +1368,22 @@ $Script:Runtime = Measure-Command -Expression { function Resolve-ResourceType { $TempTypes = $Script:ImpactedResources | Where-Object { $_.validationAction -eq 'IMPORTANT - Resource Type is not available in either APRL or Advisor - Validate Resources manually if Applicable, if not Delete this line' } - $Script:AllResourceTypes = $Script:AllResourceTypes | Sort-Object -Property Count -Descending - $Looper = $Script:AllResourceTypes | Sort-Object -Property Name -Unique - foreach ($result in $Looper.Name) { - $ResourceTypeCount = (($Script:AllResourceTypes | Where-Object { $_.Name -eq $result }) | Select-Object -ExpandProperty Count | Measure-Object -Sum).Sum - $ResultType = $result - if ($ResultType -in $TempTypes.recommendationId) { + $Script:AllGroupedResourceTypes = $Script:AllGroupedResourceTypes | Sort-Object -Property Count -Descending + foreach ($EnvType in $Script:AllGroupedResourceTypes) { + if ($EnvType.Name -in $TempTypes.recommendationId) { $tmp = [PSCustomObject]@{ - 'Resource Type' = [string]$ResultType - 'Number of Resources' = [string]$ResourceTypeCount + 'Resource Type' = [string]$EnvType.Name + 'Number of Resources' = [string]$EnvType.Count 'Available in APRL/ADVISOR?' = 'No' 'Assessment Owner' = '' 'Status' = '' 'Notes' = '' } $Script:AllResourceTypesOrdered += $tmp - } elseif ($ResultType -notin $TempTypes.recommendationId) { + } elseif ($EnvType.Name -notin $TempTypes.recommendationId) { $tmp = [PSCustomObject]@{ - 'Resource Type' = [string]$ResultType - 'Number of Resources' = [string]$ResourceTypeCount + 'Resource Type' = [string]$EnvType.Name + 'Number of Resources' = [string]$EnvType.Count 'Available in APRL/ADVISOR?' = 'Yes' 'Assessment Owner' = '' 'Status' = '' @@ -1549,6 +1580,7 @@ $Script:Runtime = Measure-Command -Expression { $ExporterArray | ConvertTo-Json -Depth 15 | Out-File $Script:JsonFile } } + function Get-WAFObjectByList { param ( [Parameter(Mandatory = $true)] @@ -1568,9 +1600,12 @@ $Script:Runtime = Measure-Command -Expression { return $matchingObjects } + function Get-OtherRecommendations() { - $token = 'Bearer ' + (Get-AzAccessToken).Token + $Token = Get-AzAccessToken -AsSecureString -WarningAction SilentlyContinue + + $token = 'Bearer ' + ($Token.Token | ConvertFrom-SecureString -AsPlainText) $authHeaders = @{ 'Authorization' = $token } @@ -1639,7 +1674,7 @@ $Script:Runtime = Measure-Command -Expression { #Call the functions - $Script:Version = '2.1.17' + $Script:Version = '2.1.18' Write-Host 'Version: ' -NoNewline Write-Host $Script:Version -ForegroundColor DarkBlue diff --git a/tools/2_wara_data_analyzer.ps1 b/tools/2_wara_data_analyzer.ps1 index 863d063e6..4948b359c 100644 --- a/tools/2_wara_data_analyzer.ps1 +++ b/tools/2_wara_data_analyzer.ps1 @@ -139,7 +139,7 @@ $Script:Runtime = Measure-Command -Expression { # Define script path as the default path to save files $workingFolderPath = $PSScriptRoot Set-Location -Path $workingFolderPath; - $Script:clonePath = "$workingFolderPath\Azure-Proactive-Resiliency-Library" + $Script:clonePath = "$workingFolderPath\Azure-Proactive-Resiliency-Library-v2" Write-Debug 'Checking default folder' if ((Get-ChildItem -Path $Script:clonePath -Force | Measure-Object).Count -gt 0) { Write-Debug 'APRL Folder does exist. Reseting it...' @@ -309,7 +309,7 @@ $Script:Runtime = Measure-Command -Expression { param3 = $Recom.param3; param4 = $Recom.param4; param5 = $Recom.param5; - supportTicketId = ''; + supportTicketId = $Tickets; source = $Recom.selector; checkName = $Recom.checkName; 'WAF Pillar' = 'Reliability'; @@ -781,7 +781,7 @@ $Script:Runtime = Measure-Command -Expression { # Build the APRL Recommendations foreach ($Service in $Script:ServicesYAMLContent) { - if (($Service.recommendationResourceType -like 'Specialized.Workload/*' -or $Service.recommendationResourceType -in $Script:AllResourceTypesOrdered.'Resource Type' -or $Script:FilterRecommendations -eq $false) -and ([string]::IsNullOrEmpty($Service.recommendationTypeId) -or (![string]::IsNullOrEmpty($Service.recommendationTypeId) -and $Service.recommendationTypeId -notin $Script:RecommendedAdv))) { + if (($Service.recommendationResourceType -like 'Specialized.Workload/*' -or $Service.recommendationResourceType -eq 'Microsoft.Resources/subscriptions' -or $Service.recommendationResourceType -in $Script:AllResourceTypesOrdered.'Resource Type' -or $Script:FilterRecommendations -eq $false) -and ([string]::IsNullOrEmpty($Service.recommendationTypeId) -or (![string]::IsNullOrEmpty($Service.recommendationTypeId) -and $Service.recommendationTypeId -notin $Script:RecommendedAdv))) { $ID = $Service.aprlGuid $resourceType = $Service.recommendationResourceType @@ -1056,7 +1056,7 @@ $Script:Runtime = Measure-Command -Expression { } #Call the functions - $Script:Version = '2.1.16' + $Script:Version = '2.1.17' Write-Host 'Version: ' -NoNewline Write-Host $Script:Version -ForegroundColor DarkBlue diff --git a/tools/Version.json b/tools/Version.json index 1ee77168b..df840e96a 100644 --- a/tools/Version.json +++ b/tools/Version.json @@ -1,7 +1,7 @@ [ { - "Collector": "2.1.17", - "Analyzer": "2.1.16", + "Collector": "2.1.18", + "Analyzer": "2.1.17", "Generator": "2.1.6" } ] From 9d46ef6f51d182889b73743794e7a536bf63f718 Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Wed, 18 Dec 2024 22:29:46 +0100 Subject: [PATCH 07/10] docs: recommendation APIM enable caching to reduce latency (#557) Co-authored-by: Linda Petersson Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Zach Trocinski <30884663+oZakari@users.noreply.github.com> Co-authored-by: Eric Henry <44706965+ejhenry@users.noreply.github.com> --- .../badd9a1f-222a-498d-ab84-1f14892b1c1b.kql | 1 + .../service/recommendations.yaml | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 azure-resources/ApiManagement/service/kql/badd9a1f-222a-498d-ab84-1f14892b1c1b.kql diff --git a/azure-resources/ApiManagement/service/kql/badd9a1f-222a-498d-ab84-1f14892b1c1b.kql b/azure-resources/ApiManagement/service/kql/badd9a1f-222a-498d-ab84-1f14892b1c1b.kql new file mode 100644 index 000000000..614a7f9ca --- /dev/null +++ b/azure-resources/ApiManagement/service/kql/badd9a1f-222a-498d-ab84-1f14892b1c1b.kql @@ -0,0 +1 @@ +// under-development diff --git a/azure-resources/ApiManagement/service/recommendations.yaml b/azure-resources/ApiManagement/service/recommendations.yaml index 7db9793ee..cfc321941 100644 --- a/azure-resources/ApiManagement/service/recommendations.yaml +++ b/azure-resources/ApiManagement/service/recommendations.yaml @@ -71,3 +71,22 @@ learnMoreLink: - name: Setting up auto-scale for Azure API Management url: "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale" + +- description: Enable caching to improve performance in Azure API Management + aprlGuid: badd9a1f-222a-498d-ab84-1f14892b1c1b + recommendationTypeId: null + recommendationControl: HighAvailability + recommendationImpact: Medium + recommendationResourceType: Microsoft.ApiManagement/service + recommendationMetadataState: Active + longDescription: | + Response caching can significantly reduce latency for API callers and backend load for API providers. + potentialBenefits: Ensures service continuity and high availability + pgVerified: false + automationAvailable: false + tags: null + 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" From 9489d177703d1b5e20cb4fea4b5da826434cdf19 Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Wed, 18 Dec 2024 22:46:24 +0100 Subject: [PATCH 08/10] docs: reccomendation AOAI multi-region deployment (#581) Co-authored-by: Linda Petersson Co-authored-by: Eric Henry <44706965+ejhenry@users.noreply.github.com> Co-authored-by: Zach Trocinski <30884663+oZakari@users.noreply.github.com> --- .../kql/61187af4-7d36-4b48-b16e-de78bef143a0.kql | 1 + .../accounts/recommendations.yaml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 azure-resources/CognitiveServices/accounts/kql/61187af4-7d36-4b48-b16e-de78bef143a0.kql diff --git a/azure-resources/CognitiveServices/accounts/kql/61187af4-7d36-4b48-b16e-de78bef143a0.kql b/azure-resources/CognitiveServices/accounts/kql/61187af4-7d36-4b48-b16e-de78bef143a0.kql new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/CognitiveServices/accounts/kql/61187af4-7d36-4b48-b16e-de78bef143a0.kql @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/CognitiveServices/accounts/recommendations.yaml b/azure-resources/CognitiveServices/accounts/recommendations.yaml index d8e24a772..1affe193e 100644 --- a/azure-resources/CognitiveServices/accounts/recommendations.yaml +++ b/azure-resources/CognitiveServices/accounts/recommendations.yaml @@ -65,3 +65,19 @@ - name: Learn More url: "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/deployment-types#data-zone-standard" +- description: Deploy AOAI Service in multiple regions using Standard and/or Provisioned deployments + aprlGuid: 61187af4-7d36-4b48-b16e-de78bef143a0 + recommendationTypeId: null + recommendationControl: HighAvailability + recommendationImpact: High + recommendationResourceType: Microsoft.CognitiveServices/Accounts + recommendationMetadataState: Active + longDescription: | + If your service needs to always be available, design AOAI Service to either failover into another region or split the workload between two or more regions. Applications requiring high degrees of resiliency should consider this to strengthen their model infrastructure. + potentialBenefits: Ensures business continuity during regional outages. + pgVerified: false + automationAvailable: false + tags: null + learnMoreLink: + - name: Learn More + url: "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/business-continuity-disaster-recovery" From 0275061443dcce7d7c56484e456dcd50f7edea5e Mon Sep 17 00:00:00 2001 From: Soniya Mittal <71252948+sonmitt@users.noreply.github.com> Date: Thu, 19 Dec 2024 03:18:56 +0530 Subject: [PATCH 09/10] docs: Added new APRL recommendations for API Management (#588) Co-authored-by: Soniya Mittal Co-authored-by: Zach Trocinski Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../af4f88cb-35e8-4371-b29e-3a32b1d2f40a.kql | 1 + .../service/recommendations.yaml | 16 + tools/data/recommendations.json | 2725 +++++++++-------- 3 files changed, 1501 insertions(+), 1241 deletions(-) create mode 100644 azure-resources/ApiManagement/service/kql/af4f88cb-35e8-4371-b29e-3a32b1d2f40a.kql diff --git a/azure-resources/ApiManagement/service/kql/af4f88cb-35e8-4371-b29e-3a32b1d2f40a.kql b/azure-resources/ApiManagement/service/kql/af4f88cb-35e8-4371-b29e-3a32b1d2f40a.kql new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/ApiManagement/service/kql/af4f88cb-35e8-4371-b29e-3a32b1d2f40a.kql @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/ApiManagement/service/recommendations.yaml b/azure-resources/ApiManagement/service/recommendations.yaml index cfc321941..26f2d330c 100644 --- a/azure-resources/ApiManagement/service/recommendations.yaml +++ b/azure-resources/ApiManagement/service/recommendations.yaml @@ -72,6 +72,22 @@ - name: Setting up auto-scale for Azure API Management url: "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale" +- description: Configure API management service in multiple Azure regions + aprlGuid: af4f88cb-35e8-4371-b29e-3a32b1d2f40a + recommendationTypeId: null + recommendationControl: DisasterRecovery + recommendationImpact: High + recommendationResourceType: Microsoft.ApiManagement/service + recommendationMetadataState: Active + longDescription: | + API Management multi-region deployment will help to reduce request latency perceived by geographically distributed API consumers and improves service availability if one region goes offline. + potentialBenefits: Improve latency and provides business continuity + pgVerified: true + automationAvailable: false + tags: null + 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" - description: Enable caching to improve performance in Azure API Management aprlGuid: badd9a1f-222a-498d-ab84-1f14892b1c1b recommendationTypeId: null diff --git a/tools/data/recommendations.json b/tools/data/recommendations.json index 162455d5f..93beff7af 100644 --- a/tools/data/recommendations.json +++ b/tools/data/recommendations.json @@ -5,8 +5,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", @@ -26,12 +26,12 @@ "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" + "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" }, { - "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-ha-dr#manual-failover", + "name": "IoT Hub high availability and disaster recovery" } ], "recommendationControl": "DisasterRecovery", @@ -51,8 +51,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", @@ -72,8 +72,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", @@ -93,16 +93,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "IoT Hub Device Provisioning Service (DPS) terminology", - "url": "https://learn.microsoft.com/en-us/azure/iot-dps/concepts-service" + "url": "https://learn.microsoft.com/en-us/azure/iot-dps/concepts-service", + "name": "IoT Hub Device Provisioning Service (DPS) terminology" }, { - "name": "Best practices for large-scale IoT device deployments", - "url": "https://learn.microsoft.com/en-us/azure/iot-dps/concepts-deploy-at-scale" + "url": "https://learn.microsoft.com/en-us/azure/iot-dps/concepts-deploy-at-scale", + "name": "Best practices for large-scale IoT device deployments" }, { - "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/iot-dps-ha-dr", + "name": "IoT Hub Device Provisioning Service high availability and disaster recovery" } ], "recommendationControl": "Scalability", @@ -122,8 +122,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", @@ -143,8 +143,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", @@ -164,8 +164,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", @@ -185,8 +185,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", @@ -206,8 +206,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", @@ -227,12 +227,12 @@ "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" + "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" }, { - "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/virtual-machines/image-builder-overview?tabs=azure-powershell#regions", + "name": "Azure Image Builder Supported Regions" } ], "recommendationControl": "DisasterRecovery", @@ -252,12 +252,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Storage redundancy", - "url": "https://learn.microsoft.com/azure/storage/common/storage-redundancy" + "url": "https://learn.microsoft.com/azure/storage/common/storage-redundancy", + "name": "Azure 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/redundancy-migration", + "name": "Change the redundancy configuration for a storage account" } ], "recommendationControl": "HighAvailability", @@ -273,28 +273,28 @@ }, { "aprlGuid": "5587ef77-7a05-a74d-9c6e-449547a12f27", - "recommendationTypeId": "c6b94711-f1f5-4e7e-9c89-c17ed4190969", + "recommendationTypeId": null, "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Types of storage accounts", - "url": "https://learn.microsoft.com/azure/storage/common/storage-account-overview#types-of-storage-accounts" + "url": "https://learn.microsoft.com/azure/storage/common/storage-account-overview#types-of-storage-accounts", + "name": "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" + "url": "https://learn.microsoft.com/azure/storage/common/scalability-targets-standard-account", + "name": "Scalability and performance targets for standard storage accounts" }, { - "name": "Performance and scalability checklist for Blob storage", - "url": "https://learn.microsoft.com/azure/storage/blobs/storage-performance-checklist" + "url": "https://learn.microsoft.com/azure/storage/blobs/storage-performance-checklist", + "name": "Performance and scalability checklist for Blob storage" }, { - "name": "Scalability and performance targets for Blob storage", - "url": "https://learn.microsoft.com/azure/storage/blobs/scalability-targets" + "url": "https://learn.microsoft.com/azure/storage/blobs/scalability-targets", + "name": "Scalability and performance targets for Blob storage" }, { - "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", @@ -314,8 +314,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", @@ -335,8 +335,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", @@ -356,12 +356,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Point-in-time restore for block blobs", - "url": "https://learn.microsoft.com/azure/storage/blobs/point-in-time-restore-overview" + "url": "https://learn.microsoft.com/azure/storage/blobs/point-in-time-restore-overview", + "name": "Point-in-time restore for block blobs" }, { - "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-manage?tabs=portal", + "name": "Perform a point-in-time restore on block blob data" } ], "recommendationControl": "DisasterRecovery", @@ -381,12 +381,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor Azure Blob Storage", - "url": "https://learn.microsoft.com/azure/storage/blobs/monitor-blob-storage" + "url": "https://learn.microsoft.com/azure/storage/blobs/monitor-blob-storage", + "name": "Monitor Azure 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/blob-storage-monitoring-scenarios", + "name": "Best practices for monitoring Azure Blob Storage" } ], "recommendationControl": "MonitoringAndAlerting", @@ -406,12 +406,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Legacy storage account types", - "url": "https://learn.microsoft.com/azure/storage/common/storage-account-overview#legacy-storage-account-types" + "url": "https://learn.microsoft.com/azure/storage/common/storage-account-overview#legacy-storage-account-types", + "name": "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", @@ -431,12 +431,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/architecture/example-scenario/wvd/windows-virtual-desktop#azure-virtual-desktop-limitations", + "name": "Learn More" }, { - "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", @@ -456,16 +456,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Service Bus and reliability", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/services/messaging/service-bus/reliability" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/services/messaging/service-bus/reliability", + "name": "Service Bus and 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" + "url": "https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-geo-dr#availability-zones", + "name": "Azure Service Bus Geo-disaster recovery" }, { - "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/service-bus-messaging/service-bus-outages-disasters", + "name": "Insulate Azure Service Bus applications against outages and disasters" } ], "recommendationControl": "HighAvailability", @@ -485,8 +485,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", @@ -506,12 +506,12 @@ "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/" + "url": "https://azure.microsoft.com/updates/azure-support-tls-will-end-by-31-october-2024-2/", + "name": "Azure support for TLS 1.0 and TLS 1.1 will end by 31 October 2024" }, { - "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", @@ -531,8 +531,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", @@ -552,8 +552,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", @@ -573,8 +573,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", @@ -594,8 +594,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", @@ -615,8 +615,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", @@ -636,8 +636,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", @@ -657,8 +657,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", @@ -678,8 +678,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", @@ -699,8 +699,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", @@ -720,12 +720,12 @@ "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" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-policy-definitions", + "name": "Azure Policy definitions for Azure NetApp Files | Microsoft Learn" }, { - "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/governance/policy/tutorials/create-custom-policy-definition", + "name": "Creating custom policy definitions | Microsoft Learn" } ], "recommendationControl": "Governance", @@ -745,24 +745,24 @@ "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" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/configure-network-features", + "name": "Configure network features for an Azure NetApp Files volume" }, { - "name": "Manage SMB share ACLs in Azure NetApp Files", - "url": "https://learn.microsoft.com/azure/azure-netapp-files/manage-smb-share-access-control-lists" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/manage-smb-share-access-control-lists", + "name": "Manage SMB share ACLs in Azure NetApp Files" }, { - "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" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-configure-export-policy", + "name": "Configure export policy for NFS or dual-protocol volumes" }, { - "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" + "url": "https://learn.microsoft.com/azure/azure-netapp-files/configure-access-control-lists", + "name": "Configure access control lists on NFSv4.1 volumes for Azure NetApp Files" }, { - "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-unix-permissions-change-ownership-mode", + "name": "Configure Unix permissions and change ownership mode for NFS and dual-protocol volumes" } ], "recommendationControl": "Security", @@ -782,8 +782,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", @@ -803,8 +803,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", @@ -824,8 +824,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", @@ -845,8 +845,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", @@ -866,8 +866,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", @@ -887,8 +887,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", @@ -908,8 +908,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", @@ -929,8 +929,8 @@ "recommendationMetadataState": "Active", "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", @@ -950,12 +950,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "AutoFailover Groups", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/auto-failover-group-overview?tabs=azure-powershell" + "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/auto-failover-group-overview?tabs=azure-powershell", + "name": "AutoFailover Groups" }, { - "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/designing-cloud-solutions-for-disaster-recovery", + "name": "DR Design" } ], "recommendationControl": "DisasterRecovery", @@ -975,8 +975,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", @@ -996,8 +996,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", @@ -1017,16 +1017,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Monitor", - "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/insights/azure-sql#analyze-data-and-create-alerts" + "url": "https://learn.microsoft.com/en-us/azure/azure-monitor/insights/azure-sql#analyze-data-and-create-alerts", + "name": "Azure Monitor" }, { - "name": "Azure SQL Database Monitoring", - "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/monitoring-sql-database-azure-monitor" + "url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/monitoring-sql-database-azure-monitor", + "name": "Azure SQL Database Monitoring" }, { - "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-sql/database/monitoring-sql-database-azure-monitor-reference", + "name": "Monitoring SQL Database Reference" } ], "recommendationControl": "MonitoringAndAlerting", @@ -1046,12 +1046,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Key Vault", - "url": "https://learn.microsoft.com/en-us/azure/key-vault/general/overview" + "url": "https://learn.microsoft.com/en-us/azure/key-vault/general/overview", + "name": "Azure Key Vault" }, { - "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/azure-sql/database/always-encrypted-landing?view=azuresql", + "name": "Getting Started with Always Encrypted" } ], "recommendationControl": "DisasterRecovery", @@ -1071,8 +1071,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", @@ -1092,8 +1092,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", @@ -1113,8 +1113,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", @@ -1134,8 +1134,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", @@ -1155,8 +1155,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", @@ -1176,8 +1176,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", @@ -1197,8 +1197,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", @@ -1218,8 +1218,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", @@ -1239,8 +1239,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", @@ -1260,8 +1260,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", @@ -1281,8 +1281,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", @@ -1302,8 +1302,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", @@ -1323,8 +1323,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", @@ -1344,12 +1344,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Implement high availability", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/infrastructure#implement-high-availability" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/infrastructure#implement-high-availability", + "name": "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", @@ -1369,8 +1369,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", @@ -1390,8 +1390,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", @@ -1411,8 +1411,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", @@ -1432,8 +1432,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", @@ -1453,8 +1453,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", @@ -1474,8 +1474,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", @@ -1495,8 +1495,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", @@ -1516,8 +1516,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", @@ -1537,16 +1537,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resource Health", - "url": "https://learn.microsoft.com/en-us/azure/service-health/resource-health-overview" + "url": "https://learn.microsoft.com/en-us/azure/service-health/resource-health-overview", + "name": "Resource Health" }, { - "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" + "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": "Configure Resource Health alerts 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/alerts-activity-log-service-notifications-portal", + "name": "Alerts Health" } ], "recommendationControl": "MonitoringAndAlerting", @@ -1566,8 +1566,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", @@ -1587,8 +1587,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", @@ -1602,14 +1602,169 @@ "automationAvailable": true, "query": "// Azure Resource Graph Query\n// Find all Azure Stream Analytics jobs that are not using the latest version of the service.\nresources\n| where type =~ \"Microsoft.StreamAnalytics/streamingjobs\"\n| where properties.sku.name !~ \"StandardV2\"\n| project recommendationId = \"5d40d3d4-179d-4cf5-ac24-901210f512e7\", name, id, tags\n" }, + { + "aprlGuid": "a86ed26a-59d9-47bd-b440-6bc71b843978", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "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", + "longDescription": "Ensure you have a recovery strategy defined. Check regional availability and paired regions. Machine Learning doesn't have auto failover. Therefore, you must design a strategy that encompasses the workspace and all its dependencies, such as Key Vault, Azure Storage, and Container Registry.\n", + "pgVerified": false, + "description": "Plan for a multi-regional deployment of Azure Machine Learning and associated resources", + "potentialBenefits": "Provides multi-region disaster recovery strategy", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "High", + "automationAvailable": false, + "query": null + }, + { + "aprlGuid": "675d249a-9486-45e3-8e89-863f5802782d", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "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", + "longDescription": "If your primary workspace is unavailable, switch to the secondary workspace to continue work. Azure Machine Learning doesn't auto-submit jobs to the secondary workspace during an outage. Update your code configuration to point to the new workspace resource.\n", + "pgVerified": false, + "description": "Deploy Azure Machine learning workspace in secondary region", + "potentialBenefits": "Provides recovery from regional outages", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "High", + "automationAvailable": false, + "query": null + }, + { + "aprlGuid": "13794a63-8d95-47ce-acbd-5925ede5b208", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "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" + }, + { + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/concept-compute-target?view=azureml-api-2", + "name": "Compute targets in Azure Machine Learning" + } + ], + "recommendationControl": "DisasterRecovery", + "longDescription": "Create compute resources for training a Machine Learning model in selected regions. Ensure both regions have sufficient compute quota for dynamic scaling. Customers must configure HA across zones for attached compute resources like AKS, Azure Databricks, Container Instances.\n", + "pgVerified": false, + "description": "Ensure to create Machine Learning Compute resources in secondary region", + "potentialBenefits": "High availability and disaster recovery", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "High", + "automationAvailable": false, + "query": null + }, + { + "aprlGuid": "6e4f0fd1-1853-4b94-9736-6d6d239d2694", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-quotas?view=azureml-api-2", + "name": "Manage resource quotas" + } + ], + "recommendationControl": "DisasterRecovery", + "longDescription": "When selecting regions for BCDR, ensure that both regions offer adequate compute quotas to meet your requirements in the same SKU. This ensures that you can failover to the secondary region without any issues.\n", + "pgVerified": false, + "description": "Selecting regions for BCDR, ensure that both regions offer adequate compute quotas", + "potentialBenefits": "Provide enough compute resources to the secondary region", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "High", + "automationAvailable": false, + "query": null + }, + { + "aprlGuid": "6e2af91f-477d-46a5-b8ce-6cd1b8176550", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "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", + "longDescription": "When choosing SKUs, opt for those that support longer terms and steer clear of any SKUs that are nearing retirement. This ensures that you can continue to use the SKU for a longer period of time.\n", + "pgVerified": false, + "description": "Choose SKUs with longer terms and avoid those nearing retirement", + "potentialBenefits": "supportability, longer term support", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "Medium", + "automationAvailable": false, + "query": null + }, + { + "aprlGuid": "cf2569bb-1cf2-46ce-8885-d742dc6f4a4c", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/nc-series?tabs=sizebasic", + "name": "NC sizes series" + }, + { + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/n-series-migration", + "name": "Migration Guide for GPU Compute Workloads in Azure" + } + ], + "recommendationControl": "ServiceUpgradeAndRetirement", + "longDescription": "Avoid selecting NC and NC_Promo series Azure virtual machines for machine learning VM quotas and make sure to migrate to newer versions.\n", + "pgVerified": false, + "description": "Avoid NC and NC_Promo series Azure VMs for machine learning quotas; migrate to newer versions", + "potentialBenefits": "Avoid service disruption, longer term support", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "High", + "automationAvailable": false, + "query": null + }, + { + "aprlGuid": "48ea6480-6263-40ba-8937-326d790e63f6", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "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", + "longDescription": "Requests for additional Azure Machine Learning quota should be made through the Azure Machine Learning Studio instead of the subscription level in the Azure portal.\n", + "pgVerified": false, + "description": "Make Azure Machine Learning quota requests through the Azure Machine Learning Studio", + "potentialBenefits": "Scalability,capacity planning", + "tags": null, + "recommendationResourceType": "Microsoft.MachineLearningServices/workspaces", + "recommendationImpact": "High", + "automationAvailable": false, + "query": null + }, { "aprlGuid": "1cca00d2-d9ab-8e42-a788-5d40f49405cb", - "recommendationTypeId": "78211c00-15a9-336e-17c4-0b48613dadf4", + "recommendationTypeId": null, "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", @@ -1625,12 +1780,12 @@ }, { "aprlGuid": "70fcfe6d-00e9-5544-a63a-fff42b9f2edb", - "recommendationTypeId": "4ed62ae4-5072-f9e7-8d94-51c76c48159a", + "recommendationTypeId": null, "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", @@ -1650,8 +1805,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", @@ -1671,8 +1826,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", @@ -1688,12 +1843,12 @@ }, { "aprlGuid": "1dc0821d-4f14-7644-bab4-ba208ff5f7fa", - "recommendationTypeId": "88bbc99c-e5af-ddd7-6105-6150b2bfa519", + "recommendationTypeId": null, "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", @@ -1713,12 +1868,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Migrate App Service to availability zone support", - "url": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service" + "url": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service", + "name": "Migrate App Service to availability zone support" }, { - "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/architecture/reference-architectures/enterprise-integration/ase-high-availability-deployment", + "name": "High availability enterprise deployment using App Service Environment" } ], "recommendationControl": "HighAvailability", @@ -1738,8 +1893,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", @@ -1759,8 +1914,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", @@ -1780,8 +1935,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", @@ -1801,12 +1956,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/app-service/manage-automatic-scaling?tabs=azure-portal", + "name": "Automatic scaling in Azure App Service" }, { - "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/azure-monitor/autoscale/autoscale-get-started", + "name": "Auto Scale Web Apps" } ], "recommendationControl": "Scalability", @@ -1826,8 +1981,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", @@ -1847,8 +2002,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", @@ -1868,12 +2023,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Insights", - "url": "https://learn.microsoft.com/azure/application-insights/app-insights-overview" + "url": "https://learn.microsoft.com/azure/application-insights/app-insights-overview", + "name": "Application Insights" }, { - "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/azure-monitor/app/azure-web-apps", + "name": "Application monitoring for Azure App Service" } ], "recommendationControl": "MonitoringAndAlerting", @@ -1893,8 +2048,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", @@ -1914,8 +2069,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", @@ -1931,12 +2086,12 @@ }, { "aprlGuid": "a1d91661-32d4-430b-b3b6-5adeb0975df7", - "recommendationTypeId": "1d3b5a51-62d4-4b77-96f6-40ed0a3aa21f", + "recommendationTypeId": null, "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", @@ -1956,8 +2111,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", @@ -1977,8 +2132,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", @@ -1998,8 +2153,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", @@ -2019,8 +2174,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", @@ -2040,8 +2195,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", @@ -2061,8 +2216,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", @@ -2082,8 +2237,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", @@ -2103,8 +2258,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", @@ -2124,12 +2279,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "AKS Availability Zones", - "url": "https://learn.microsoft.com/en-us/azure/aks/availability-zones" + "url": "https://learn.microsoft.com/en-us/azure/aks/availability-zones", + "name": "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/virtual-machine-scale-sets/virtual-machine-scale-sets-use-availability-zones#zone-balancing", + "name": "Zone Balancing" } ], "recommendationControl": "HighAvailability", @@ -2149,8 +2304,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", @@ -2170,16 +2325,16 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Entra integration", - "url": "https://learn.microsoft.com/en-us/azure/aks/concepts-identity#azure-ad-integration" + "url": "https://learn.microsoft.com/en-us/azure/aks/concepts-identity#azure-ad-integration", + "name": "Entra integration" }, { - "name": "Use Azure role-based access control for AKS", - "url": "https://learn.microsoft.com/en-us/azure/aks/manage-azure-rbac?source=recommendations" + "url": "https://learn.microsoft.com/en-us/azure/aks/manage-azure-rbac?source=recommendations", + "name": "Use Azure role-based access control for AKS" }, { - "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/manage-local-accounts-managed-azure-ad?source=recommendations", + "name": "Manage AKS local accounts" } ], "recommendationControl": "Security", @@ -2199,12 +2354,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure Azure CNI networking", - "url": "https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni-dynamic-ip-allocation" + "url": "https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni-dynamic-ip-allocation", + "name": "Configure Azure CNI networking" }, { - "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/azure-cni-overlay", + "name": "Configure Azure CNI Overlay networking" } ], "recommendationControl": "Scalability", @@ -2224,20 +2379,20 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use the Cluster Autoscaler on AKS", - "url": "https://learn.microsoft.com/azure/aks/cluster-autoscaler?tabs=azure-cli" + "url": "https://learn.microsoft.com/azure/aks/cluster-autoscaler?tabs=azure-cli", + "name": "Use the Cluster Autoscaler on AKS" }, { - "name": "Best practices for advanced scheduler features", - "url": "https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler" + "url": "https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler", + "name": "Best practices for advanced scheduler features" }, { - "name": "Node pool scaling considerations and best practices", - "url": "https://learn.microsoft.com/azure/aks/best-practices-performance-scale-large#node-pool-scaling" + "url": "https://learn.microsoft.com/azure/aks/best-practices-performance-scale-large#node-pool-scaling", + "name": "Node pool scaling considerations and best practices" }, { - "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/operator-best-practices-scheduler", + "name": "Best practices for basic scheduler features" } ], "recommendationControl": "Scalability", @@ -2257,12 +2412,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "AKS Backups", - "url": "https://learn.microsoft.com/en-us/azure/backup/azure-kubernetes-service-cluster-backup" + "url": "https://learn.microsoft.com/en-us/azure/backup/azure-kubernetes-service-cluster-backup", + "name": "AKS Backups" }, { - "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/aks/operator-best-practices-storage", + "name": "Best Practices for AKS Backups" } ], "recommendationControl": "DisasterRecovery", @@ -2282,24 +2437,24 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Availability zones overview", - "url": "https://learn.microsoft.com/azure/reliability/availability-zones-overview?tabs=azure-cli" + "url": "https://learn.microsoft.com/azure/reliability/availability-zones-overview?tabs=azure-cli", + "name": "Availability zones overview" }, { - "name": "Zone-redundant storage", - "url": "https://learn.microsoft.com/azure/storage/common/storage-redundancy#zone-redundant-storage" + "url": "https://learn.microsoft.com/azure/storage/common/storage-redundancy#zone-redundant-storage", + "name": "Zone-redundant storage" }, { - "name": "ZRS disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-redundancy#zone-redundant-storage-for-managed-disks" + "url": "https://learn.microsoft.com/azure/virtual-machines/disks-redundancy#zone-redundant-storage-for-managed-disks", + "name": "ZRS disks" }, { - "name": "Convert a disk from LRS to ZRS", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-migrate-lrs-zrs" + "url": "https://learn.microsoft.com/azure/virtual-machines/disks-migrate-lrs-zrs", + "name": "Convert a disk from LRS to 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/storage/container-storage/enable-multi-zone-redundancy", + "name": "Enable multi-zone storage redundancy in Azure Container Storage" } ], "recommendationControl": "HighAvailability", @@ -2319,12 +2474,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "CSI Storage Drivers", - "url": "https://learn.microsoft.com/azure/aks/csi-storage-drivers" + "url": "https://learn.microsoft.com/azure/aks/csi-storage-drivers", + "name": "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-migrate-in-tree-volumes", + "name": "CSI Migrate in Tree Volumes" } ], "recommendationControl": "Governance", @@ -2344,8 +2499,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", @@ -2365,12 +2520,12 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Virtual Nodes", - "url": "https://learn.microsoft.com/azure/aks/virtual-nodes" + "url": "https://learn.microsoft.com/azure/aks/virtual-nodes", + "name": "Virtual Nodes" }, { - "name": "Azure Container Instances", - "url": "https://learn.microsoft.com/azure/container-instances/container-instances-overview" + "url": "https://learn.microsoft.com/azure/container-instances/container-instances-overview", + "name": "Azure Container Instances" } ], "recommendationControl": "Scalability", @@ -2390,12 +2545,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Pricing Tiers", - "url": "https://learn.microsoft.com/en-us/azure/aks/free-standard-pricing-tiers" + "url": "https://learn.microsoft.com/en-us/azure/aks/free-standard-pricing-tiers", + "name": "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/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", + "name": "AKS Baseline Architecture" } ], "recommendationControl": "HighAvailability", @@ -2415,8 +2570,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", @@ -2436,16 +2591,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Ephemeral OS disk", - "url": "https://learn.microsoft.com/azure/aks/concepts-storage#ephemeral-os-disk" + "url": "https://learn.microsoft.com/azure/aks/concepts-storage#ephemeral-os-disk", + "name": "Ephemeral OS disk" }, { - "name": "Configure an AKS cluster", - "url": "https://learn.microsoft.com/azure/aks/cluster-configuration" + "url": "https://learn.microsoft.com/azure/aks/cluster-configuration", + "name": "Configure an AKS cluster" }, { - "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/samples/azure-samples/aks-ephemeral-os-disk/aks-ephemeral-os-disk/", + "name": "Everything you want to know about ephemeral OS disks and AKS" } ], "recommendationControl": "Scalability", @@ -2465,12 +2620,12 @@ "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" + "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" }, { - "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/aks/policy-reference", + "name": "Built-in Policy Definitions for AKS" } ], "recommendationControl": "Governance", @@ -2490,12 +2645,12 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "GitOps with AKS", - "url": "https://learn.microsoft.com/en-us/azure/architecture/guide/aks/aks-cicd-github-actions-and-gitops" + "url": "https://learn.microsoft.com/en-us/azure/architecture/guide/aks/aks-cicd-github-actions-and-gitops", + "name": "GitOps with AKS" }, { - "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/example-scenario/gitops-aks/gitops-blueprint-aks", + "name": "GitOps for AKS - Reference Architecture" } ], "recommendationControl": "OtherBestPractices", @@ -2515,12 +2670,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Topology Spread Constraints", - "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/" + "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/", + "name": "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/assign-pod-node/", + "name": "Assign Pod Node" } ], "recommendationControl": "HighAvailability", @@ -2540,12 +2695,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure probes", - "url": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/" + "url": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/", + "name": "Configure probes" }, { - "name": "Assign Pod Node", - "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/" + "url": "https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/", + "name": "Assign Pod Node" } ], "recommendationControl": "HighAvailability", @@ -2565,8 +2720,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", @@ -2586,8 +2741,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", @@ -2607,8 +2762,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", @@ -2628,12 +2783,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Configure PDBs", - "url": "https://kubernetes.io/docs/tasks/run-application/configure-pdb/" + "url": "https://kubernetes.io/docs/tasks/run-application/configure-pdb/", + "name": "Configure PDBs" }, { - "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://learn.microsoft.com/azure/aks/operator-best-practices-scheduler#plan-for-availability-using-pod-disruption-budgets", + "name": "Plan availability using PDBs" } ], "recommendationControl": "HighAvailability", @@ -2653,8 +2808,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", @@ -2674,8 +2829,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", @@ -2695,8 +2850,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", @@ -2716,8 +2871,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", @@ -2737,8 +2892,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", @@ -2758,8 +2913,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", @@ -2775,16 +2930,16 @@ }, { "aprlGuid": "2912472d-0198-4bdc-aa90-37f145790edc", - "recommendationTypeId": "06578866-1877-41e6-9d22-3ea5122e8048", + "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Move to Azure monitor Alerts", - "url": "https://learn.microsoft.com/azure/backup/move-to-azure-monitor-alerts" + "url": "https://learn.microsoft.com/azure/backup/move-to-azure-monitor-alerts", + "name": "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://azure.microsoft.com/updates/transition-to-builtin-azure-monitor-alerts-for-recovery-services-vaults-in-azure-backup-by-31-march-2026/", + "name": "Classic alerts retirement announcement" } ], "recommendationControl": "MonitoringAndAlerting", @@ -2804,20 +2959,20 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Set Cross Region Restore", - "url": "https://learn.microsoft.com/azure/backup/backup-create-recovery-services-vault#set-cross-region-restore" + "url": "https://learn.microsoft.com/azure/backup/backup-create-recovery-services-vault#set-cross-region-restore", + "name": "Set Cross Region Restore" }, { - "name": "Azure Backup Best Practices", - "url": "https://learn.microsoft.com/azure/backup/guidance-best-practices" + "url": "https://learn.microsoft.com/azure/backup/guidance-best-practices", + "name": "Azure Backup 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" + "url": "https://learn.microsoft.com/azure/backup/backup-rbac-rs-vault#minimum-role-requirements-for-azure-vm-backup", + "name": "Minimum Role Requirements for Cross Region Restore" }, { - "name": "Recovery Services Vault", - "url": "https://learn.microsoft.com/azure/backup/backup-azure-arm-vms-prepare" + "url": "https://learn.microsoft.com/azure/backup/backup-azure-arm-vms-prepare", + "name": "Recovery Services Vault" } ], "recommendationControl": "DisasterRecovery", @@ -2837,8 +2992,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", @@ -2858,8 +3013,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", @@ -2879,8 +3034,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", @@ -2900,12 +3055,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Reliability and Azure Load Balancer", - "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-load-balancer/reliability" + "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-load-balancer/reliability", + "name": "Reliability and Azure Load Balancer" }, { - "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", @@ -2925,8 +3080,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", @@ -2946,8 +3101,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", @@ -2967,8 +3122,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", @@ -2988,8 +3143,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", @@ -3009,8 +3164,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", @@ -3030,12 +3185,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/designing-for-high-availability-with-expressroute", + "name": "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/azure/well-architected/services/networking/azure-expressroute#recommendations", + "name": "Azure Well-Architected Framework review - Azure ExpressRoute - Design Checklist" } ], "recommendationControl": "HighAvailability", @@ -3055,8 +3210,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", @@ -3076,8 +3231,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", @@ -3097,8 +3252,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", @@ -3118,8 +3273,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", @@ -3139,8 +3294,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", @@ -3160,8 +3315,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", @@ -3181,8 +3336,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", @@ -3202,8 +3357,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", @@ -3223,8 +3378,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", @@ -3244,12 +3399,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/expressroute/designing-for-high-availability-with-expressroute", + "name": "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/azure/well-architected/services/networking/azure-expressroute#recommendations", + "name": "Azure Well-Architected Framework review - Azure ExpressRoute - Design Checklist" } ], "recommendationControl": "HighAvailability", @@ -3269,8 +3424,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", @@ -3290,12 +3445,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What is Azure NAT Gateway metrics and alerts?", - "url": "https://learn.microsoft.com/en-us/azure/nat-gateway/nat-metrics" + "url": "https://learn.microsoft.com/en-us/azure/nat-gateway/nat-metrics", + "name": "What is Azure NAT Gateway metrics and alerts?" }, { - "name": "AMBA - NAT Gateway", - "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/natGateways/" + "url": "https://azure.github.io/azure-monitor-baseline-alerts/services/Network/natGateways/", + "name": "AMBA - NAT Gateway" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3315,8 +3470,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", @@ -3336,8 +3491,8 @@ "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", @@ -3357,8 +3512,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", @@ -3378,8 +3533,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", @@ -3399,8 +3554,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", @@ -3420,8 +3575,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", @@ -3441,8 +3596,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", @@ -3462,8 +3617,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", @@ -3483,8 +3638,8 @@ "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", @@ -3504,8 +3659,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", @@ -3525,8 +3680,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", @@ -3546,8 +3701,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", @@ -3567,8 +3722,8 @@ "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", @@ -3588,8 +3743,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", @@ -3609,16 +3764,16 @@ "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" + "url": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways#zrgw", + "name": "About ExpressRoute virtual network gateways - Zone-redundant gateway SKUs" }, { - "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" }, { - "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/vpn-gateway/create-zone-redundant-vnet-gateway", + "name": "Create a zone-redundant virtual network gateway in Azure Availability Zones" } ], "recommendationControl": "HighAvailability", @@ -3638,8 +3793,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", @@ -3659,12 +3814,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "ExpressRoute monitoring, metrics, and alerts | ExpressRoute gateways", - "url": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts#expressroute-gateways" + "url": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts#expressroute-gateways", + "name": "ExpressRoute monitoring, metrics, and 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/en-us/azure/expressroute/expressroute-network-insights", + "name": "Azure ExpressRoute Insights using Network Insights" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3684,8 +3839,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", @@ -3705,8 +3860,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", @@ -3726,16 +3881,16 @@ "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" + "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways", + "name": "Zone redundant Virtual network gateway in availability zone" }, { - "name": "Gateway SKU", - "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways#gwskus" + "url": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways#gwskus", + "name": "Gateway SKU" }, { - "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://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "name": "SLA summary for Azure services" } ], "recommendationControl": "HighAvailability", @@ -3755,12 +3910,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Active-active VPN gateway", - "url": "https://learn.microsoft.com/azure/vpn-gateway/active-active-portal#gateway" + "url": "https://learn.microsoft.com/azure/vpn-gateway/active-active-portal#gateway", + "name": "Active-active VPN 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/vpn-gateway-about-vpn-gateway-settings#gwsku", + "name": "Gateway SKU" } ], "recommendationControl": "HighAvailability", @@ -3780,8 +3935,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", @@ -3801,8 +3956,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", @@ -3822,12 +3977,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Getting started with Azure Metrics Explorer", - "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/metrics-getting-started" + "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/metrics-getting-started", + "name": "Getting started with Azure Metrics Explorer" }, { - "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", @@ -3847,8 +4002,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", @@ -3868,8 +4023,8 @@ "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", @@ -3889,20 +4044,20 @@ "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" + "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" }, { - "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" + "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-tuning?pivots=front-door-standard-premium#understanding-waf-logs", + "name": "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" + "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-configuration?tabs=portal", + "name": "Web Application Firewall exclusion lists" }, { - "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/ag/web-application-firewall-troubleshoot#fixing-false-positives", + "name": "Fixing a false positive" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3922,12 +4077,12 @@ "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" + "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" }, { - "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/web-application-firewall-logs#diagnostic-logs", + "name": "Diagnostic logs" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3947,12 +4102,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "WAF monitoring", - "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview#waf-monitoring" + "url": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview#waf-monitoring", + "name": "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://github.com/Azure/Azure-Network-Security/tree/master/Azure%20WAF/Workbook%20-%20WAF%20Monitor%20Workbook", + "name": "Azure Monitor Workbook for WAF" } ], "recommendationControl": "MonitoringAndAlerting", @@ -3972,16 +4127,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Traffic Manager endpoint monitoring", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-monitoring" + "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-monitoring", + "name": "Azure Traffic Manager endpoint monitoring" }, { - "name": "Enable or disable health checks", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-monitoring#enable-or-disable-health-checks-preview" + "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-monitoring#enable-or-disable-health-checks-preview", + "name": "Enable or disable health checks" }, { - "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-troubleshooting-degraded", + "name": "Troubleshooting degraded state on Azure Traffic Manager" } ], "recommendationControl": "HighAvailability", @@ -4001,8 +4156,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", @@ -4022,8 +4177,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", @@ -4043,12 +4198,12 @@ "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" + "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)\"" }, { - "name": "Traffic Manager profile - GeographicProfile (Add an endpoint configured to \"\"All (World)\"\").", - "url": "https://aka.ms/Rf7vc5" + "url": "https://aka.ms/Rf7vc5", + "name": "Traffic Manager profile - GeographicProfile (Add an endpoint configured to \"\"All (World)\"\")." } ], "recommendationControl": "DisasterRecovery", @@ -4068,20 +4223,20 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Load Balancing Options", - "url": "https://learn.microsoft.com/azure/architecture/guide/technology-choices/load-balancing-overview" + "url": "https://learn.microsoft.com/azure/architecture/guide/technology-choices/load-balancing-overview", + "name": "Azure Load Balancing Options" }, { - "name": "Azure Traffic Manager", - "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-overview" + "url": "https://learn.microsoft.com/azure/traffic-manager/traffic-manager-overview", + "name": "Azure Traffic Manager" }, { - "name": "Azure Front Door", - "url": "https://learn.microsoft.com/azure/frontdoor/front-door-overview" + "url": "https://learn.microsoft.com/azure/frontdoor/front-door-overview", + "name": "Azure Front Door" }, { - "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/en-us/azure/architecture/guide/networking/global-web-applications/mission-critical-content-delivery", + "name": "Mission-critical global content delivery" } ], "recommendationControl": "BusinessContinuity", @@ -4101,8 +4256,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", @@ -4122,8 +4277,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", @@ -4143,8 +4298,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", @@ -4164,12 +4319,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Flow logging for network security groups", - "url": "https://learn.microsoft.com/en-us/azure/network-watcher/nsg-flow-logs-overview" + "url": "https://learn.microsoft.com/en-us/azure/network-watcher/nsg-flow-logs-overview", + "name": "Flow logging for network security groups" }, { - "name": "Virtual network flow logs", - "url": "https://learn.microsoft.com/en-us/azure/network-watcher/vnet-flow-logs-overview" + "url": "https://learn.microsoft.com/en-us/azure/network-watcher/vnet-flow-logs-overview", + "name": "Virtual network flow logs" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4189,8 +4344,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", @@ -4210,8 +4365,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", @@ -4231,8 +4386,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", @@ -4252,20 +4407,20 @@ "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" + "url": "https://learn.microsoft.com/azure/virtual-network/concepts-and-best-practices", + "name": "Azure Virtual Network - Concepts and best practices | Microsoft Learn" }, { - "name": "GatewaySUbnet", - "url": "https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub" + "url": "https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub", + "name": "GatewaySUbnet" }, { - "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" + "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": "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/en-us/azure/firewall/firewall-faq#are-network-security-groups--nsgs--supported-on-the-azurefirewallsubnet", + "name": "Are Network Security Groups (NSGs) supported on the AzureFirewallSubnet?" } ], "recommendationControl": "Security", @@ -4285,8 +4440,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", @@ -4306,16 +4461,16 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Azure Virtual Network FAQ | Microsoft Learn", - "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-faq" + "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-faq", + "name": "Azure Virtual Network FAQ | Microsoft Learn" }, { - "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" + "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/network-connectivity/reliability", + "name": "Reliability and Network connectivity - Microsoft Azure Well-Architected Framework | Microsoft LearnNetworking Reliability" }, { - "name": "Azure Private Link availability", - "url": "https://learn.microsoft.com/en-us/azure/private-link/availability" + "url": "https://learn.microsoft.com/en-us/azure/private-link/availability", + "name": "Azure Private Link availability" } ], "recommendationControl": "Security", @@ -4335,8 +4490,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", @@ -4356,8 +4511,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", @@ -4377,24 +4532,24 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Application Gateway Security", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#security" + "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#security", + "name": "Application Gateway Security" }, { - "name": "Application Gateway SSL Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/ssl-overview" + "url": "https://learn.microsoft.com/azure/application-gateway/ssl-overview", + "name": "Application Gateway SSL Overview" }, { - "name": "Application Gateway SSL Policy Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-ssl-policy-overview" + "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-ssl-policy-overview", + "name": "Application Gateway SSL Policy Overview" }, { - "name": "Application Gateway KeyVault Certs", - "url": "https://learn.microsoft.com/azure/application-gateway/key-vault-certs" + "url": "https://learn.microsoft.com/azure/application-gateway/key-vault-certs", + "name": "Application Gateway KeyVault Certs" }, { - "name": "Application Gateway SSL Cert Management", - "url": "https://learn.microsoft.com/azure/application-gateway/ssl-certificate-management" + "url": "https://learn.microsoft.com/azure/application-gateway/ssl-certificate-management", + "name": "Application Gateway SSL Cert Management" } ], "recommendationControl": "Security", @@ -4414,12 +4569,12 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "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/well-architected/services/networking/azure-application-gateway", + "name": "Well-Architected Framework Application Gateway Overview" }, { - "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", @@ -4435,20 +4590,20 @@ }, { "aprlGuid": "7893f0b3-8622-1d47-beed-4b50a19f7895", - "recommendationTypeId": "0e19257e-dcef-4d00-8de1-5fe1ae0fd948", + "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Overview V2", - "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2" + "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2", + "name": "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" + "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2#feature-comparison-between-v1-sku-and-v2-sku", + "name": "Application Gateway Feature Comparison Between V1 and V2" }, { - "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://azure.microsoft.com/updates/application-gateway-v1-will-be-retired-on-28-april-2026-transition-to-application-gateway-v2/", + "name": "Application Gateway V1 Retirement" } ], "recommendationControl": "Scalability", @@ -4468,12 +4623,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Metrics", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-metrics" + "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-metrics", + "name": "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-diagnostics", + "name": "Application Gateway Diagnostics" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4493,12 +4648,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Probe Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-probe-overview" + "url": "https://learn.microsoft.com/azure/application-gateway/application-gateway-probe-overview", + "name": "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/well-architected/services/networking/azure-application-gateway", + "name": "Well-Architected Framework Application Gateway Overview" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4518,12 +4673,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Well-Architected Framework Application Gateway Reliability", - "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#reliability" + "url": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-application-gateway#reliability", + "name": "Well-Architected Framework Application Gateway Reliability" }, { - "name": "Application Gateway V2 Overview", - "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2" + "url": "https://learn.microsoft.com/azure/application-gateway/overview-v2", + "name": "Application Gateway V2 Overview" } ], "recommendationControl": "HighAvailability", @@ -4543,12 +4698,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Application Gateway Connection Draining", - "url": "https://learn.microsoft.com/azure/application-gateway/features#connection-draining" + "url": "https://learn.microsoft.com/azure/application-gateway/features#connection-draining", + "name": "Application Gateway 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/configuration-http-settings#connection-draining", + "name": "Application Gateway Connection Draining HTTP Settings" } ], "recommendationControl": "HighAvailability", @@ -4564,12 +4719,12 @@ }, { "aprlGuid": "8364fd0a-7c0e-e240-9d95-4bf965aec243", - "recommendationTypeId": "ef4da732-f541-4109-bc0e-465c68b6c7eb", + "recommendationTypeId": null, "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", @@ -4589,12 +4744,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Well Architected Framework - Azure Firewall", - "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-firewall" + "url": "https://learn.microsoft.com/azure/architecture/framework/services/networking/azure-firewall", + "name": "Azure Well Architected Framework - 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/firewall/deploy-availability-zone-powershell", + "name": "Deploy Azure Firewall across multiple availability zones" } ], "recommendationControl": "HighAvailability", @@ -4614,12 +4769,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Firewall metrics supported in Azure Monitor", - "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/metrics-supported#microsoftnetworkazurefirewalls" + "url": "https://learn.microsoft.com/azure/azure-monitor/essentials/metrics-supported#microsoftnetworkazurefirewalls", + "name": "Azure Firewall metrics supported in Azure Monitor" }, { - "name": "Azure Firewall performance", - "url": "https://learn.microsoft.com/azure/firewall/firewall-performance" + "url": "https://learn.microsoft.com/azure/firewall/firewall-performance", + "name": "Azure Firewall performance" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4639,8 +4794,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", @@ -4660,8 +4815,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", @@ -4681,8 +4836,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", @@ -4702,12 +4857,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Well-Architected Framework review - Azure Firewall", - "url": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall#recommendations" + "url": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall#recommendations", + "name": "Azure Well-Architected Framework review - Azure Firewall" }, { - "name": "Azure Firewall metrics overview", - "url": "https://learn.microsoft.com/azure/firewall/metrics" + "url": "https://learn.microsoft.com/azure/firewall/metrics", + "name": "Azure Firewall metrics overview" } ], "recommendationControl": "MonitoringAndAlerting", @@ -4727,8 +4882,8 @@ "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", @@ -4748,8 +4903,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", @@ -4769,8 +4924,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", @@ -4790,8 +4945,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", @@ -4811,8 +4966,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", @@ -4832,12 +4987,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Public IP addresses - Availability Zones", - "url": "https://learn.microsoft.com/azure/virtual-network/ip-services/public-ip-addresses#availability-zone" + "url": "https://learn.microsoft.com/azure/virtual-network/ip-services/public-ip-addresses#availability-zone", + "name": "Public IP addresses - Availability Zones" }, { - "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/en-us/azure/virtual-network/ip-services/public-ip-basic-upgrade-guidance#steps-to-complete-the-upgrade", + "name": "Upgrading a basic public IP address to Standard SKU" } ], "recommendationControl": "HighAvailability", @@ -4857,12 +5012,12 @@ "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" + "url": "https://learn.microsoft.com/azure/advisor/advisor-reference-reliability-recommendations#use-nat-gateway-for-outbound-connectivity", + "name": "Use NAT GW 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/architecture/framework/services/compute/azure-app-service/reliability#tcp-and-snat-ports", + "name": "TCP and SNAT Ports" } ], "recommendationControl": "HighAvailability", @@ -4882,12 +5037,12 @@ "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" + "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" }, { - "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://azure.microsoft.com/en-us/updates/upgrade-to-standard-sku-public-ip-addresses-in-azure-by-30-september-2025-basic-sku-will-be-retired/", + "name": "Upgrade to Standard SKU public IP addresses in Azure by 30 September 2025 as Basic SKU will be retired" } ], "recommendationControl": "HighAvailability", @@ -4907,8 +5062,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", @@ -4928,8 +5083,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", @@ -4949,12 +5104,12 @@ "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" + "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" }, { - "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/governance/management-groups/overview#root-management-group-for-each-directory", + "name": "Root management group for each directory" } ], "recommendationControl": "Governance", @@ -4974,12 +5129,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "What is Azure Service Health?", - "url": "https://learn.microsoft.com/azure/service-health/overview" + "url": "https://learn.microsoft.com/azure/service-health/overview", + "name": "What is Azure Service Health?" }, { - "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", @@ -4999,12 +5154,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Shared Disk Introduction", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-shared" + "url": "https://learn.microsoft.com/azure/virtual-machines/disks-shared", + "name": "Azure Shared Disk Introduction" }, { - "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-enable?tabs=azure-portal", + "name": "Enable Shared Disks" } ], "recommendationControl": "OtherBestPractices", @@ -5024,8 +5179,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", @@ -5045,12 +5200,12 @@ "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" + "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" }, { - "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-attach-detach-vm?branch=main&tabs=portal-1%2Cportal-2%2Cportal-3", + "name": "Attach or detach a Virtual Machine to or from a Virtual Machine Scale Set" } ], "recommendationControl": "HighAvailability", @@ -5070,8 +5225,8 @@ "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", @@ -5091,8 +5246,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", @@ -5112,12 +5267,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Resiliency checklist for Virtual Machines", - "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#virtual-machines" + "url": "https://learn.microsoft.com/azure/architecture/checklist/resiliency-per-service#virtual-machines", + "name": "Resiliency checklist for 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/site-recovery/site-recovery-test-failover-to-azure", + "name": "Run a test failover (disaster recovery drill) to Azure" } ], "recommendationControl": "DisasterRecovery", @@ -5137,16 +5292,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Migrate your Azure unmanaged disks by Sep 30, 2025", - "url": "https://learn.microsoft.com/azure/virtual-machines/unmanaged-disks-deprecation" + "url": "https://learn.microsoft.com/azure/virtual-machines/unmanaged-disks-deprecation", + "name": "Migrate your Azure unmanaged disks by Sep 30, 2025" }, { - "name": "Migrate Windows VM from unmanaged disks to managed disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/windows/convert-unmanaged-to-managed-disks" + "url": "https://learn.microsoft.com/azure/virtual-machines/windows/convert-unmanaged-to-managed-disks", + "name": "Migrate Windows VM from unmanaged disks 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/linux/convert-unmanaged-to-managed-disks", + "name": "Migrate Linux VM from unmanaged disks to managed disks" } ], "recommendationControl": "HighAvailability", @@ -5166,12 +5321,12 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Introduction to Azure managed disks - Data disks", - "url": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#data-disk" + "url": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#data-disk", + "name": "Introduction to Azure managed disks - Data disks" }, { - "name": "Azure managed disk types", - "url": "https://learn.microsoft.com/azure/virtual-machines/disks-types" + "url": "https://learn.microsoft.com/azure/virtual-machines/disks-types", + "name": "Azure managed disk types" } ], "recommendationControl": "Scalability", @@ -5191,8 +5346,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", @@ -5212,8 +5367,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", @@ -5229,12 +5384,12 @@ }, { "aprlGuid": "dfedbeb1-1519-fc47-86a5-52f96cf07105", - "recommendationTypeId": "3a3c1a2a-8597-4d3a-981a-0a24a0ee9de4", + "recommendationTypeId": null, "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", @@ -5254,8 +5409,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", @@ -5275,8 +5430,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", @@ -5296,8 +5451,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", @@ -5313,12 +5468,12 @@ }, { "aprlGuid": "41a22a5e-5e08-9647-92d0-2ffe9ef1bdad", - "recommendationTypeId": "c3b51c94-588b-426b-a892-24696f9e54cc", + "recommendationTypeId": null, "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", @@ -5338,8 +5493,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", @@ -5359,8 +5514,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", @@ -5380,12 +5535,12 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Policy-driven governance", - "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-principles#policy-driven-governance" + "url": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-principles#policy-driven-governance", + "name": "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/virtual-machines/security-policy", + "name": "Azure Policy Regulatory Compliance controls for Azure Virtual Machines" } ], "recommendationControl": "Governance", @@ -5405,8 +5560,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", @@ -5426,12 +5581,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Overview of VM insights", - "url": "https://learn.microsoft.com/azure/azure-monitor/vm/vminsights-overview" + "url": "https://learn.microsoft.com/azure/azure-monitor/vm/vminsights-overview", + "name": "Overview of VM insights" }, { - "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-troubleshoot#did-the-extension-install-properly", + "name": "Did the extension install properly?" } ], "recommendationControl": "MonitoringAndAlerting", @@ -5451,8 +5606,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", @@ -5472,8 +5627,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", @@ -5493,8 +5648,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", @@ -5514,8 +5669,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", @@ -5535,12 +5690,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Microsoft Azure Boost", - "url": "https://learn.microsoft.com/azure/azure-boost/overview" + "url": "https://learn.microsoft.com/azure/azure-boost/overview", + "name": "Microsoft Azure Boost" }, { - "name": "Announcing the general availability of Azure Boost", - "url": "https://aka.ms/AzureBoostGABlog" + "url": "https://aka.ms/AzureBoostGABlog", + "name": "Announcing the general availability of Azure Boost" } ], "recommendationControl": "HighAvailability", @@ -5560,16 +5715,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor scheduled events for your Azure VMs", - "url": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-event-service" + "url": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-event-service", + "name": "Monitor scheduled events for your Azure VMs" }, { - "name": "Azure Metadata Service Scheduled Events for Linux VMs", - "url": "https://learn.microsoft.com/azure/virtual-machines/linux/scheduled-events" + "url": "https://learn.microsoft.com/azure/virtual-machines/linux/scheduled-events", + "name": "Azure Metadata Service Scheduled Events for Linux VMs" }, { - "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-events", + "name": "Azure Metadata Service Scheduled Events for Windows VMs" } ], "recommendationControl": "HighAvailability", @@ -5589,8 +5744,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", @@ -5610,8 +5765,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", @@ -5631,8 +5786,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", @@ -5652,8 +5807,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", @@ -5673,12 +5828,12 @@ "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" }, { - "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/storage/common/storage-redundancy#zone-redundant-storage", + "name": "Zone-redundant storage" } ], "recommendationControl": "HighAvailability", @@ -5698,16 +5853,16 @@ "recommendationMetadataState": "Disabled", "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" }, { - "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" + "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": "Generation 1 vs Generation 2 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/shared-image-galleries?tabs=azure-cli", + "name": "Images in Compute gallery" } ], "recommendationControl": "HighAvailability", @@ -5727,8 +5882,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", @@ -5748,8 +5903,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", @@ -5769,12 +5924,12 @@ "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" + "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" }, { - "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/well-architected/services/compute/virtual-machines/virtual-machines-review", + "name": "Azure Well-Architected Framework review - Virtual Machines and Scale Sets" } ], "recommendationControl": "Scalability", @@ -5786,7 +5941,7 @@ "recommendationResourceType": "Microsoft.Compute/virtualMachineScaleSets", "recommendationImpact": "Medium", "automationAvailable": true, - "query": "// Azure Resource Graph Query\n// Find all zonal VMs that are NOT deployed with Flex orchestration mode\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where properties.orchestrationMode != \"Flexible\"\n| project recommendationId = \"e7495e1c-0c75-0946-b266-b429b5c7f3bf\", name, id, tags, param1 = strcat(\"orchestrationMode: \", tostring(properties.orchestrationMode))\n\n" + "query": "// Azure Resource Graph Query\n// Find all zonal VMs that are NOT deployed with Flex orchestration mode\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where isempty(tostring(tags['aks-managed-poolName']))\n| where properties.orchestrationMode != \"Flexible\"\n| project recommendationId = \"e7495e1c-0c75-0946-b266-b429b5c7f3bf\", name, id, tags, param1 = strcat(\"orchestrationMode: \", tostring(properties.orchestrationMode))\n\n" }, { "aprlGuid": "94794d2a-eff0-2345-9b67-6f9349d0a627", @@ -5794,8 +5949,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", @@ -5807,7 +5962,7 @@ "recommendationResourceType": "Microsoft.Compute/virtualMachineScaleSets", "recommendationImpact": "Medium", "automationAvailable": true, - "query": "// Azure Resource Graph Query\n// Find all VMs that do NOT have health monitoring enabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| join kind=leftouter (\n resources\n | where type == \"microsoft.compute/virtualmachinescalesets\"\n | mv-expand extension=properties.virtualMachineProfile.extensionProfile.extensions\n | where extension.properties.type in ( \"ApplicationHealthWindows\", \"ApplicationHealthLinux\" )\n | project id\n) on id\n| where id1 == \"\"\n| project recommendationId = \"94794d2a-eff0-2345-9b67-6f9349d0a627\", name, id, tags, param1 = \"extension: null\"\n\n" + "query": "// Azure Resource Graph Query\n// Find all VMs that do NOT have health monitoring enabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where isempty(tostring(tags['aks-managed-poolName']))\n| join kind=leftouter (\n resources\n | where type == \"microsoft.compute/virtualmachinescalesets\"\n | where isempty(tostring(tags['aks-managed-poolName']))\n | mv-expand extension=properties.virtualMachineProfile.extensionProfile.extensions\n | where extension.properties.type in ( \"ApplicationHealthWindows\", \"ApplicationHealthLinux\" )\n | project id\n) on id\n| where id1 == \"\"\n| project recommendationId = \"94794d2a-eff0-2345-9b67-6f9349d0a627\", name, id, tags, param1 = \"extension: null\"\n\n" }, { "aprlGuid": "820f4743-1f94-e946-ae0b-45efafd87962", @@ -5815,8 +5970,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", @@ -5828,7 +5983,7 @@ "recommendationResourceType": "Microsoft.Compute/virtualMachineScaleSets", "recommendationImpact": "High", "automationAvailable": true, - "query": "// Azure Resource Graph Query\n// Find all VMs that do NOT have automatic repair policy enabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where properties.automaticRepairsPolicy.enabled == false\n| project recommendationId = \"820f4743-1f94-e946-ae0b-45efafd87962\", name, id, tags, param1 = \"automaticRepairsPolicy: Disabled\"\n\n" + "query": "// Azure Resource Graph Query\n// Find all VMs that do NOT have automatic repair policy enabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where isempty(tostring(tags['aks-managed-poolName']))\n| where properties.automaticRepairsPolicy.enabled == false\n| project recommendationId = \"820f4743-1f94-e946-ae0b-45efafd87962\", name, id, tags, param1 = \"automaticRepairsPolicy: Disabled\"\n\n" }, { "aprlGuid": "ee66ff65-9aa3-2345-93c1-25827cf79f44", @@ -5836,12 +5991,12 @@ "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" + "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" }, { - "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-overview", + "name": "Overview of autoscale in Azure" } ], "recommendationControl": "Scalability", @@ -5853,7 +6008,7 @@ "recommendationResourceType": "Microsoft.Compute/virtualMachineScaleSets", "recommendationImpact": "High", "automationAvailable": true, - "query": "// Azure Resource Graph Query\n// Find VMSS instances associated with autoscale settings when autoscale is disabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| project name, id, tags\n| join kind=leftouter (\n resources\n | where type == \"microsoft.insights/autoscalesettings\"\n | where tostring(properties.targetResourceUri) contains \"Microsoft.Compute/virtualMachineScaleSets\"\n | project id = tostring(properties.targetResourceUri), autoscalesettings = properties\n) on id\n| where isnull(autoscalesettings) or autoscalesettings.enabled == \"false\"\n| project recommendationId = \"ee66ff65-9aa3-2345-93c1-25827cf79f44\", name, id, tags, param1 = \"autoscalesettings: Disabled\"\n| order by id asc\n\n" + "query": "// Azure Resource Graph Query\n// Find VMSS instances associated with autoscale settings when autoscale is disabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where isempty(tostring(tags['aks-managed-poolName']))\n| project name, id, tags\n| join kind=leftouter (\n resources\n | where type == \"microsoft.insights/autoscalesettings\"\n | where tostring(properties.targetResourceUri) contains \"Microsoft.Compute/virtualMachineScaleSets\"\n | project id = tostring(properties.targetResourceUri), autoscalesettings = properties\n) on id\n| where isnull(autoscalesettings) or autoscalesettings.enabled == \"false\"\n| project recommendationId = \"ee66ff65-9aa3-2345-93c1-25827cf79f44\", name, id, tags, param1 = \"autoscalesettings: Disabled\"\n| order by id asc\n\n" }, { "aprlGuid": "3f85a51c-e286-9f44-b4dc-51d00768696c", @@ -5861,8 +6016,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", @@ -5874,7 +6029,7 @@ "recommendationResourceType": "Microsoft.Compute/virtualMachineScaleSets", "recommendationImpact": "Low", "automationAvailable": true, - "query": "// Azure Resource Graph Query\n// Find VMSS instances associated with autoscale settings when predictiveAutoscalePolicy_scaleMode is disabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| project name, id, tags\n| join kind=leftouter (\n resources\n | where type == \"microsoft.insights/autoscalesettings\"\n | where tostring(properties.targetResourceUri) contains \"Microsoft.Compute/virtualMachineScaleSets\"\n | project id = tostring(properties.targetResourceUri), autoscalesettings = properties\n) on id\n| where autoscalesettings.enabled == \"true\" and autoscalesettings.predictiveAutoscalePolicy.scaleMode == \"Disabled\"\n| project recommendationId = \"3f85a51c-e286-9f44-b4dc-51d00768696c\", name, id, tags, param1 = \"predictiveAutoscalePolicy_scaleMode: Disabled\"\n| order by id asc\n\n" + "query": "// Azure Resource Graph Query\n// Find VMSS instances associated with autoscale settings when predictiveAutoscalePolicy_scaleMode is disabled\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where isempty(tostring(tags['aks-managed-poolName']))\n| project name, id, tags\n| join kind=leftouter (\n resources\n | where type == \"microsoft.insights/autoscalesettings\"\n | where tostring(properties.targetResourceUri) contains \"Microsoft.Compute/virtualMachineScaleSets\"\n | project id = tostring(properties.targetResourceUri), autoscalesettings = properties\n) on id\n| where autoscalesettings.enabled == \"true\" and autoscalesettings.predictiveAutoscalePolicy.scaleMode == \"Disabled\"\n| project recommendationId = \"3f85a51c-e286-9f44-b4dc-51d00768696c\", name, id, tags, param1 = \"predictiveAutoscalePolicy_scaleMode: Disabled\"\n| order by id asc\n\n" }, { "aprlGuid": "b5a63aa0-c58e-244f-b8a6-cbba0560a6db", @@ -5882,8 +6037,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", @@ -5903,12 +6058,12 @@ "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" + "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" }, { - "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?tabs=cli-1%2Cportal-2#update-scale-set-to-add-availability-zones", + "name": "Update scale set to add availability zones" } ], "recommendationControl": "HighAvailability", @@ -5920,7 +6075,7 @@ "recommendationResourceType": "Microsoft.Compute/virtualMachineScaleSets", "recommendationImpact": "High", "automationAvailable": true, - "query": "// Azure Resource Graph Query\n// Find VMSS instances with one or no Zones selected\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where location in~ (\"australiaeast\", \"brazilsouth\", \"canadacentral\", \"centralindia\", \"centralus\", \"eastasia\", \"eastus\", \"eastus2\", \"francecentral\", \"germanywestcentral\", \"israelcentral\", \"italynorth\", \"japaneast\", \"japanwest\", \"koreacentral\", \"mexicocentral\", \"newzealandnorth\", \"northeurope\", \"norwayeast\", \"polandcentral\", \"qatarcentral\", \"southafricanorth\", \"southcentralus\", \"southeastasia\", \"spaincentral\", \"swedencentral\", \"switzerlandnorth\", \"uaenorth\", \"uksouth\", \"westeurope\", \"westus2\", \"westus3\", \"usgovvirginia\", \"chinanorth3\")\n| where array_length(zones) <= 1 or isnull(zones)\n| project recommendationId = \"1422c567-782c-7148-ac7c-5fc14cf45adc\", name, id, tags, param1 = \"AvailabilityZones: Single Zone\"\n| order by id asc\n\n" + "query": "// Azure Resource Graph Query\n// Find VMSS instances with one or no Zones selected\nresources\n| where type == \"microsoft.compute/virtualmachinescalesets\"\n| where isempty(tostring(tags['aks-managed-poolName']))\n| where location in~ (\"australiaeast\", \"brazilsouth\", \"canadacentral\", \"centralindia\", \"centralus\", \"eastasia\", \"eastus\", \"eastus2\", \"francecentral\", \"germanywestcentral\", \"israelcentral\", \"italynorth\", \"japaneast\", \"japanwest\", \"koreacentral\", \"mexicocentral\", \"newzealandnorth\", \"northeurope\", \"norwayeast\", \"polandcentral\", \"qatarcentral\", \"southafricanorth\", \"southcentralus\", \"southeastasia\", \"spaincentral\", \"swedencentral\", \"switzerlandnorth\", \"uaenorth\", \"uksouth\", \"westeurope\", \"westus2\", \"westus3\", \"usgovvirginia\", \"chinanorth3\")\n| where array_length(zones) <= 1 or isnull(zones)\n| project recommendationId = \"1422c567-782c-7148-ac7c-5fc14cf45adc\", name, id, tags, param1 = \"AvailabilityZones: Single Zone\"\n| order by id asc\n\n" }, { "aprlGuid": "e4ffd7b0-ba24-c84e-9352-ba4819f908c0", @@ -5928,12 +6083,12 @@ "recommendationMetadataState": "Disabled", "learnMoreLink": [ { - "name": "Automatic VM Guest Patching for Azure VMs", - "url": "https://learn.microsoft.com/azure/virtual-machines/automatic-vm-guest-patching" + "url": "https://learn.microsoft.com/azure/virtual-machines/automatic-vm-guest-patching", + "name": "Automatic VM Guest Patching for Azure VMs" }, { - "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/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade", + "name": "Auto OS Image Upgrades" } ], "recommendationControl": "OtherBestPractices", @@ -5953,8 +6108,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", @@ -5974,8 +6129,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", @@ -5991,20 +6146,20 @@ }, { "aprlGuid": "52bc9a7b-23c8-bc4c-9d2a-7bc43b50104a", - "recommendationTypeId": "e607041e-3194-42ad-9994-b6ea5ec12f5e", + "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "REST API Reference", - "url": "https://learn.microsoft.com/rest/api/frontdoor/" + "url": "https://learn.microsoft.com/rest/api/frontdoor/", + "name": "REST API Reference" }, { - "name": "Client library for Java", - "url": "https://learn.microsoft.com/java/api/overview/azure/resourcemanager-frontdoor-readme?view=azure-java-preview" + "url": "https://learn.microsoft.com/java/api/overview/azure/resourcemanager-frontdoor-readme?view=azure-java-preview", + "name": "Client library for Java" }, { - "name": "SDK for Python", - "url": "https://learn.microsoft.com/python/api/overview/azure/front-door?view=azure-python" + "url": "https://learn.microsoft.com/python/api/overview/azure/front-door?view=azure-python", + "name": "SDK for Python" } ], "recommendationControl": "Scalability", @@ -6024,16 +6179,16 @@ "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" + "url": "https://learn.microsoft.com/azure/frontdoor/front-door-diagnostics?pivots=front-door-standard-premium", + "name": "Monitor metrics and logs in Azure Front Door" }, { - "name": "WAF logs", - "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-monitor?pivots=front-door-standard-premium#waf-logs" + "url": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-monitor?pivots=front-door-standard-premium#waf-logs", + "name": "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/standard-premium/how-to-logs", + "name": "Configure Azure Front Door logs" } ], "recommendationControl": "MonitoringAndAlerting", @@ -6053,8 +6208,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", @@ -6074,8 +6229,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", @@ -6095,8 +6250,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", @@ -6116,8 +6271,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", @@ -6137,8 +6292,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", @@ -6158,8 +6313,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", @@ -6179,8 +6334,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", @@ -6200,8 +6355,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", @@ -6221,8 +6376,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", @@ -6242,8 +6397,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", @@ -6263,8 +6418,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", @@ -6284,8 +6439,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", @@ -6305,8 +6460,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", @@ -6326,8 +6481,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", @@ -6347,8 +6502,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", @@ -6368,8 +6523,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", @@ -6389,12 +6544,12 @@ "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" + "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" }, { - "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#scenarios-for-cloud-and-hybrid-jobs", + "name": "Disaster recovery scenarios for cloud and hybrid jobs" } ], "recommendationControl": "HighAvailability", @@ -6408,14 +6563,35 @@ "automationAvailable": false, "query": "// cannot-be-validated-with-arg\n\n" }, + { + "aprlGuid": "081fc8a4-b2d9-405b-b351-334e621016f5", + "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 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", + "tags": null, + "recommendationResourceType": "Microsoft.CognitiveServices/Accounts", + "recommendationImpact": "High", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\n" + }, { "aprlGuid": "0c193899-da60-4a52-b4a0-77d75ac8c5c5", "recommendationTypeId": null, "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", @@ -6435,8 +6611,8 @@ "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", @@ -6456,8 +6632,8 @@ "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", @@ -6471,14 +6647,35 @@ "automationAvailable": false, "query": "// cannot-be-validated-with-arg\n" }, + { + "aprlGuid": "61187af4-7d36-4b48-b16e-de78bef143a0", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "name": "Learn More" + } + ], + "recommendationControl": "HighAvailability", + "longDescription": "If your service needs to always be available, design AOAI Service to either failover into another region or split the workload between two or more regions. Applications requiring high degrees of resiliency should consider this to strengthen their model infrastructure.\n", + "pgVerified": false, + "description": "Deploy AOAI Service in multiple regions using Standard and/or Provisioned deployments", + "potentialBenefits": "Ensures business continuity during regional outages.", + "tags": null, + "recommendationResourceType": "Microsoft.CognitiveServices/Accounts", + "recommendationImpact": "High", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\n" + }, { "aprlGuid": "eb005943-40a8-194b-9db2-474d430046b7", "recommendationTypeId": null, "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", @@ -6498,8 +6695,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", @@ -6519,12 +6716,12 @@ "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" + "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" }, { - "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-geo-replication", + "name": "Geo-Replicate Container Registry" } ], "recommendationControl": "DisasterRecovery", @@ -6544,8 +6741,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", @@ -6565,8 +6762,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", @@ -6586,12 +6783,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/container-registry-best-practices#manage-registry-size", + "name": "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-retention-policy#about-the-retention-policy", + "name": "Retention Policy" } ], "recommendationControl": "Scalability", @@ -6611,8 +6808,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", @@ -6632,12 +6829,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service-reference#resource-logs", + "name": "Monitoring Azure Container Registry data 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", @@ -6657,12 +6854,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitoring Azure Container Registry data reference", - "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service-reference#metrics" + "url": "https://learn.microsoft.com/en-us/azure/container-registry/monitor-service-reference#metrics", + "name": "Monitoring Azure Container Registry data reference" }, { - "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", @@ -6682,8 +6879,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", @@ -6703,12 +6900,12 @@ "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" + "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" }, { - "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/reliability/migrate-api-mgt", + "name": "Migrate Azure API Management to availability zone support" } ], "recommendationControl": "HighAvailability", @@ -6728,12 +6925,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Ensure API Management availability and reliability", - "url": "https://learn.microsoft.com/en-us/azure/api-management/high-availability#availability-zones" + "url": "https://learn.microsoft.com/en-us/azure/api-management/high-availability#availability-zones", + "name": "Ensure API Management availability and reliability" }, { - "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/reliability/migrate-api-mgt", + "name": "Migrate Azure API Management to availability zone support" } ], "recommendationControl": "HighAvailability", @@ -6749,16 +6946,16 @@ }, { "aprlGuid": "e35cf148-8eee-49d1-a1c9-956160f99e0b", - "recommendationTypeId": "e5f60ef8-3fcc-4fb5-bee7-7aaeb44c1509", + "recommendationTypeId": null, "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" + "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)" }, { - "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/compute-infrastructure", + "name": "Azure API Management compute platform" } ], "recommendationControl": "HighAvailability", @@ -6778,8 +6975,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", @@ -6793,18 +6990,64 @@ "automationAvailable": false, "query": "// cannot-be-validated-with-arg\n" }, + { + "aprlGuid": "af4f88cb-35e8-4371-b29e-3a32b1d2f40a", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "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", + "longDescription": "API Management multi-region deployment will help to reduce request latency perceived by geographically distributed API consumers and improves service availability if one region goes offline.\n", + "pgVerified": true, + "description": "Configure API management service in multiple Azure regions", + "potentialBenefits": "Improve latency and provides business continuity", + "tags": null, + "recommendationResourceType": "Microsoft.ApiManagement/service", + "recommendationImpact": "High", + "automationAvailable": false, + "query": "// cannot-be-validated-with-arg\n" + }, + { + "aprlGuid": "badd9a1f-222a-498d-ab84-1f14892b1c1b", + "recommendationTypeId": null, + "recommendationMetadataState": "Active", + "learnMoreLink": [ + { + "url": "https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-cache", + "name": "Add caching to improve performance in Azure API Management" + }, + { + "url": "https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-cache-external", + "name": "Use an external cache in Azure API Management" + } + ], + "recommendationControl": "HighAvailability", + "longDescription": "Response caching can significantly reduce latency for API callers and backend load for API providers.\n", + "pgVerified": false, + "description": "Enable caching to improve performance in Azure API Management", + "potentialBenefits": "Ensures service continuity and high availability", + "tags": null, + "recommendationResourceType": "Microsoft.ApiManagement/service", + "recommendationImpact": "Medium", + "automationAvailable": false, + "query": "// under-development\n" + }, { "aprlGuid": "6cd57b65-ef84-4088-9ada-c0d8de74c2f7", "recommendationTypeId": null, "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Managed Grafana service reliability", - "url": "https://learn.microsoft.com/azure/managed-grafana/high-availability" + "url": "https://learn.microsoft.com/azure/managed-grafana/high-availability", + "name": "Azure Managed Grafana service reliability" }, { - "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", @@ -6824,8 +7067,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", @@ -6845,8 +7088,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", @@ -6866,8 +7109,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", @@ -6887,8 +7130,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", @@ -6908,8 +7151,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", @@ -6929,8 +7172,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", @@ -6950,8 +7193,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", @@ -6971,8 +7214,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", @@ -6992,8 +7235,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", @@ -7013,8 +7256,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", @@ -7034,12 +7277,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Distribute data globally with Azure Cosmos DB", - "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally" + "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally", + "name": "Distribute data globally with Azure Cosmos DB" }, { - "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/high-availability#tips-for-building-highly-available-applications", + "name": "Tips for building highly available applications" } ], "recommendationControl": "HighAvailability", @@ -7059,8 +7302,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", @@ -7080,8 +7323,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", @@ -7101,12 +7344,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Distribute data globally with Azure Cosmos DB", - "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally" + "url": "https://learn.microsoft.com/azure/cosmos-db/distribute-data-globally", + "name": "Distribute data globally with Azure Cosmos DB" }, { - "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/conflict-resolution-policies", + "name": "Conflict resolution types and resolution policies in Azure Cosmos DB" } ], "recommendationControl": "HighAvailability", @@ -7122,12 +7365,12 @@ }, { "aprlGuid": "e544520b-8505-7841-9e77-1f1974ee86ec", - "recommendationTypeId": "52fef986-5897-4359-8b92-0f22749f0d73", + "recommendationTypeId": null, "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", @@ -7147,8 +7390,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", @@ -7168,8 +7411,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", @@ -7189,8 +7432,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", @@ -7210,8 +7453,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", @@ -7231,8 +7474,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", @@ -7252,8 +7495,8 @@ "recommendationMetadataState": "Active", "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", @@ -7273,8 +7516,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", @@ -7294,8 +7537,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", @@ -7315,8 +7558,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", @@ -7336,12 +7579,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Log Analytics workspace data export in Azure Monitor", - "url": "https://learn.microsoft.com/azure/azure-monitor/logs/logs-data-export" + "url": "https://learn.microsoft.com/azure/azure-monitor/logs/logs-data-export", + "name": "Log Analytics workspace data export in Azure Monitor" }, { - "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/best-practices-logs#configuration-recommendations", + "name": "Azure Monitor configuration recommendations" } ], "recommendationControl": "Governance", @@ -7361,12 +7604,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Monitor Log Analytics workspace health", - "url": "https://learn.microsoft.com/azure/azure-monitor/logs/log-analytics-workspace-health" + "url": "https://learn.microsoft.com/azure/azure-monitor/logs/log-analytics-workspace-health", + "name": "Monitor 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/best-practices-logs#configuration-recommendations", + "name": "Azure Monitor configuration recommendations" } ], "recommendationControl": "MonitoringAndAlerting", @@ -7386,8 +7629,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", @@ -7407,8 +7650,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", @@ -7428,8 +7671,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", @@ -7449,8 +7692,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", @@ -7470,8 +7713,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", @@ -7491,8 +7734,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", @@ -7512,12 +7755,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Best practices for reliability", - "url": "https://learn.microsoft.com/azure/databricks/lakehouse-architecture/reliability/best-practices" + "url": "https://learn.microsoft.com/azure/databricks/lakehouse-architecture/reliability/best-practices", + "name": "Best practices for reliability" }, { - "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", @@ -7537,8 +7780,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", @@ -7558,8 +7801,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", @@ -7579,8 +7822,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", @@ -7600,8 +7843,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", @@ -7621,8 +7864,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", @@ -7642,8 +7885,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", @@ -7663,8 +7906,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", @@ -7684,8 +7927,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", @@ -7705,8 +7948,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", @@ -7726,8 +7969,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", @@ -7747,8 +7990,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", @@ -7768,8 +8011,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", @@ -7789,8 +8032,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", @@ -7810,8 +8053,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", @@ -7831,8 +8074,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", @@ -7852,8 +8095,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", @@ -7873,8 +8116,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", @@ -7894,8 +8137,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", @@ -7915,8 +8158,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", @@ -7936,8 +8179,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", @@ -7957,8 +8200,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", @@ -7978,16 +8221,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Azure Databricks control plane addresses", - "url": "https://learn.microsoft.com/azure/databricks/resources/supported-regions#--azure-databricks-control-plane-addresses" + "url": "https://learn.microsoft.com/azure/databricks/resources/supported-regions#--azure-databricks-control-plane-addresses", + "name": "Azure Databricks control plane addresses" }, { - "name": "Migrate - maintained by Databricks Inc.", - "url": "https://github.com/databrickslabs/migrate" + "url": "https://github.com/databrickslabs/migrate", + "name": "Migrate - maintained by Databricks Inc." }, { - "name": "Databricks Terraform Exporter - maintained by Databricks Inc. (Experimental)", - "url": "https://registry.terraform.io/providers/databricks/databricks/latest/docs/guides/experimental-exporter" + "url": "https://registry.terraform.io/providers/databricks/databricks/latest/docs/guides/experimental-exporter", + "name": "Databricks Terraform Exporter - maintained by Databricks Inc. (Experimental)" } ], "recommendationControl": "HighAvailability", @@ -8007,12 +8250,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Compute configuration best practices", - "url": "https://learn.microsoft.com/azure/databricks/compute/cluster-config-best-practices" + "url": "https://learn.microsoft.com/azure/databricks/compute/cluster-config-best-practices", + "name": "Compute configuration best practices" }, { - "name": "GPU-enabled compute", - "url": "https://learn.microsoft.com/azure/databricks/compute/gpu" + "url": "https://learn.microsoft.com/azure/databricks/compute/gpu", + "name": "GPU-enabled compute" } ], "recommendationControl": "Personalized", @@ -8032,8 +8275,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", @@ -8053,8 +8296,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", @@ -8074,12 +8317,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-identity-source-vcenter", + "name": "Set an external identity source for 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-external-identity-source-nsx-t", + "name": "Set an external identity for NSX-T" } ], "recommendationControl": "Security", @@ -8099,12 +8342,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/configure-hcx-network-extension-high-availability", + "name": "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://docs.vmware.com/en/VMware-HCX/4.8/hcx-user-guide/GUID-E1353511-697A-44B0-82A0-852DB55F97D7.html", + "name": "Understanding Network Extension High Availability" } ], "recommendationControl": "HighAvailability", @@ -8124,8 +8367,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", @@ -8145,12 +8388,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Use fault domains", - "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/application-platform#use-fault-domains" + "url": "https://learn.microsoft.com/en-us/azure/well-architected/azure-vmware/application-platform#use-fault-domains", + "name": "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/azure-vmware/configure-storage-policy", + "name": "Configure storage policy" } ], "recommendationControl": "HighAvailability", @@ -8170,12 +8413,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "APRL guidance for ExpressRoute circuits", - "url": "https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/expressroute-circuits" + "url": "https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/expressroute-circuits", + "name": "APRL guidance for 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://learn.microsoft.com/azure/expressroute/expressroute-howto-circuit-portal-resource-manager?pivots=expressroute-preview#create-a-new-expressroute-circuit-preview", + "name": "Create a new ExpressRoute circuit" } ], "recommendationControl": "HighAvailability", @@ -8195,8 +8438,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", @@ -8216,12 +8459,12 @@ "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" + "url": "https://learn.microsoft.com/en-us/azure/azure-vmware/move-azure-vmware-solution-across-regions", + "name": "Private Clouds in two 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/cloud-adoption-framework/scenarios/azure-vmware/eslz-dual-region-network-topology", + "name": "Dual Region Network Topology" } ], "recommendationControl": "DisasterRecovery", @@ -8241,24 +8484,24 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Quality Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS Quality Insights" }, { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" }, { - "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" }, { - "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" + "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": "Move Regional SAP HA to Zonal" }, { - "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", @@ -8278,20 +8521,20 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" }, { - "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" + "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" }, { - "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" + "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": "Considerations for Flexible VM Scale Sets for SAP" }, { - "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://techcommunity.microsoft.com/t5/running-sap-applications-on-the/how-to-easily-migrate-an-existing-sap-system-vms-to-flexible/ba-p/3833548", + "name": "Migrate existing SAP system VMs to VMSS Flex" } ], "recommendationControl": "HighAvailability", @@ -8311,24 +8554,24 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS Insights" }, { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" }, { - "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" }, { - "name": "VM SLA", - "url": "https://www.azure.cn/en-us/support/sla/virtual-machines/" + "url": "https://www.azure.cn/en-us/support/sla/virtual-machines/", + "name": "VM SLA" }, { - "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", @@ -8348,12 +8591,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS 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", @@ -8373,8 +8616,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" } ], "recommendationControl": "HighAvailability", @@ -8394,8 +8637,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", @@ -8415,8 +8658,8 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" } ], "recommendationControl": "HighAvailability", @@ -8436,8 +8679,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", @@ -8457,8 +8700,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", @@ -8478,12 +8721,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS Insights" }, { - "name": "OpenSource Inventory Checks", - "url": "https://aka.ms/ACESInventoryCheckSAP" + "url": "https://aka.ms/ACESInventoryCheckSAP", + "name": "OpenSource Inventory Checks" } ], "recommendationControl": "DisasterRecovery", @@ -8503,8 +8746,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", @@ -8524,8 +8767,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", @@ -8545,8 +8788,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", @@ -8566,8 +8809,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", @@ -8587,12 +8830,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "VM Scheduled Events", - "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events" + "url": "https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events", + "name": "VM 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/sap/workloads/high-availability-guide-suse-pacemaker?tabs=msi#configure-pacemaker-for-azure-scheduled-events", + "name": "Configure Pacemaker for Azure Scheduled Events" } ], "recommendationControl": "MonitoringAndAlerting", @@ -8612,16 +8855,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS 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" }, { - "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", @@ -8641,16 +8884,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS 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" }, { - "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", @@ -8670,16 +8913,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS 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" }, { - "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", @@ -8699,16 +8942,16 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "SAP ACSS Insights", - "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights" + "url": "https://learn.microsoft.com/en-us/azure/sap/center-sap-solutions/get-quality-checks-insights", + "name": "SAP ACSS 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" }, { - "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", @@ -8728,8 +8971,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", @@ -8749,28 +8992,28 @@ "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" + "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" }, { - "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" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/high-availability-guide-suse-netapp-files?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" }, { - "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" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-hana-high-availability-netapp-files-suse?tabs=lb-portal", + "name": "High availability of SAP HANA scale-up with Azure NetApp Files on SUSE Enterprise Linux" }, { - "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" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/high-availability-guide-rhel-netapp-files?tabs=lb-portal%2Censa1", + "name": "Azure Virtual Machines HA for SAP NetWeaver on RHEL with Azure NetApp Files for SAP applications" }, { - "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" + "url": "https://learn.microsoft.com/en-us/azure/sap/workloads/sap-hana-high-availability-netapp-files-red-hat?tabs=lb-portal", + "name": "High availability of SAP HANA scale-up with Azure NetApp Files on RHEL" }, { - "name": "OpenSource Quality Checks", - "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/blob/main/QualityCheck/" + "url": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/blob/main/QualityCheck/", + "name": "OpenSource Quality Checks" } ], "recommendationControl": "Scalability", @@ -8790,8 +9033,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", @@ -8811,8 +9054,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", @@ -8832,8 +9075,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", @@ -8853,8 +9096,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", @@ -8874,8 +9117,8 @@ "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", @@ -8895,8 +9138,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", @@ -8916,8 +9159,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", @@ -8937,8 +9180,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", @@ -8958,12 +9201,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Capacity Planning", - "url": "https://learn.microsoft.com/azure/well-architected/azure-virtual-desktop/business-continuity#capacity-planning" + "url": "https://learn.microsoft.com/azure/well-architected/azure-virtual-desktop/business-continuity#capacity-planning", + "name": "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/architecture/example-scenario/wvd/windows-virtual-desktop#azure-virtual-desktop-limitations", + "name": "Learn More" } ], "recommendationControl": "DisasterRecovery", @@ -8983,8 +9226,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", @@ -9004,12 +9247,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Multi-region BCDR", - "url": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/azure-virtual-desktop-multi-region-bcdr" + "url": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/azure-virtual-desktop-multi-region-bcdr", + "name": "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/well-architected/azure-virtual-desktop/business-continuity#active-active-scenarios", + "name": "Learn More" } ], "recommendationControl": "DisasterRecovery", @@ -9029,8 +9272,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", @@ -9050,8 +9293,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", @@ -9071,12 +9314,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "FSLogix", - "url": "https://learn.microsoft.com/fslogix/overview-what-is-fslogix" + "url": "https://learn.microsoft.com/fslogix/overview-what-is-fslogix", + "name": "FSLogix" }, { - "name": "Backup Storage Account", - "url": "https://learn.microsoft.com/azure/backup/blob-backup-configure-manage?tabs=operational-backup" + "url": "https://learn.microsoft.com/azure/backup/blob-backup-configure-manage?tabs=operational-backup", + "name": "Backup Storage Account" } ], "recommendationControl": "HighAvailability", @@ -9096,8 +9339,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", @@ -9117,12 +9360,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-desktop/troubleshoot-rdp-shortpath" + "url": "https://learn.microsoft.com/azure/virtual-desktop/troubleshoot-rdp-shortpath", + "name": "Learn More" }, { - "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/check-access-validate-required-fqdn-endpoint", + "name": "Learn More" } ], "recommendationControl": "Governance", @@ -9142,8 +9385,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", @@ -9163,8 +9406,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", @@ -9184,8 +9427,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", @@ -9205,12 +9448,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview" + "url": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview", + "name": "Learn More" }, { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview" + "url": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview", + "name": "Learn More" } ], "recommendationControl": "OtherBestPractices", @@ -9230,8 +9473,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", @@ -9251,8 +9494,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", @@ -9272,8 +9515,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", @@ -9293,12 +9536,12 @@ "recommendationMetadataState": "Active", "learnMoreLink": [ { - "name": "Learn More", - "url": "https://learn.microsoft.com/fslogix/troubleshooting-events-logs-diagnostics" + "url": "https://learn.microsoft.com/fslogix/troubleshooting-events-logs-diagnostics", + "name": "Learn More" }, { - "name": "Learn More", - "url": "https://learn.microsoft.com/azure/storage/files/storage-files-monitoring" + "url": "https://learn.microsoft.com/azure/storage/files/storage-files-monitoring", + "name": "Learn More" } ], "recommendationControl": "MonitoringAndAlerting", @@ -9318,8 +9561,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", @@ -9339,8 +9582,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", @@ -9360,8 +9603,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", @@ -9381,8 +9624,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", @@ -9402,8 +9645,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", @@ -9423,8 +9666,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", @@ -9444,8 +9687,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", @@ -9465,8 +9708,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", @@ -9486,8 +9729,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", @@ -9507,8 +9750,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", @@ -9528,8 +9771,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", @@ -9549,8 +9792,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", @@ -9570,8 +9813,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", @@ -9591,8 +9834,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", @@ -9612,8 +9855,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", @@ -9633,8 +9876,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", @@ -9654,8 +9897,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", @@ -9675,8 +9918,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", @@ -9696,8 +9939,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", @@ -9717,8 +9960,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", @@ -9738,8 +9981,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", From 93584ea61da812309e7a0567e8db965d5853dd6f Mon Sep 17 00:00:00 2001 From: Soniya Mittal <71252948+sonmitt@users.noreply.github.com> Date: Thu, 19 Dec 2024 03:27:00 +0530 Subject: [PATCH 10/10] docs: Added new APRL recommendations for Azure Machine learning registry (#587) Co-authored-by: Soniya Mittal Co-authored-by: Zach Trocinski <30884663+oZakari@users.noreply.github.com> Co-authored-by: Eric Henry <44706965+ejhenry@users.noreply.github.com> --- .../MachineLearningServices/registries/_index.md | 7 +++++++ .../kql/611c7c96-ac55-4ddf-909e-9eb70fd048b7.kql | 1 + .../registries/recommendations.yaml | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 azure-resources/MachineLearningServices/registries/_index.md create mode 100644 azure-resources/MachineLearningServices/registries/kql/611c7c96-ac55-4ddf-909e-9eb70fd048b7.kql create mode 100644 azure-resources/MachineLearningServices/registries/recommendations.yaml diff --git a/azure-resources/MachineLearningServices/registries/_index.md b/azure-resources/MachineLearningServices/registries/_index.md new file mode 100644 index 000000000..9fe2c9601 --- /dev/null +++ b/azure-resources/MachineLearningServices/registries/_index.md @@ -0,0 +1,7 @@ +--- +title: registries +geekdocCollapseSection: true +geekdocHidden: false +--- + +{{< azure-resources-recommendationlist name="azure-resources-recommendationlist" >}} diff --git a/azure-resources/MachineLearningServices/registries/kql/611c7c96-ac55-4ddf-909e-9eb70fd048b7.kql b/azure-resources/MachineLearningServices/registries/kql/611c7c96-ac55-4ddf-909e-9eb70fd048b7.kql new file mode 100644 index 000000000..fa5cad258 --- /dev/null +++ b/azure-resources/MachineLearningServices/registries/kql/611c7c96-ac55-4ddf-909e-9eb70fd048b7.kql @@ -0,0 +1 @@ +// cannot-be-validated-with-arg diff --git a/azure-resources/MachineLearningServices/registries/recommendations.yaml b/azure-resources/MachineLearningServices/registries/recommendations.yaml new file mode 100644 index 000000000..ff4f537f8 --- /dev/null +++ b/azure-resources/MachineLearningServices/registries/recommendations.yaml @@ -0,0 +1,16 @@ +- description: Create the Azure machine learning registry in multiple regions + aprlGuid: 611c7c96-ac55-4ddf-909e-9eb70fd048b7 + recommendationTypeId: null + recommendationControl: DisasterRecovery + recommendationImpact: High + recommendationResourceType: Microsoft.MachineLearningServices/registries + recommendationMetadataState: Active + longDescription: | + Azure Machine Learning registries enables to create and use assets (models, env, components, and datasets) in different workspaces. Registries support multi-region replication for low latency access to assets, allowing to use them in workspaces located in different Azure regions. + potentialBenefits: Improves performance and reliability + pgVerified: false + automationAvailable: false + tags: null + 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"