Download as pdf or txt
Download as pdf or txt
You are on page 1of 71

Contents

Azure Advisor Documentation


Overview
What is Azure Advisor?
Quickstarts
Configure alerts for new recommendations
Azure portal
ARM template
Tutorials
Get started with Advisor
How-to guides
Reliability
Security
Performance efficiency
Cost optimization
Operational excellence
Configure recommendations
Permissions and blocked actions
Configure Alerts for recommendations
Configure recommendations summary
Bulk remediation for recommendations
Advisor data in Azure Resource Graph
Consume Advisor score
Reference
Security Center
SQL Database Advisor
App Service
REST API
Azure CLI
PowerShell
Resources
Azure Roadmap
Pricing
Pricing calculator
Service updates
Regional availability
Videos
Stack Overflow
Code samples
Introduction to Azure Advisor
9/22/2020 • 3 minutes to read • Edit Online

Learn about the key capabilities of Azure Advisor and get answers to frequently asked questions.

What is Advisor?
Advisor is a personalized cloud consultant that helps you follow best practices to optimize your Azure
deployments. It analyzes your resource configuration and usage telemetry and then recommends solutions that
can help you improve the cost effectiveness, performance, Reliability (formerly called High availability), and
security of your Azure resources.
With Advisor, you can:
Get proactive, actionable, and personalized best practices recommendations.
Improve the performance, security, and reliability of your resources, as you identify opportunities to reduce
your overall Azure spend.
Get recommendations with proposed actions inline.
You can access Advisor through the Azure portal. Sign in to the portal, locate Advisor in the navigation menu, or
search for it in the All ser vices menu.
The Advisor dashboard displays personalized recommendations for all your subscriptions. You can apply filters to
display recommendations for specific subscriptions and resource types. The recommendations are divided into
five categories:
Reliability (formerly called High Availability) : To ensure and improve the continuity of your business-
critical applications. For more information, see Advisor Reliability recommendations.
Security : To detect threats and vulnerabilities that might lead to security breaches. For more information,
see Advisor Security recommendations.
Performance : To improve the speed of your applications. For more information, see Advisor Performance
recommendations.
Cost : To optimize and reduce your overall Azure spending. For more information, see Advisor Cost
recommendations.
Operational Excellence : To help you achieve process and workflow efficiency, resource manageability
and deployment best practices. . For more information, see Advisor Operational Excellence
recommendations.
You can click a category to display the list of recommendations within that category, and select a recommendation
to learn more about it. You can also learn about actions that you can perform to take advantage of an opportunity
or resolve an issue.

Select the recommended action for a recommendation to implement the recommendation. A simple interface will
open that enables you to implement the recommendation or refer you to documentation that assists you with
implementation. Once you implement a recommendation, it can take up to a day for Advisor to recognize that.
If you do not intend to take immediate action on a recommendation, you can postpone it for a specified time
period or dismiss it. If you do not want to receive recommendations for a specific subscription or resource group,
you can configure Advisor to only generate recommendations for specified subscriptions and resource groups.

Frequently asked questions


How do I access Advisor?
You can access Advisor through the Azure portal. Sign in to the portal, locate Advisor in the navigation menu, or
search for it in the All ser vices menu.
You can also view Advisor recommendations through the virtual machine resource interface. Choose a virtual
machine, and then scroll to Advisor recommendations in the menu.
What permissions do I need to access Advisor?
You can access Advisor recommendations as Owner, Contributor, or Reader of a subscription, Resource Group or
Resource.
What resources does Advisor provide recommendations for?
Advisor provides recommendations for Application Gateway, App Services, availability sets, Azure Cache, Azure
Data Factory, Azure Database for MySQL, Azure Database for PostgreSQL, Azure Database for MariaDB, Azure
ExpressRoute, Azure Cosmos DB, Azure public IP addresses, Azure Synapse Analytics, SQL servers, storage
accounts, Traffic Manager profiles, and virtual machines.
Azure Advisor also includes your recommendations from Azure Security Center which may include
recommendations for additional resource types.
Can I postpone or dismiss a recommendation?
To postpone or dismiss a recommendation, click the Postpone link. You can specify a postpone period or select
Never to dismiss the recommendation.

Next steps
To learn more about Advisor recommendations, see:
Get started with Advisor
Advisor Reliability recommendations
Advisor Security recommendations
Advisor Performance recommendations
Advisor Cost recommendations
Create Azure Advisor alerts on new recommendations
using the Azure portal
9/22/2020 • 3 minutes to read • Edit Online

This article shows you how to set up an alert for new recommendations from Azure Advisor using the Azure portal.
Whenever Azure Advisor detects a new recommendation for one of your resources, an event is stored in Azure
Activity log. You can set up alerts for these events from Azure Advisor using a recommendation-specific alerts
creation experience. You can select a subscription and optionally a resource group to specify the resources that you
want to receive alerts on.
You can also determine the types of recommendations by using these properties:
Category
Impact level
Recommendation type
You can also configure the action that will take place when an alert is triggered by:
Selecting an existing action group
Creating a new action group
To learn more about action groups, see Create and manage action groups.

NOTE
Advisor alerts are currently only available for High Availability, Performance, and Cost recommendations. Security
recommendations are not supported.

Create alert rule


1. In the por tal , select Azure Advisor .
2. In the Monitoring section of the left menu, select Aler ts .

3. Select New Advisor Aler t .

4. In the Scope section, select the subscription and optionally the resource group that you want to be alerted
on.
5. In the Condition section, select the method you want to use for configuring your alert. If you want to alert
for all recommendations for a certain category and/or impact level, select Categor y and impact level . If
you want to alert for all recommendations of a certain type, select Recommendation type .

6. Depending on the Configure by option that you select, you will be able to specify the criteria. If you want all
recommendations, just leave the remaining fields blank.

7. In the action groups section, select Add existing to use an action group you already created or select
Create new to set up a new action group.

8. In the Alert details section, give your alert a name and short description. If you want your alert to be enabled,
leave Enable rule upon creation selection set to Yes . Then select the resource group to save your alert to.
This will not impact the targeting scope of the recommendation.
Configure recommendation alerts to use a webhook
This section shows you how to configure Azure Advisor alerts to send recommendation data through webhooks to
your existing systems.
You can set up alerts to be notified when you have a new Advisor recommendation on one of your resources. These
alerts can notify you through email or text message, but they can also be used to integrate with your existing
systems through a webhook.
Using the Advisor recommendation alert payload
If you want to integrate Advisor alerts into your own systems using a webhook, you will need to parse the JSON
payload that is sent from the notification.
When you set up your action group for this alert, you select if you would like to use the common alert schema. If
you select the common alert schema, your payload will look like:
{
"schemaId":"azureMonitorCommonAlertSchema",
"data":{
"essentials":{
"alertId":"/subscriptions/<subid>/providers/Microsoft.AlertsManagement/alerts/<alerted>",
"alertRule":"Webhhook-test",
"severity":"Sev4",
"signalType":"Activity Log",
"monitorCondition":"Fired",
"monitoringService":"Activity Log - Recommendation",
"alertTargetIDs":[
"/subscriptions/<subid>/resourcegroups/<resource group
name>/providers/microsoft.dbformariadb/servers/<resource name>"
],
"originAlertId":"001d8b40-5d41-4310-afd7-d65c9d4428ed",
"firedDateTime":"2019-07-17T23:00:57.3858656Z",
"description":"A new recommendation is available.",
"essentialsVersion":"1.0",
"alertContextVersion":"1.0"
},
"alertContext":{
"channels":"Operation",
"claims":"
{\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\":\"Microsoft.Advisor\"}",
"caller":"Microsoft.Advisor",
"correlationId":"8554b847-2a72-48ef-9776-600aca3c3aab",
"eventSource":"Recommendation",
"eventTimestamp":"2019-07-17T22:28:54.1566942+00:00",
"httpRequest":"{\"clientIpAddress\":\"0.0.0.0\"}",
"eventDataId":"001d8b40-5d41-4310-afd7-d65c9d4428ed",
"level":"Informational",
"operationName":"Microsoft.Advisor/recommendations/available/action",
"properties":{
"recommendationSchemaVersion":"1.0",
"recommendationCategory":"Performance",
"recommendationImpact":"Medium",
"recommendationName":"Increase the MariaDB server vCores",

"recommendationResourceLink":"https://portal.azure.com/#blade/Microsoft_Azure_Expert/RecommendationListBlade/so
urce/ActivityLog/recommendationTypeId/a5f888e3-8cf4-4491-b2ba-b120e14eb7ce/resourceId/%2Fsubscriptions%
<subscription id>%2FresourceGroups%2<resource group
name>%2Fproviders%2FMicrosoft.DBforMariaDB%2Fservers%2F<resource name>",
"recommendationType":"a5f888e3-8cf4-4491-b2ba-b120e14eb7ce"
},
"status":"Active",
"subStatus":"",
"submissionTimestamp":"2019-07-17T22:28:54.1566942+00:00"
}
}
}

If you do not use the common schema, your payload looks like the following:
{
"schemaId":"Microsoft.Insights/activityLogs",
"data":{
"status":"Activated",
"context":{
"activityLog":{
"channels":"Operation",
"claims":"
{\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\":\"Microsoft.Advisor\"}",
"caller":"Microsoft.Advisor",
"correlationId":"3ea7320f-c002-4062-adb8-96d3bd92a5f4",
"description":"A new recommendation is available.",
"eventSource":"Recommendation",
"eventTimestamp":"2019-07-17T20:36:39.3966926+00:00",
"httpRequest":"{\"clientIpAddress\":\"0.0.0.0\"}",
"eventDataId":"a12b8e59-0b1d-4003-bfdc-3d8152922e59",
"level":"Informational",
"operationName":"Microsoft.Advisor/recommendations/available/action",
"properties":{
"recommendationSchemaVersion":"1.0",
"recommendationCategory":"Performance",
"recommendationImpact":"Medium",
"recommendationName":"Increase the MariaDB server vCores",

"recommendationResourceLink":"https://portal.azure.com/#blade/Microsoft_Azure_Expert/RecommendationListBlade/so
urce/ActivityLog/recommendationTypeId/a5f888e3-8cf4-4491-b2ba-
b120e14eb7ce/resourceId/%2Fsubscriptions%2F<subscription id>%2FresourceGroups%2F<resource group
name>%2Fproviders%2FMicrosoft.DBforMariaDB%2Fservers%2F<resource name>",
"recommendationType":"a5f888e3-8cf4-4491-b2ba-b120e14eb7ce"
},
"resourceId":"/subscriptions/<subscription id>/resourcegroups/<resource group
name>/providers/microsoft.dbformariadb/servers/<resource name>",
"resourceGroupName":"<resource group name>",
"resourceProviderName":"MICROSOFT.DBFORMARIADB",
"status":"Active",
"subStatus":"",
"subscriptionId":"<subscription id>",
"submissionTimestamp":"2019-07-17T20:36:39.3966926+00:00",
"resourceType":"MICROSOFT.DBFORMARIADB/SERVERS"
}
},
"properties":{

}
}
}

In either schema, you can identify Advisor recommendation events by looking for eventSource is Recommendation
and operationName is Microsoft.Advisor/recommendations/available/action .
Some of the other important fields that you may want to use are:
alertTargetIDs (in the common schema) or resourceId (legacy schema)
recommendationType
recommendationName
recommendationCategory
recommendationImpact
recommendationResourceLink

Manage your alerts


From Azure Advisor, you can edit, delete, or disable and enable your recommendations alerts.
1. In the por tal , select Azure Advisor .

2. In the Monitoring section of the left menu, select Aler ts .

3. To edit an alert, click on the Alert name to open the alert and edit the fields you want to edit.
4. To delete, enable, or disable an alert, click on the ellipse at the end of the row and then select the action you
would like to take.

Next steps
Get an overview of activity log alerts, and learn how to receive alerts.
Learn more about action groups.
Quickstart: Create Azure Advisor alerts on new
recommendations using an ARM template
9/22/2020 • 3 minutes to read • Edit Online

This article shows you how to set up an alert for new recommendations from Azure Advisor using an Azure
Resource Manager template (ARM template).
An ARM template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for
your project. The template uses declarative syntax, which lets you state what you intend to deploy without having to
write the sequence of programming commands to create it.
Whenever Azure Advisor detects a new recommendation for one of your resources, an event is stored in Azure
Activity log. You can set up alerts for these events from Azure Advisor using a recommendation-specific alerts
creation experience. You can select a subscription and optionally a resource group to specify the resources that you
want to receive alerts on.
You can also determine the types of recommendations by using these properties:
Category
Impact level
Recommendation type
You can also configure the action that will take place when an alert is triggered by:
Selecting an existing action group
Creating a new action group
To learn more about action groups, see Create and manage action groups.

NOTE
Advisor alerts are currently only available for High Availability, Performance, and Cost recommendations. Security
recommendations are not supported.

Prerequisites
If you don't have an Azure subscription, create a free account before you begin.
To run the commands from your local computer, install Azure CLI or the Azure PowerShell modules. For more
information, see Install the Azure CLI and Install Azure PowerShell.

Review the template


The following template creates an action group with an email target and enables all service health notifications for
the target subscription. Save this template as CreateAdvisorAlert.json.

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"actionGroups_name": {
"defaultValue": "advisorAlert",
"type": "string"
"type": "string"
},
"activityLogAlerts_name": {
"defaultValue": "AdvisorAlertsTest",
"type": "string"
},
"emailAddress": {
"defaultValue": "<email address>",
"type": "string"
}
},
"variables": {
"alertScope": "[concat('/','subscriptions','/',subscription().subscriptionId)]"
},
"resources": [
{
"comments": "Action Group",
"type": "microsoft.insights/actionGroups",
"name": "[parameters('actionGroups_name')]",
"apiVersion": "2019-06-01",
"location": "Global",
"tags": {},
"scale": null,
"properties": {
"groupShortName": "[parameters('actionGroups_name')]",
"enabled": true,
"emailReceivers": [
{
"name": "[parameters('actionGroups_name')]",
"emailAddress": "[parameters('emailAddress')]"
}
],
"smsReceivers": [],
"webhookReceivers": []
},
"dependsOn": []
},
{
"comments": "Azure Advisor Activity Log Alert",
"type": "microsoft.insights/activityLogAlerts",
"name": "[parameters('activityLogAlerts_name')]",
"apiVersion": "2017-04-01",
"location": "Global",
"tags": {},
"scale": null,
"properties": {
"scopes": [
"[variables('alertScope')]"
],
"condition": {
"allOf": [
{
"field": "category",
"equals": "Recommendation"
},
{
"field": "properties.recommendationCategory",
"equals": "Cost"
},
{
"field": "properties.recommendationImpact",
"equals": "Medium"
},
{
"field": "operationName",
"equals": "Microsoft.Advisor/recommendations/available/action"
}
]
},
"actions": {
"actions": {
"actionGroups": [
{
"actionGroupId": "[resourceId('microsoft.insights/actionGroups',
parameters('actionGroups_name'))]",
"webhookProperties": {}
}
]
},
"enabled": true,
"description": ""
},
"dependsOn": [
"[resourceId('microsoft.insights/actionGroups', parameters('actionGroups_name'))]"
]
}
]
}

The template defines two resources:


Microsoft.Insights/actionGroups
Microsoft.Insights/activityLogAlerts

Deploy the template


Deploy the template using any standard method for deploying an ARM template such as the following examples
using CLI and PowerShell. Replace the sample values for Resource Group , and emailAddress with appropriate
values for your environment. The workspace name must be unique among all Azure subscriptions.
CLI
PowerShell

az login
az deployment group create --name CreateAdvisorAlert --resource-group my-resource-group --template-file
CreateAdvisorAlert.json --parameters emailAddress='user@contoso.com'

Validate the deployment


Verify that the workspace has been created using one of the following commands. Replace the sample values for
Resource Group with the value you used above.
CLI
PowerShell

az monitor activity-log alert show --resource-group my-resource-group --name AdvisorAlertsTest

Clean up resources
If you plan to continue working with subsequent quickstarts and tutorials, you might want to leave these resources
in place. When no longer needed, delete the resource group, which deletes the alert rule and the related resources.
To delete the resource group by using Azure CLI or Azure PowerShell
CLI
PowerShell
az group delete --name my-resource-group

Next steps
Get an overview of activity log alerts, and learn how to receive alerts.
Learn more about action groups.
Get started with Azure Advisor
9/22/2020 • 4 minutes to read • Edit Online

Learn how to access Advisor through the Azure portal, get recommendations, and implement recommendations.

NOTE
Azure Advisor automatically runs in the background to find newly created resources. It can take up to 24 hours to provide
recommendations on those resources.

Get recommendations
1. Sign in to the Azure portal.
2. In the left pane, click Advisor . If you do not see Advisor in the left pane, click All ser vices . In the service
menu pane, under Monitoring and Management , click Advisor . The Advisor dashboard is displayed.
3. The Advisor dashboard will display a summary of your recommendations for all selected subscriptions.
You can choose the subscriptions that you want recommendations to be displayed for using the
subscription filter dropdown.
4. To get recommendations for a specific category, click one of the tabs: Reliability , Security , Performance ,
or Cost .

Get recommendation details and implement a solution


You can select a recommendation in Advisor to view additional details – such as the recommendation actions and
impacted resources – and to implement the solution to the recommendation.
1. Sign in to the Azure portal, and then open Advisor.
2. Select a recommendation category to display the list of recommendations within that category, or select
the All tab to view all your recommendations.
3. Click a recommendation that you want to review in detail.
4. Review the information about the recommendation and the resources that the recommendation applies to.
5. Click on the Recommended Action to implement the recommendation.

Filter recommendations
You can filter recommendations to drill down to what is most important to you. You can filter by subscription,
resource type, or recommendation status.
1. Sign in to the Azure portal, and then open Advisor.
2. Use the dropdowns on the Advisor dashboard to filter by subscription, resource type, or recommendation
status.

Postpone or dismiss recommendations


1. Sign in to the Azure portal, and then open Advisor.
2. Navigate to the recommendation you want to postpone or dismiss.
3. Click the recommendation.
4. Click Postpone .
5. Specify a postpone time period, or select Never to dismiss the recommendation.

Exclude subscriptions or resource groups


You may have resource groups or subscriptions for which you do not want to receive Advisor recommendations –
such as ‘test’ resources. You can configure Advisor to only generate recommendations for specific subscriptions
and resource groups.

NOTE
To include or exclude a subscription or resource group from Advisor, you must be a subscription Owner. If you do not have
the required permissions for a subscription or resource group, the option to include or exclude it is disabled in the user
interface.

1. Sign in to the Azure portal, and then open Advisor.


2. Click Configure in the action bar.
3. Uncheck any subscriptions or resource groups you do not want to receive Advisor recommendations for.

4. Click the Apply button.

Configure low usage VM recommendation


This procedure configures the average CPU utilization rule for the low usage virtual machine recommendation.
Advisor monitors your virtual machine usage for 7 days and then identifies low-utilization virtual machines.
Virtual machines are considered low-utilization if their CPU utilization is 5% or less and their network utilization is
less than 2% or if the current workload can be accommodated by a smaller virtual machine size.
If you would like to be more aggressive at identifying low usage virtual machines, you can adjust the average
CPU utilization rule on a per subscription basis. The CPU utilization rule can be set to 5%, 10%, 15%, or 20%.

NOTE
To adjust the average CPU utilization rule for identifying low usage virtual machines, you must be a subscription Owner. If
you do not have the required permissions for a subscription or resource group, the option to include or exclude it will be
disabled in the user interface.

1. Sign in to the Azure portal, and then open Advisor.


2. Click Configure in the action bar.
3. Click the Rules tab.
4. Select the subscriptions you’d like to adjust the average CPU utilization rule for, and then click Edit .
5. Select the desired average CPU utilization value, and click Apply .
6. Click Refresh recommendations to update your existing recommendations to use the new average CPU
utilization rule.

Download recommendations
Advisor enables you to download a summary of your recommendations. You can download your
recommendations as a PDF file or a CSV file. Downloading your recommendations enables you to easily share
with your colleagues or perform your own analysis on top of the recommendation data.
1. Sign in to the Azure portal, and then open Advisor.
2. Click Download as CSV or Download as PDF on the action bar.
The download option respects any filters you have applied to the Advisor dashboard. If you select the download
option while viewing a specific recommendation category or recommendation, the downloaded summary only
includes information for that category or recommendation.

Next steps
To learn more about Advisor, see:
Introduction to Azure Advisor
Advisor Reliability recommendations
Advisor Security recommendations
Advisor Performance recommendations
Advisor Cost recommendations
Advisor Operational Excellence recommendations
Improve the reliability of your application by using
Azure Advisor
9/22/2020 • 8 minutes to read • Edit Online

Azure Advisor helps you ensure and improve the continuity of your business-critical applications. You can get
reliability recommendations from Advisor on the Reliability tab of the Advisor dashboard.

Check the version of your Check Point network virtual appliance image
Advisor can identify whether your virtual machine is running a version of the Check Point image that has been
known to lose network connectivity during platform servicing operations. The Advisor recommendation will help
you upgrade to a newer version of the image that addresses this problem. This check will ensure business
continuity through better network connectivity.

Ensure application gateway fault tolerance


This recommendation ensures the business continuity of mission-critical applications that are powered by
application gateways. Advisor identifies application gateway instances that aren't configured for fault tolerance. It
then suggests remediation actions that you can take. Advisor identifies medium or large single-instance
application gateways and recommends adding at least one more instance. It also identifies single-instance and
multiple-instance small application gateways and recommends migrating them to medium or large SKUs. Advisor
recommends these actions to ensure your application gateway instances are configured to satisfy the current SLA
requirements for these resources.

Protect your virtual machine data from accidental deletion


Setting up virtual machine backup ensures the availability of your business-critical data and offers protection
against accidental deletion or corruption. Advisor identifies virtual machines where backup isn't enabled and
recommends enabling backup.

Ensure you have access to Azure experts when you need it


When you're running a business-critical workload, it's important to have access to technical support when you
need it. Advisor identifies potential business-critical subscriptions that don't have technical support included in
their support plans. It recommends upgrading to an option that includes technical support.

Create Azure Service Health alerts to be notified when Azure problems


affect you
We recommend setting up Azure Service Health alerts so you're notified when Azure service problems affect you.
Azure Service Health is a free service that provides personalized guidance and support when you're affected by an
Azure service problem. Advisor identifies subscriptions that don't have alerts configured and recommends
configuring them.

Configure Traffic Manager endpoints for resiliency


Azure Traffic Manager profiles with more than one endpoint experience higher availability if any given endpoint
fails. Placing endpoints in different regions further improves service reliability. Advisor identifies Traffic Manger
profiles where there's only one endpoint and recommends adding at least one more endpoint in another region.
If all endpoints in a Traffic Manager profile that's configured for proximity routing are in the same region, users
from other regions might experience connection delays. Adding or moving an endpoint to another region will
improve overall performance and provide better availability if all endpoints in one region fail. Advisor identifies
Traffic Manager profiles configured for proximity routing where all the endpoints are in the same region. It
recommends adding or moving an endpoint to another Azure region.
If a Traffic Manager profile is configured for geographic routing, traffic is routed to endpoints based on defined
regions. If a region fails, there's no predefined failover. If you have an endpoint where the Regional Grouping is
configured to All (World) , you can avoid dropped traffic and improve service availability. Advisor identifies Traffic
Manager profiles configured for geographic routing where there's no endpoint configured to have the Regional
Grouping as All (World) . It recommends changing the configuration to make an endpoint All (World) .

Use soft delete on your Azure storage account to save and recover
data after accidental overwrite or deletion
Enable soft delete on your storage account so that deleted blobs transition to a soft deleted state instead of being
permanently deleted. When data is overwritten, a soft deleted snapshot is generated to save the state of the
overwritten data. Using soft delete allows you to recover from accidental deletions or overwrites. Advisor
identifies Azure storage accounts that don't have soft delete enabled and suggests that you enable it.

Configure your VPN gateway to active-active for connection resiliency


In active-active configuration, both instances of a VPN gateway establish S2S VPN tunnels to your on-premises
VPN device. When a planned maintenance event or unplanned event happens to one gateway instance, traffic is
automatically switched to the other active IPsec tunnel. Azure Advisor identifies VPN gateways that aren't
configured as active-active and suggests that you configure them for high availability.

Use production VPN gateways to run your production workloads


Azure Advisor checks for any VPN gateways that use a Basic SKU and recommends that you use a production SKU
instead. The Basic SKU is designed for development and testing. Production SKUs offer:
More tunnels.
BGP support.
Active-active configuration options.
Custom Ipsec/IKE policy.
Higher stability and availability.

Ensure virtual machine fault tolerance (temporarily disabled)


To provide redundancy for your application, we recommend that you group two or more virtual machines in an
availability set. Advisor identifies virtual machines that aren't part of an availability set and recommends moving
them into one. This configuration ensures that during either planned or unplanned maintenance, at least one
virtual machine is available and meets the Azure virtual machine SLA. You can choose to create an availability set
for the virtual machine or to add the virtual machine to an existing availability set.

NOTE
If you choose to create an availability set, you need to add at least one more virtual machine into it. We recommend that
you group two or more virtual machines in an availability set to ensure that at least one machine is available during an
outage.
Ensure availability set fault tolerance (temporarily disabled)
To provide redundancy for your application, we recommend that you group two or more virtual machines in an
availability set. Advisor identifies availability sets that contain a single virtual machine and recommends adding
one or more virtual machines to it. This configuration ensures that during either planned or unplanned
maintenance, at least one virtual machine is available and meets the Azure virtual machine SLA. You can choose
to create a virtual machine or to add an existing virtual machine to the availability set.

Use managed disks to improve data reliability (temporarily disabled)


Virtual machines that are in an availability set with disks that share either storage accounts or storage scale units
aren't resilient to failures to single storage scale units during outages. Advisor identifies these availability sets and
recommends migrating to Azure managed disks. This migration will ensure that the disks of the virtual machines
in the availability set are sufficiently isolated to avoid a single point of failure.

Repair invalid log alert rules


Azure Advisor detects log alert rules that have invalid queries specified in their condition section. Azure Monitor
log alert rules run queries at specified frequency and fire alerts based on the results. Queries can become invalid
over time because of changes in the referenced resources, tables, or commands. Advisor recommends corrections
for alert queries to prevent the rules from being automatically disabled and to ensure monitoring coverage. For
more information, see Troubleshooting alert rules

Configure Consistent indexing mode on your Azure Cosmos DB


collection
Configuring Azure Cosmos DB containers with Lazy indexing mode might affect the freshness of query results.
Advisor detects containers configured this way and recommends switching to Consistent mode. Learn more about
indexing policies in Azure Cosmos DB.

Configure your Azure Cosmos DB containers with a partition key


Azure Advisor identifies Azure Cosmos DB non-partitioned collections that are approaching their provisioned
storage quota. It recommends that you migrate these collections to new collections with a partition key definition
so that they can be automatically scaled out by the service. Learn more about choosing a partition key.

Upgrade your Azure Cosmos DB .NET SDK to the latest version from
NuGet
Azure Advisor identifies Azure Cosmos DB accounts that are using old versions of the .NET SDK. It recommends
that you upgrade to the latest version from NuGet for the latest fixes, performance improvements, and feature
capabilities. Learn more about Azure Cosmos DB .NET SDK.

Upgrade your Azure Cosmos DB Java SDK to the latest version from
Maven
Azure Advisor identifies Azure Cosmos DB accounts that are using old versions of the Java SDK. It recommends
that you upgrade to the latest version from Maven for the latest fixes, performance improvements, and feature
capabilities. Learn more about Azure Cosmos DB Java SDK.

Upgrade your Azure Cosmos DB Spark connector to the latest version


from Maven
Azure Advisor identifies Azure Cosmos DB accounts that are using old versions of the Azure Cosmos DB Spark
connector. It recommends that you upgrade to the latest version from Maven for the latest fixes, performance
improvements, and feature capabilities. Learn more about Azure Cosmos DB Spark connector.

Consider moving to Kafka 2.1 on HDInsight 4.0


Starting July 1, 2020, you won't be able to create new Kafka clusters by using Kafka 1.1 on Azure HDInsight 4.0.
Existing clusters will run as is without support from Microsoft. Consider moving to Kafka 2.1 on HDInsight 4.0 by
June 30, 2020, to avoid potential system/support interruption.

Consider upgrading older Spark versions in HDInsight Spark clusters


Starting July 1, 2020, you won't be able to create new Spark clusters by using Spark 2.1 or 2.2 on HDInsight 3.6.
You won't be able to create new Spark clusters by using Spark 2.3 on HDInsight 4.0. Existing clusters will run as is
without support from Microsoft.

Enable virtual machine replication


Virtual machines that don't have replication enabled to another region aren't resilient to regional outages.
Replicating virtual machines reduces any adverse business impact during Azure region outages. Advisor detects
VMs on which replication isn't enabled and recommends enabling it. When you enable replication, if there's an
outage, you can quickly bring up your virtual machines in a remote Azure region. Learn more about virtual
machine replication.

How to access high availability recommendations in Advisor


1. Sign in to the Azure portal, and then open Advisor.
2. On the Advisor dashboard, select the High Availability tab.

Next steps
For more information about Advisor recommendations, see:
Introduction to Advisor
Get started with Advisor
Advisor cost recommendations
Advisor performance recommendations
Advisor security recommendations
Advisor operational excellence recommendations
Make resources more secure with Azure Advisor
9/22/2020 • 2 minutes to read • Edit Online

Azure Advisor provides you with a consistent, consolidated view of recommendations for all your Azure
resources. It integrates with Azure Security Center to bring you security recommendations. You can get security
recommendations from the Security tab on the Advisor dashboard.
Security Center helps you prevent, detect, and respond to threats with increased visibility into and control over
the security of your Azure resources. It periodically analyzes the security state of your Azure resources. When
Security Center identifies potential security vulnerabilities, it creates recommendations. The recommendations
guide you through the process of configuring the controls you need.
For more information about security recommendations, see Managing security recommendations in Azure
Security Center.

How to access Security recommendations in Azure Advisor


1. Sign in to the Azure portal, and then open Advisor.
2. On the Advisor dashboard, click the Security tab.

Next steps
To learn more about Advisor recommendations, see:
Introduction to Advisor
Get started with Advisor
Advisor cost recommendations
Advisor performance recommendations
Advisor reliability recommendations
Advisor operational excellence recommendations
Advisor REST API
Improve the performance of Azure applications by
using Azure Advisor
9/22/2020 • 12 minutes to read • Edit Online

The performance recommendations in Azure Advisor can help improve the speed and responsiveness of your
business-critical applications. You can get performance recommendations from Advisor on the Performance tab
of the Advisor dashboard.

Reduce DNS time-to-live on your Traffic Manager profile to fail over to


healthy endpoints faster
You can use time-to-live (TTL) settings on your Azure Traffic Manager profile to specify how quickly to switch
endpoints if a given endpoint stops responding to queries. If you reduce the TTL values, clients will be routed to
functioning endpoints faster.
Azure Advisor identifies Traffic Manager profiles that have a longer TTL configured. It recommends configuring
the TTL to either 20 seconds or 60 seconds, depending on whether the profile is configured for Fast Failover.

Improve database performance by using SQL Database Advisor


(temporarily disabled)
Azure Advisor provides a consistent, consolidated view of recommendations for all your Azure resources. It
integrates with SQL Database Advisor to bring you recommendations for improving the performance of your
databases. SQL Database Advisor assesses the performance of your databases by analyzing your usage history. It
then offers recommendations that are best suited for running the database's typical workload.

NOTE
Before you can get recommendations, your database needs to be in use for about a week, and within that week there
needs to be some consistent activity. SQL Database Advisor can optimize more easily for consistent query patterns than
for random bursts of activity.

For more information, see SQL Database Advisor.

Upgrade your Storage client library to the latest version for better
reliability and performance
The latest version of the Storage client library SDK contains fixes to problems reported by customers and
proactively identified through our QA process. The latest version also carries reliability and performance
optimization together with new features that can improve your overall experience with using Azure Storage.
Advisor provides recommendations and steps needed to upgrade to the latest version of the SDK if you're using a
stale version. The recommendations are for supported languages: C++ and .NET.

Improve App Service performance and reliability


Azure Advisor integrates recommendations for improving your App Service experience and discovering relevant
platform capabilities. Examples of App Service recommendations are:
Detection of instances where memory or CPU resources are exhausted by app runtimes, with mitigation
options.
Detection of instances where co-locating resources like web apps and databases can improve performance
and reduce cost.
For more information, see Best practices for Azure App Service.

Use managed disks to prevent disk I/O throttling


Advisor identifies virtual machines that belong to a storage account that's reaching its scalability target. This
condition makes those VMs susceptible to I/O throttling. Advisor will recommend that they use managed disks to
prevent performance degradation.

Improve the performance and reliability of virtual machine disks by


using Premium Storage
Advisor identifies virtual machines with standard disks that have a high volume of transactions on your storage
account. It recommends upgrading to premium disks.
Azure Premium Storage delivers high-performance, low-latency disk support for virtual machines that run I/O-
intensive workloads. Virtual machine disks that use Premium Storage accounts store data on solid-state drives
(SSDs). For the best performance for your application, we recommend that you migrate any virtual machine disks
that require high IOPS to Premium Storage.

Remove data skew on your Azure Synapse Analytics tables to increase


query performance
Data skew can cause unnecessary data movement or resource bottlenecks when you run your workload. Advisor
detects distribution data skew of greater than 15%. It recommends that you redistribute your data and revisit
your table distribution key selections. To learn more about identifying and removing skew, see troubleshooting
skew.

Create or update outdated table statistics in your Azure Synapse


Analytics tables to increase query performance
Advisor identifies tables that don't have up-to-date table statistics and recommends creating or updating the
statistics. The query optimizer in Azure Synapse Analytics uses up-to-date statistics to estimate the cardinality or
number of rows in query results. These estimates enable the query optimizer to create a query plan to provide
the fastest performance.

Improve MySQL connection management


Advisor analysis can indicate that your application connecting to a MySQL server might not be managing
connections efficiently. This condition could lead to unnecessary resource consumption and overall higher
application latency. To improve connection management, we recommend that you reduce the number of short-
lived connections and eliminate unnecessary idle connections. You can make these improvements by configuring
a server-side connection pooler, like ProxySQL.

Update your current Compute Management SDK version to the most


recent version
Advisor identifies subscriptions which have operations using outdated Compute Management SDK versions. This
might impact the security and performance of your workloads and thus, Advisor recommends you to switch to
the latest version of Compute Management SDK.

Scale up to optimize cache utilization on your Azure Synapse Analytics


tables to increase query performance
Azure Advisor detects whether your Azure Synapse Analytics tables have a high cache-used percentage and a low
hit percentage. This condition indicates high cache eviction, which can affect the performance of your Azure
Synapse Analytics instance. Advisor recommends that you scale up your Azure Synapse Analytics instance to
ensure you allocate enough cache capacity for your workload.

Convert Azure Synapse Analytics tables to replicated tables to


increase query performance
Advisor identifies tables that aren't replicated tables but that would benefit from conversion. It suggests that you
convert these tables. Recommendations are based on:
The size of the replicated table.
The number of columns.
The table distribution type.
The number of partitions on the Azure Synapse Analytics table.
Additional heuristics might be provided in the recommendation for context. To learn more about how this
recommendation is determined, see Azure Synapse Analytics recommendations.

Migrate your storage account to Azure Resource Manager to get the


latest Azure features
Migrate your storage account deployment model to Azure Resource Manager to take advantage of:
Template deployments.
Additional security options.
The ability to upgrade to a GPv2 account so you can use the latest Azure Storage features.
Advisor identifies any stand-alone storage accounts that are using the classic deployment model and
recommends migrating to the Resource Manager deployment model.

NOTE
Classic alerts in Azure Monitor were retired in August 2019. We recommended that you upgrade your classic storage
account to use Resource Manager to retain alerting functionality with the new platform. For more information, see classic
alerts retirement.

Design your storage accounts to prevent reaching the maximum


subscription limit
An Azure region supports a maximum of 250 storage accounts per subscription. After this limit is reached, you
won't be able to create storage accounts in that region/subscription combination. Advisor checks your
subscriptions and provides recommendations for you to design for fewer storage accounts for any
subscription/region that's close to reaching the maximum limit.

Consider increasing the size of your VPN Gateway SKU to address


high P2S use
Each Azure VPN Gateway SKU can support only a specified number of concurrent P2S connections. If your
connection count is close to your gateway limit, additional connection attempts might fail. If you increase the size
of your gateway, you'll be able to support more concurrent P2S users. Advisor provides recommendations and
instructions for increasing the size of your gateway.

Consider increasing the size of your VPN Gateway SKU to address


high CPU
Under high traffic load, your VPN gateway might drop packets because of high CPU. Consider upgrading your
VPN Gateway SKU. Increasing the size of your VPN gateway will ensure that connections aren't dropped because
of high CPU. Advisor provides recommendations to proactively address this problem.

Increase batch size when loading to maximize load throughput, data


compression, and query performance
Advisor detects whether you can increase load performance and throughput by increasing the batch size when
loading into your database. You could consider using the COPY statement. If you can't use the COPY statement,
consider increasing the batch size when you use loading utilities like the SQLBulkCopy API or BCP. A good
general rule is to use a batch size that's between 100 thousand and 1 million rows. Increasing batch size will
increase load throughput, data compression, and query performance.

Co-locate the storage account in the same region to minimize latency


when loading
Advisor detects whether you're loading from a region that's different from your SQL pool. Consider loading from
a storage account that's in the same region as your SQL pool to minimize latency when loading data. This change
will help minimize latency and increase load performance.

Use a supported Kubernetes version


Advisor detects unsupported versions of Kubernetes.

Optimize the performance of your Azure Database for MySQL, Azure


Database for PostgreSQL, and Azure Database for MariaDB servers
Fix the CPU pressure of your Azure Database for MySQL, Azure Database for PostgreSQL, and Azure
Database for MariaDB servers with CPU bottlenecks
High utilization of the CPU over an extended period can cause slow query performance for your workload.
Increasing the CPU size will help to optimize the runtime of the database queries and improve overall
performance. Advisor identifies servers with a high CPU utilization that are likely running CPU-constrained
workloads and recommends scaling your compute.
Reduce memory constraints on your Azure Database for MySQL, Azure Database for PostgreSQL, and Azure
Database for MariaDB servers, or move to a Memory Optimized SKU
A low cache hit ratio can result in slower query performance and increased IOPS. This condition could be caused
by a bad query plan or a memory-intensive workload. Fixing the query plan or increasing the memory of the
Azure Database for PostgreSQL, Azure Database for MySQL, or Azure Database for MariaDB server will help
optimize the execution of the database workload. Azure Advisor identifies servers affected by this high buffer
pool churn. It recommends that you take one of these actions:
Fix the query plan
Move to an SKU that has more memory
Increase storage size to get more IOPS.
Use an Azure Database for MySQL or Azure Database for PostgreSQL read replica to scale out reads for read-
intensive workloads
Advisor uses workload-based heuristics like the ratio of reads to writes on the server over the past seven days to
identify read-intensive workloads. An Azure Database for PostgreSQL or Azure Database for MySQL resource
with a high read/write ratio can result in CPU or memory contentions and lead to slow query performance.
Adding a replica will help to scale out reads to the replica server and prevent CPU or memory constraints on the
primary server. Advisor identifies servers with read-intensive workloads and recommends that you add a read
replica to offload some of the read workloads.
Scale your Azure Database for MySQL, Azure Database for PostgreSQL, or Azure Database for MariaDB
server to a higher SKU to prevent connection constraints
Each new connection to your database server occupies memory. The database server's performance degrades if
connections to your server are failing because of an upper limit in memory. Azure Advisor identifies servers
running with many connection failures. It recommends upgrading your server's connection limits to provide
more memory to your server by taking one of these actions:
Scale up compute.
Use Memory Optimized SKUs, which have more compute per core.

Scale your cache to a different size or SKU to improve cache and


application performance
Cache instances perform best when they're not running under high memory pressure, high server load, or high
network bandwidth. These conditions can cause them to become unresponsive, experience data loss, or become
unavailable. Advisor identifies cache instances in these conditions. It recommends that you take one of these
actions:
Apply best practices to reduce the memory pressure, server load, or network bandwidth.
Scale to a different size or SKU that has more capacity.

Add regions with traffic to your Azure Cosmos DB account


Advisor detects Azure Cosmos DB accounts that have traffic from a region that isn't currently configured. It
recommends adding that region. Doing so improves latency for requests coming from that region and ensures
availability in case of region outages. Learn more about global data distribution with Azure Cosmos DB.

Configure your Azure Cosmos DB indexing policy by using custom


included or excluded paths
Advisor identifies Azure Cosmos DB containers that are using the default indexing policy but could benefit from a
custom indexing policy. This determination is based on the workload pattern. The default indexing policy indexes
all properties. A custom indexing policy with explicit included or excluded paths used in query filters can reduce
the RUs and storage consumed for indexing. Learn more about modifying index policies.

Set your Azure Cosmos DB query page size (MaxItemCount) to -1


Azure Advisor identifies Azure Cosmos DB containers that are using a query page size of 100. It recommends
using a page size of -1 for faster scans. Learn more about MaxItemCount.

Consider using Accelerated Writes feature in your HBase cluster to


improve cluster performance
Azure Advisor analyses the system logs in the past 7 days and identifies if your cluster has encountered the
following scenarios:
1. High WAL sync time latency
2. High write request count (at least 3 one hour windows of over 1000 avg_write_requests/second/node)
These conditions are indicators that your cluster is suffering from high write latencies. This could be due to heavy
workload performed on your cluster.To improve the performance of your cluster, you may want to consider
utilizing the Accelerated Writes feature provided by Azure HDInsight HBase. The Accelerated Writes feature for
HDInsight Apache HBase clusters attaches premium SSD-managed disks to every RegionServer (worker node)
instead of using cloud storage. As a result, provides low write-latency and better resiliency for your applications.
To read more on this feature, learn more

Review Azure Data Explorer table cache-period (policy) for better


performance (Preview)
This recommendation surfaces Azure Data Explorer tables which have a high number of queries that look back
beyond the configured cache period (policy) (You will see the top 10 tables by query percentage that access out-
of-cache data). The recommended action to improve the cluster's performance: Limit queries on this table to the
minimal necessary time range (within the defined policy). Alternatively, if data from the entire time range is
required, increase the cache period to the recommended value.

Improve performance by optimizing MySQL temporary-table sizing


Advisor analysis indicates that your MySQL server may be incurring unnecessary I/O overhead due to low
temporary-table parameter settings. This may result in unnecessary disk-based transactions and reduced
performance. We recommend that you increase the 'tmp_table_size' and 'max_heap_table_size' parameter values
to reduce the number of disk-based transactions. Learn more

Distribute data in server group to distribute workload among nodes


Advisor identifies the server groups where the data has not been distributed but stays on the coordinator. Based
on this, Advisor recommends that for full Hyperscale (Citus) benefits distribute data on worker nodes for your
server groups. This will improve query performance by utilizing resource of each node in the server group. Learn
more

How to access performance recommendations in Advisor


1. Sign in to the Azure portal, and then open Advisor.
2. On the Advisor dashboard, select the Performance tab.

Next steps
To learn more about Advisor recommendations, see:
Introduction to Advisor
Get started with Advisor
Advisor cost recommendations
Advisor reliability recommendations
Advisor security recommendations
Advisor operational excellence recommendations
Advisor REST API
Reduce service costs by using Azure Advisor
9/22/2020 • 7 minutes to read • Edit Online

Azure Advisor helps you optimize and reduce your overall Azure spend by identifying idle and underutilized
resources. You can get cost recommendations from the Cost tab on the Advisor dashboard.

Optimize virtual machine spend by resizing or shutting down


underutilized instances
Although certain application scenarios can result in low utilization by design, you can often save money by
managing the size and number of your virtual machines.
The recommended actions are shut down or resize, specific to the resource being evaluated.
The advanced evaluation model in Advisor considers shutting down virtual machines when both of these
statements are true:
P95th of the maximum of maximum value of CPU utilization is less than 3%.
Network utilization is less than 2% over a seven-day period.
Memory pressure is lower than the threshold values
Advisor considers resizing virtual machines when it's possible to fit the current load in a smaller SKU (within the
same SKU family) or a smaller number of instances such that:
The current load doesn’t go above 80% utilization for workloads that aren't user facing.
The load doesn't go above 40% for user-facing workloads.
Here, Advisor determines the type of workload by analyzing the CPU utilization characteristics of the workload.
Advisor shows the estimated cost savings for either recommended action: resize or shut down. For resize,
Advisor provides current and target SKU information.
If you want to be more aggressive about identifying underutilized virtual machines, you can adjust the CPU
utilization rule on a per-subscription basis.

Optimize spend for MariaDB, MySQL, and PostgreSQL servers by


right-sizing
Advisor analyses your usage and evaluates whether your MariaDB, MySQL, or PostgreSQL database server
resources have been underutilized for an extended time over the past seven days. Low resource utilization results
in unwanted expenditure that you can fix without significant performance impact. To reduce your costs and
efficiently manage your resources, we recommend that you reduce the compute size (vCores) by half.

Reduce costs by eliminating unprovisioned ExpressRoute circuits


Advisor identifies Azure ExpressRoute circuits that have been in the provider status of Not provisioned for
more than one month. It recommends deleting the circuit if you aren't planning to provision the circuit with your
connectivity provider.

Reduce costs by deleting or reconfiguring idle virtual network


gateways
Advisor identifies virtual network gateways that have been idle for more than 90 days. Because these gateways
are billed hourly, you should consider reconfiguring or deleting them if you don't intend to use them anymore.

Buy reserved virtual machine instances to save money over pay-as-


you-go costs
Advisor reviews your virtual machine usage over the past 30 days to determine if you could save money by
purchasing an Azure reservation. Advisor shows you the regions and sizes where the potential for savings is
highest and the estimated savings from purchasing reservations. With Azure reservations, you can pre-purchase
the base costs for your virtual machines. Discounts automatically apply to new or existing VMs that have the
same size and region as your reservations. Learn more about Azure Reserved VM Instances.
Advisor also notifies you of your reserved instances that will expire in the next 30 days. It recommends that you
purchase new reserved instances to avoid pay-as-you-go pricing.

Buy reserved instances for several resource types to save over your
pay-as-you-go costs
Advisor analyzes usage patterns for the past 30 days for the following resources and recommends reserved
capacity purchases that optimize costs.
Azure Cosmos DB reserved capacity
Advisor analyzes your Azure Cosmos DB usage patterns for the past 30 days and recommends reserved capacity
purchases to optimize costs. By using reserved capacity, you can pre-purchase Azure Cosmos DB hourly usage
and save over your pay-as-you-go costs. Reserved capacity is a billing benefit and automatically applies to new
and existing deployments. Advisor calculates savings estimates for individual subscriptions by using 3-year
reservation pricing and by extrapolating the usage patterns observed over the past 30 days. Shared scope
recommendations are available for reserved capacity purchases and can increase savings.
SQL PaaS reserved capacity
Advisor analyzes SQL PaaS elastic database pools and SQL Managed Instance usage patterns over the past 30
days. It then recommends reserved capacity purchases that optimize costs. By using reserved capacity, you can
pre-purchase SQL DB hourly usage and save over your SQL compute costs. Your SQL license is charged
separately and isn't discounted by the reservation. Reserved capacity is a billing benefit and automatically applies
to new and existing deployments. Advisor calculates savings estimates for individual subscriptions by using 3-
year reservation pricing and by extrapolating the usage patterns observed over the past 30 days. Shared scope
recommendations are available for reserved capacity purchases and can increase savings.
App Service Stamp Fee reserved capacity
Advisor analyzes the Stamp Fee usage pattern for your Azure App Service isolated environment over the past 30
days and recommends reserved capacity purchases that optimize costs. By using reserved capacity, you can pre-
purchase hourly usage for the isolated environment Stamp Fee and save over your pay-as-you-go costs. Note
that reserved capacity applies only to the Stamp Fee and not to App Service instances. Reserved capacity is a
billing benefit and automatically applies to new and existing deployments. Advisor calculates saving estimates for
individual subscriptions by using 3-year reservation pricing based on usage patterns over the past 30 days.
Blob storage reserved capacity
Advisor analyzes your Azure Blob storage and Azure Data Lake storage usage over the past 30 days. It then
calculates reserved capacity purchases that optimize costs. With reserved capacity, you can pre-purchase hourly
usage and save over your current on-demand costs. Blob storage reserved capacity applies only to data stored
on Azure Blob general-purpose v2 and Azure Data Lake Storage Gen2 accounts. Reserved capacity is a billing
benefit and automatically applies to new and existing deployments. Advisor calculates savings estimates for
individual subscriptions by using 3-year reservation pricing and the usage patterns observed over the past 30
days. Shared scope recommendations are available for reserved capacity purchases and can increase savings.
MariaDB, MySQL, and PostgreSQL reserved capacity
Advisor analyzes your usage patterns for Azure Database for MariaDB, Azure Database for MySQL, and Azure
Database for PostgreSQL over the past 30 days. It then recommends reserved capacity purchases that optimize
costs. By using reserved capacity, you can pre-purchase MariaDB, MySQL, and PostgreSQL hourly usage and save
over your current costs. Reserved capacity is a billing benefit and automatically applies to new and existing
deployments. Advisor calculates savings estimates for individual subscriptions by using 3-year reservation
pricing and the usage patterns observed over the past 30 days. Shared scope recommendations are available for
reserved capacity purchases and can increase savings.
Azure Synapse Analytics (formerly SQL Data Warehouse ) reserved capacity
Advisor analyzes your Azure Synapse Analytics usage patterns over the past 30 days and recommends reserved
capacity purchases that optimize costs. By using reserved capacity, you can pre-purchase Synapse Analytics
hourly usage and save over your on-demand costs. Reserved capacity is a billing benefit and automatically
applies to new and existing deployments. Advisor calculates savings estimates for individual subscriptions by
using 3-year reservation pricing and the usage patterns observed over the past 30 days. Shared scope
recommendations are available for reserved capacity purchases and can increase savings.

Delete unassociated public IP addresses to save money


Advisor identifies public IP addresses that aren't associated with Azure resources like load balancers and VMs. A
nominal charge is associated with these public IP addresses. If you don't plan to use them, you can save money
by deleting them.

Delete Azure Data Factory pipelines that are failing


Advisor detects Azure Data Factory pipelines that repeatedly fail. It recommends that you resolve the problems or
delete the pipelines if you don't need them. You're billed for these pipelines even if though they're not serving
you while they're failing.

Use standard snapshots for managed disks


To save 60% of cost, we recommend storing your snapshots in standard storage, regardless of the storage type
of the parent disk. This option is the default option for managed disk snapshots. Advisor identifies snapshots that
are stored in premium storage and recommends migrating then from premium to standard storage. Learn more
about managed disk pricing.

Use lifecycle management


By using intelligence about your Azure Blob storage object count, total size, and transactions, Advisor detects
whether you should enable lifecycle management to tier data on one or more of your storage accounts. It
prompts you to create lifecycle management rules to automatically tier your data to cool or archive storage to
optimize your storage costs while retaining your data in Azure Blob storage for application compatibility.

Create an Ephemeral OS Disk recommendation


Ephemeral OS Disk allows you to:
Save on storage costs for OS disks.
Get lower read/write latency to OS disks.
Get faster VM reimage operations by resetting the OS (and temporary disk) to its original state.
It's preferable to use Ephemeral OS Disk for short-lived IaaS VMs or VMs with stateless workloads. Advisor
provides recommendations for resources that can benefit from Ephemeral OS Disk.

Reduce Azure Data Explorer table cache-period (policy) for cluster cost
optimization (Preview)
Advisor identifies resources where reducing the table cache policy will free up Azure Data Explorer cluster nodes
having low CPU utilization, memory, and a high cache size configuration.

How to access cost recommendations in Azure Advisor


1. Sign in to the Azure portal.
2. Search for and select Advisor from any page.
3. On the Advisor dashboard, select the Cost tab.

Next steps
To learn more about Advisor recommendations, see:
Introduction to Advisor
Get started with Advisor
Advisor performance recommendations
Advisor high availability recommendations
Advisor security recommendations
Advisor operational excellence recommendations
Achieve operational excellence by using Azure
Advisor
9/22/2020 • 4 minutes to read • Edit Online

Operational excellence recommendations in Azure Advisor can help you with:


Process and workflow efficiency.
Resource manageability.
Deployment best practices.
You can get these recommendations on the Operational Excellence tab of the Advisor dashboard.

Create Azure Service Health alerts to be notified when Azure


problems affect you
We recommend that you set up Azure Service Health alerts so you'll be notified when Azure service problems
affect you. Azure Service Health is a free service that provides personalized guidance and support when you're
affected by an Azure service problem. Advisor identifies subscriptions that don't have alerts configured and
recommends configuring them.

Design your storage accounts to prevent reaching the maximum


subscription limit
An Azure region can support a maximum of 250 storage accounts per subscription. After you reach that limit,
you won't be able to create storage accounts in that region/subscription combination. Advisor checks your
subscriptions and provides recommendations for you to design for fewer storage accounts for any
region/subscription that's close to reaching the limit.

Ensure you have access to Azure cloud experts when you need it
When running a business-critical workload, it's important to have access to technical support when you need it.
Advisor identifies potential business-critical subscriptions that don't have technical support included in their
support plan. It recommends upgrading to an option that includes technical support.

Delete and re-create your pool to remove a deprecated internal


component
If your pool is using a deprecated internal component, delete and re-create the pool for improved stability and
performance.

Repair invalid log alert rules


Azure Advisor detects alert rules that have invalid queries specified in their condition section. You can create log
alert rules in Azure Monitor and use them to run analytics queries at specified intervals. The results of the query
determine if an alert needs to be triggered. Analytics queries can become invalid over time because of changes in
referenced resources, tables, or commands. Advisor recommends that you correct the query in the alert rule to
prevent it from being automatically disabled and ensure monitoring coverage of your resources in Azure. Learn
more about troubleshooting alert rules.
Use Azure Policy recommendations
Azure Policy is a service in Azure that you can use to create, assign, and manage policies. These policies enforce
rules and effects on your resources. The following Azure Policy recommendations can help you achieve
operational excellency:
Manage tags. This policy adds or replaces the specified tag and value when any resource is created or updated.
You can remediate existing resources by triggering a remediation task. This policy doesn't modify tags on
resource groups.
Enforce geo-compliance requirements. This policy enables you to restrict the locations your organization
can specify when deploying resources.
Specify allowed vir tual machine SKUs for deployments. This policy enables you to specify a set of virtual
machine SKUs that your organization can deploy.
Enforce Audit VMs that do not use managed disks .
Enable Inherit a tag from resource groups . This policy adds or replaces the specified tag and value from the
parent resource group when any resource is created or updated. You can remediate existing resources by
triggering a remediation task.

No validation environment enabled


Azure Advisor determines that you do not have a validation environment enabled in current subscription. When
creating your host pools, you have selected "No" for "Validation environment" in the properties tab. Having at
least one host pool with a validation environment enabled ensures the business continuity through Windows
Virtual Desktop service deployments with early detection of potential issues. Learn more

Ensure production (non-validation) environment to benefit from stable


functionality
Azure Advisor detects that too many of your host pools have validation environment enabled. In order for
validation environments to best serve their purpose, you should have at least one, but never more than half of
your host pools in validation environment. By having a healthy balance between your host pools with validation
environment enabled and those with it disabled, you will best be able to utilize the benefits of the multistage
deployments that Windows Virtual Desktop offers with certain updates. To fix this issue, open your host pool's
properties and select "No" next to the "Validation Environment" setting.

Enable Traffic Analytics to view insights into traffic patterns across


Azure resources
Traffic Analytics is a cloud-based solution that provides visibility into user and application activity in Azure. Traffic
analytics analyzes Network Watcher network security group (NSG) flow logs to provide insights into traffic flow.
With traffic analytics, you can view top talkers across Azure and non Azure deployments, investigate open ports,
protocols and malicious flows in your environment and optimize your network deployment for performance. You
can process flow logs at 10 mins and 60 mins processing intervals, giving you faster analytics on your traffic. It's
a good practice to enable Traffic Analytics for your Azure resources.

Next steps
To learn more about Advisor recommendations, see:
Introduction to Advisor
Get started
Advisor cost recommendations
Advisor performance recommendations
Advisor reliability recommendations
Advisor security recommendations
Advisor REST API
View Azure Advisor recommendations that matter to
you
9/22/2020 • 3 minutes to read • Edit Online

Azure Advisor provides recommendations to help you optimize your Azure deployments. Within Advisor, you have
access to a few features that help you to narrow down your recommendations to only those that matter to you.

Configure subscriptions and resource groups


Advisor gives you the ability to select Subscriptions and Resource Groups that matter to you and your organization.
You only see recommendations for the subscriptions and resource groups that you select. By default, all are
selected. Configuration settings apply to the subscription or resource group, so the same settings apply to
everyone that has access to that subscription or resource group. Configuration settings can be changed in the
Azure portal or programmatically.
To make changes in the Azure portal:
1. Open Azure Advisor in the Azure portal.
2. Select Configuration from the menu.

3. Check the box in the Include column for any subscriptions or resource groups to receive Advisor
recommendations. If the box is disabled, you may not have permission to make a configuration change on
that subscription or resource group. Learn more about permissions in Azure Advisor.
4. Click Apply at the bottom after you make a change.

Filtering your view in the Azure portal


Configuration settings remain active until changed. If you want to limit the view of recommendations for a single
viewing, you can use the drop downs provided at the top of the Advisor panel. From the Overview, High Availability,
Security, Performance, Cost, and All Recommendation panels, you can select the Subscriptions, Resource Types, and
recommendation status that you want to see.
Dismissing and postponing recommendations
Azure Advisor allows you to dismiss or postpone recommendations on a single resource. If you dismiss a
recommendation, you do not see it again unless you manually activate it. However, postponing a recommendation
allows you to specify a duration after which the recommendation is automatically activated again. Postponing can
be done in the Azure portal or programmatically.
Postpone a single recommendation in the Azure portal
1. Open Azure Advisor in the Azure portal.
2. Select a recommendation category to view your recommendations
3. Select a recommendation from the list of recommendations
4. Select Postpone or Dismiss for the recommendation you want to postpone or dismiss

Postpone or dismiss a multiple recommendations in the Azure portal


1. Open Azure Advisor in the Azure portal.
2. Select a recommendation category to view your recommendations.
3. Select a recommendation from the list of recommendations.
4. Select the checkbox at the left of the row for all resources you want to postpone or dismiss the
recommendation.
5. Select Postpone or Dismiss at the top left of the table.
NOTE
You need contributor or owner permission to dismiss or postpone a recommendation. Learn more about permissions in
Azure Advisor.

NOTE
If the selection boxes are disabled, recommendations may still be loading. Please wait for all recommendations to load before
trying to postpone or dismiss.

Reactivate a postponed or dismissed recommendation


You can activate a recommendation that has been postponed or dismissed. This action can be done in the Azure
portal or programmatically. In the Azure portal:
1. Open Azure Advisor in the Azure portal.
2. Change the filter on the Overview panel to Postponed . Advisor then displays postponed or dismissed
recommendations.

3. Select a category to see Postponed and Dismissed recommendations.


4. Select a recommendation from the list of recommendations. This opens recommendations with the
Postponed & Dismissed tab already selected to show the resources for which this recommendation has
been postponed or dismissed.
5. Click on Activate at the end of the row. Once clicked, the recommendation is active for that resource and so
removed from this table. The recommendation is now visible in the Active tab.
Next steps
This article explains how you can view recommendations that matter to you in Azure Advisor. To learn more about
Advisor, see:
What is Azure Advisor?
Getting Started with Advisor
Permissions in Azure Advisor
Permissions in Azure Advisor
9/22/2020 • 2 minutes to read • Edit Online

Azure Advisor provides recommendations based on the usage and configuration of your Azure resources and
subscriptions. Advisor uses the built-in roles provided by Azure role-based access control (Azure RBAC) to manage
your access to recommendations and Advisor features.

Roles and their access


The following table defines the roles and the access they have within Advisor:

DISM ISS A N D
VIEW EDIT EDIT RESO URC E P O ST P O N E
REC O M M EN DAT I SUB SC RIP T IO N GRO UP REC O M M EN DAT I
RO L E ONS EDIT RUL ES C O N F IGURAT IO N C O N F IGURAT IO N ONS

Subscription X X X X X
Owner

Subscription X X X X X
Contributor

Subscription X -- -- -- --
Reader

Resource group X -- -- X X
Owner

Resource group X -- -- X X
Contributor

Resource group X -- -- -- --
Reader

Resource Owner X -- -- -- X

Resource X -- -- -- X
Contributor

Resource Reader X -- -- -- --

NOTE
Access to view recommendations is dependent on your access to the recommendation's impacted resource.

Permissions and unavailable actions


Lack of proper permissions can block your ability to perform actions in Advisor. Following are some common
problems.
Unable to configure subscriptions or resource groups
When you attempt to configure subscriptions or resource groups in Advisor, you may see that the option to include
or exclude is disabled. This status indicates that you do not have a sufficient level of permission for that resource
group or subscription. To resolve this issue, learn how to grant a user access.
Unable to postpone or dismiss a recommendation
If you receive an error when trying to postpone or dismiss a recommendation, you may not have sufficient
permissions. Make sure that you have at least contributor access to the impacted resource of the recommendation
you are postponing or dismissing. To resolve this issue, learn how to grant a user access.

Next steps
This article gave an overview of how Advisor uses RBAC to control user permissions and how to resolve common
issues. To learn more about Advisor, see:
What is Azure Advisor?
Get started with Azure Advisor
Create Azure Advisor alerts on new
recommendations using the Azure portal
9/22/2020 • 3 minutes to read • Edit Online

This article shows you how to set up an alert for new recommendations from Azure Advisor using the Azure portal.
Whenever Azure Advisor detects a new recommendation for one of your resources, an event is stored in Azure
Activity log. You can set up alerts for these events from Azure Advisor using a recommendation-specific alerts
creation experience. You can select a subscription and optionally a resource group to specify the resources that you
want to receive alerts on.
You can also determine the types of recommendations by using these properties:
Category
Impact level
Recommendation type
You can also configure the action that will take place when an alert is triggered by:
Selecting an existing action group
Creating a new action group
To learn more about action groups, see Create and manage action groups.

NOTE
Advisor alerts are currently only available for High Availability, Performance, and Cost recommendations. Security
recommendations are not supported.

Create alert rule


1. In the por tal , select Azure Advisor .
2. In the Monitoring section of the left menu, select Aler ts .

3. Select New Advisor Aler t .

4. In the Scope section, select the subscription and optionally the resource group that you want to be alerted
on.
5. In the Condition section, select the method you want to use for configuring your alert. If you want to alert
for all recommendations for a certain category and/or impact level, select Categor y and impact level . If
you want to alert for all recommendations of a certain type, select Recommendation type .

6. Depending on the Configure by option that you select, you will be able to specify the criteria. If you want all
recommendations, just leave the remaining fields blank.

7. In the action groups section, select Add existing to use an action group you already created or select
Create new to set up a new action group.

8. In the Alert details section, give your alert a name and short description. If you want your alert to be
enabled, leave Enable rule upon creation selection set to Yes . Then select the resource group to save
your alert to. This will not impact the targeting scope of the recommendation.
Configure recommendation alerts to use a webhook
This section shows you how to configure Azure Advisor alerts to send recommendation data through webhooks to
your existing systems.
You can set up alerts to be notified when you have a new Advisor recommendation on one of your resources.
These alerts can notify you through email or text message, but they can also be used to integrate with your existing
systems through a webhook.
Using the Advisor recommendation alert payload
If you want to integrate Advisor alerts into your own systems using a webhook, you will need to parse the JSON
payload that is sent from the notification.
When you set up your action group for this alert, you select if you would like to use the common alert schema. If
you select the common alert schema, your payload will look like:
{
"schemaId":"azureMonitorCommonAlertSchema",
"data":{
"essentials":{
"alertId":"/subscriptions/<subid>/providers/Microsoft.AlertsManagement/alerts/<alerted>",
"alertRule":"Webhhook-test",
"severity":"Sev4",
"signalType":"Activity Log",
"monitorCondition":"Fired",
"monitoringService":"Activity Log - Recommendation",
"alertTargetIDs":[
"/subscriptions/<subid>/resourcegroups/<resource group
name>/providers/microsoft.dbformariadb/servers/<resource name>"
],
"originAlertId":"001d8b40-5d41-4310-afd7-d65c9d4428ed",
"firedDateTime":"2019-07-17T23:00:57.3858656Z",
"description":"A new recommendation is available.",
"essentialsVersion":"1.0",
"alertContextVersion":"1.0"
},
"alertContext":{
"channels":"Operation",
"claims":"
{\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\":\"Microsoft.Advisor\"}",
"caller":"Microsoft.Advisor",
"correlationId":"8554b847-2a72-48ef-9776-600aca3c3aab",
"eventSource":"Recommendation",
"eventTimestamp":"2019-07-17T22:28:54.1566942+00:00",
"httpRequest":"{\"clientIpAddress\":\"0.0.0.0\"}",
"eventDataId":"001d8b40-5d41-4310-afd7-d65c9d4428ed",
"level":"Informational",
"operationName":"Microsoft.Advisor/recommendations/available/action",
"properties":{
"recommendationSchemaVersion":"1.0",
"recommendationCategory":"Performance",
"recommendationImpact":"Medium",
"recommendationName":"Increase the MariaDB server vCores",

"recommendationResourceLink":"https://portal.azure.com/#blade/Microsoft_Azure_Expert/RecommendationListBlade/s
ource/ActivityLog/recommendationTypeId/a5f888e3-8cf4-4491-b2ba-b120e14eb7ce/resourceId/%2Fsubscriptions%
<subscription id>%2FresourceGroups%2<resource group
name>%2Fproviders%2FMicrosoft.DBforMariaDB%2Fservers%2F<resource name>",
"recommendationType":"a5f888e3-8cf4-4491-b2ba-b120e14eb7ce"
},
"status":"Active",
"subStatus":"",
"submissionTimestamp":"2019-07-17T22:28:54.1566942+00:00"
}
}
}

If you do not use the common schema, your payload looks like the following:
{
"schemaId":"Microsoft.Insights/activityLogs",
"data":{
"status":"Activated",
"context":{
"activityLog":{
"channels":"Operation",
"claims":"
{\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\":\"Microsoft.Advisor\"}",
"caller":"Microsoft.Advisor",
"correlationId":"3ea7320f-c002-4062-adb8-96d3bd92a5f4",
"description":"A new recommendation is available.",
"eventSource":"Recommendation",
"eventTimestamp":"2019-07-17T20:36:39.3966926+00:00",
"httpRequest":"{\"clientIpAddress\":\"0.0.0.0\"}",
"eventDataId":"a12b8e59-0b1d-4003-bfdc-3d8152922e59",
"level":"Informational",
"operationName":"Microsoft.Advisor/recommendations/available/action",
"properties":{
"recommendationSchemaVersion":"1.0",
"recommendationCategory":"Performance",
"recommendationImpact":"Medium",
"recommendationName":"Increase the MariaDB server vCores",

"recommendationResourceLink":"https://portal.azure.com/#blade/Microsoft_Azure_Expert/RecommendationListBlade/s
ource/ActivityLog/recommendationTypeId/a5f888e3-8cf4-4491-b2ba-
b120e14eb7ce/resourceId/%2Fsubscriptions%2F<subscription id>%2FresourceGroups%2F<resource group
name>%2Fproviders%2FMicrosoft.DBforMariaDB%2Fservers%2F<resource name>",
"recommendationType":"a5f888e3-8cf4-4491-b2ba-b120e14eb7ce"
},
"resourceId":"/subscriptions/<subscription id>/resourcegroups/<resource group
name>/providers/microsoft.dbformariadb/servers/<resource name>",
"resourceGroupName":"<resource group name>",
"resourceProviderName":"MICROSOFT.DBFORMARIADB",
"status":"Active",
"subStatus":"",
"subscriptionId":"<subscription id>",
"submissionTimestamp":"2019-07-17T20:36:39.3966926+00:00",
"resourceType":"MICROSOFT.DBFORMARIADB/SERVERS"
}
},
"properties":{

}
}
}

In either schema, you can identify Advisor recommendation events by looking for eventSource is Recommendation
and operationName is Microsoft.Advisor/recommendations/available/action .
Some of the other important fields that you may want to use are:
alertTargetIDs (in the common schema) or resourceId (legacy schema)
recommendationType
recommendationName
recommendationCategory
recommendationImpact
recommendationResourceLink

Manage your alerts


From Azure Advisor, you can edit, delete, or disable and enable your recommendations alerts.
1. In the por tal , select Azure Advisor .

2. In the Monitoring section of the left menu, select Aler ts .

3. To edit an alert, click on the Alert name to open the alert and edit the fields you want to edit.
4. To delete, enable, or disable an alert, click on the ellipse at the end of the row and then select the action you
would like to take.

Next steps
Get an overview of activity log alerts, and learn how to receive alerts.
Learn more about action groups.
Configure periodic summary for recommendations
9/22/2020 • 2 minutes to read • Edit Online

Advisor recommendation digests provide an easy and proactive way to stay on top of your active
recommendations, across different categories. The feature provides the ability to configure periodic notifications for
the summary of all your active recommendations, across different categories. You can choose your desired channel
for notifications like email, sms or others, using action groups. This article shows you how to set-up a
recommendation digests for your Advisor recommendations.

Setting-up your recommendation digest


The recommendation digest creation experience helps you configure the summary. You can select below
parameters for configurations:
1. Category: We have recommendation categories like cost, high availability, performance and operational
excellence. The capability is not available for security recommendations yet.
2. Frequency of digest: Frequency for the summary notifications can be weekly, bi-weekly and monthly.
3. Action group: You can either select an existing action group or create a new action group. To learn more about
action groups, see create and manage action groups.
4. Language for the digest
5. Recommendation digest name: You can use a user-friendly string to better track and monitor the digests.

Steps to create recommendation digest in Azure portal


Here are the steps to create recommendation digest:
Step 1: In the Azure portal, go to Advisor and under Monitoring section, select Recommendation
digest

Step 2: Select New recommendation digest from the top bar as below:
Step 3: In the scope section, select the subscription for your digest

Step 4: In the condition section, select the configurations like categor y , frequency and language

Step 5: In the action group section, select the action group for the digest. You can learn more here -
Create and manage action groups
Step 6: In this final section for digest details , you can assign name and state to your recommendation
digest. Press create recommendation digest to complete the set-up.

Next steps
For more information about Advisor recommendations, see:
Introduction to Azure Advisor
Get started with Advisor
Advisor Cost recommendations
Advisor Performance recommendations
Advisor Security recommendations
Advisor Operational Excellence recommendations
Advisor REST API
Quick Fix remediation for Advisor
9/22/2020 • 2 minutes to read • Edit Online

Quick Fix enables a faster and easier way of remediation for recommendation on multiple resources. It provides
capability for bulk remediations for resources and helps you optimize your subscriptions faster with remediation at
scale for your resources. The feature is available for certain recommendations only, via Azure portal.

Steps to use 'Quick Fix'


1. From the list of recommendations that have the Quick Fix label, click on the recommendation.

Prices in the image are for example purposes only


2. On the Recommendation details page, you'll see list of resources for which you have this recommendation.
Select all the resources you want to remediate for the recommendation.

Prices in the image are for example purposes only


3. Once you have selected the resources, click on the Quick Fix button to bulk remediate.
NOTE
Some of the listed resources might be disabled, because you don't have the appropriate permissions to modify them.

NOTE
If there are other implications, in addition to benefits mentioned in Advisor, you will be communicated in the
experience to help you take informed remediation decisions.

4. You will get a notification for the remediation completion. You will see an error if there are resources which
are not remediated and resources in the selected mode in the resource list view.

Next steps
For more information about Advisor recommendations, see:
Introduction to Azure Advisor
Get started with Advisor
Advisor Cost recommendations
Advisor Performance recommendations
Advisor Security recommendations
Advisor Operational Excellence recommendations
Advisor REST API
Query for Advisor data in Resource Graph Explorer
(Azure Resource Graph)
9/22/2020 • 2 minutes to read • Edit Online

Advisor resources are now onboarded to Azure Resource Graph. This lays foundation to many at-scale customer
scenarios for Advisor recommendations. Few scenarios that were not possible before to do at scale and now can be
achieved using Resource Graph are:
Gives capability to perform complex query for all your subscriptions in Azure portal
Recommendations summarized by category types ( like reliability, performance) and impact types (high,
medium, low)
All recommendations for a particular recommendation type
Impacted resource count by recommendation category

Advisor resource types in Azure Graph


Available Advisor resource types in Resource Graph: There are 3 resource types available for querying under
Advisor resources. Here is the list of the resources that are now available for querying in Resource Graph.
Microsoft.Advisor/configurations
Microsoft.Advisor/recommendations
Microsoft.Advisor/suppressions
These resource types are listed under a new table named as AdvisorResources, which you can also query in the
Resource Graph Explorer in Azure portal.

Next steps
For more information about Advisor recommendations, see:
Introduction to Azure Advisor
Get started with Advisor
Advisor cost recommendations
Advisor reliability recommendations
Advisor performance recommendations
Advisor security recommendations
Advisor operational excellence recommendations
Advisor REST API
Optimize Azure workloads using Advisor score
9/22/2020 • 7 minutes to read • Edit Online

Introduction to Advisor score


Azure Advisor provides best practice recommendations for your workloads. These recommendations are
personalized and actionable to help you:
Improve the posture of your workloads and optimize your Azure deployments
Proactively prevent top issues by following best practices
Assess your Azure workloads against the five pillars of the Microsoft Azure Well-Architected Framework
As a core feature of Advisor, the Advisor score is devised to help you achieve these goals effectively and
efficiently.
To get the most out of Azure, it's crucial to understand where you are in your workload optimization journey, which
services/resources are consumed well and which are not. Further, you'll want to know how to prioritize your
actions, based on recommendations, to maximize the outcome. It's also important to track and report the progress
you're making in this optimization journey. With Advisor score , you can easily do all these things with our new
gamification experience. As your personalized cloud consultant, Azure Advisor continually assesses your usage
telemetry and resource configuration to check for industry best practices. Advisor then aggregates its findings into
a single score so you can tell, at a glance, if you’re taking the necessary steps to build reliable, secure, and cost-
efficient solutions. The Advisor score consists of an overall score, which can be further broken down into five
category scores, one for each category of Azure Advisor which represents the five pillars of the Well-Architected
Framework. You can track the progress you make over time by viewing your overall score and category score with
daily, weekly, and monthly trend, and you can set benchmarks to help you achieve your goals.

How to consume Advisor score


Advisor displays your overall Advisor score and breakdown for Advisor categories, in percentages. A score of 100%
in any category means all your resources assessed by Advisor follow the best practices that Advisor recommends.
On the other end of the spectrum, a score of 0% means that none of your resources assessed by Advisor follow
Advisor’s recommendations. Using these score grains you can easily achieve below flow:
Advisor score to help you baseline how your workload/subscriptions are doing based on Advisor score. You
can also see the historical trends to understand what your trend is.
Advisor Categor y scores of each recommendation will tell you which outstanding recommendations will
improve your score the most. These values reflect both the weight of the recommendation and our predicted
ease of implementation to make sure you can get most value with your time and helps you with prioritization
Categor y Score impact of each recommendation to help you prioritize your remediation actions for each
category
The contribution of each recommendation to your category score is shown clearly on the Advisor score page in the
Azure portal. You can increase each category score by the percentage point listed in the category score impact
column. This value reflects both the weight of the recommendation within the category and the predicted ease of
implementation to address the potentially low-hanging fruit. Focusing on the recommendations with the greatest
score impact will help you make the most progress with time.

In case any of Advisor recommendations are not relevant for an individual resource, you can postpone or dismiss
those recommendations and they will be excluded from the score calculation from the next refresh. Advisor will
also use this input as additional feedback to improve the model.

How is Advisor score calculated?


Advisor displays your category scores and your overall Advisor score as percentages. A score of 100% in any
category means all your resources, assessed by Advisor, follow the best practices that Advisor recommends. On the
other end of the spectrum, a score of 0% means that none of your resources, assessed by Advisor, follow Advisor’s
recommendations. Each of the five categories has a highest potential score of 100. Your overall Advisor
score is calculated as a sum of each applicable category score, divided by the sum of the highest potential score
from all applicable categories. For most subscriptions, that means Advisor adds up the score from each category
and divide by 500. However, each categor y score is calculated only if you use resources that are
assessed by Advisor.
Advisor score calculation example
Single subscription score: This is the simple mean of all Advisor category scores for your subscription. If the
Advisor category scores are as - Cost = 73, Reliabilit = 85, Operational excellence = 77, Performance = 100; the
Advisor score would be (73 + 85 + 77 + 100)/(4x100) = 0.84 or 84%.
Multiple subscriptions score: When multiple subscriptions are selected, the overall advisor score we generate
are weighted aggregate category scores. Here, each Advisor category score is aggregated based on resources
consumed by subscriptions. Once we have the weighted aggregated category scores then we do a simple mean
to give you overall score for subscriptions.
Scoring methodology:
The calculation of the Advisor score can be summarized in four steps:
1. Advisor calculates the retail cost of impacted resources , which are the resources on your subscriptions that
have at least one recommendation in Advisor.
2. Advisor calculates the retail cost of assessed resources , which are the resources that are monitored by
Advisor, whether they have any recommendations or not.
3. For each recommendation type, Advisor calculates the healthy resource ratio , which is the retail cost of
impacted resources divided by the retail cost of assessed resources.
4. Advisor applies three additional weights to the healthy resource ratio in each category:
Recommendations with greater impact are weighted heavier than those with lower impact.
Resources with long-standing recommendations will count more against your score.
Resources that you postpone or dismiss in Advisor are removed from your score calculation entirely.
Advisor applies this model at an Advisor category level (Security uses Secure Score model), giving us Advisor score
for each category and further a simple average produces the final Advisor score.

Advisor score FAQ


How often is my score refreshed? Your score is refreshed at least once per day.
Why do some recommendations have empty "-" value in the categor y score impact column?
Advisor does not immediately include new recommendations or those with recent changes in the scoring
model. After a short evaluation period, typically a few weeks, they will be included in the score.
Why is the Cost score impact greater for some recommendations even if they have lower potential
savings? Your cost score reflects both your potential savings from underutilized resources and the predicted
ease of implementing those recommendations. For example, extra weight is applied to impacted resources that
have been idle for a longer time, even if the potential savings is lower.
Why don’t I have a score for one or more categories or subscriptions? Advisor will generate a score
only for the categories and subscriptions that have resources that are assessed by Advisor.
What if a recommendation is not relevant? If you dismiss a recommendation from Advisor, it will be
omitted from the calculation of your score. Dismissing recommendations also help Advisor improve the quality
of recommendations.
Why did my score change? You score can change if you remediate impacted resources by adopting the best
practices that Advisor recommends. If you or anyone with permissions on your subscription has modified or
created new resources, you might also see fluctuations in your score because your score is based on a ratio of
the cost impacted resources relative to the total cost of all resources.
How does Advisor calculate the retail cost of resources on a subscription? Advisor uses the pay as
you go rates published on the Azure.com pricing page, which does not reflect any applicable discounts,
multiplied by the quantity of usage on the last day the resource was allocated. Omitting discounts from the
calculation of the resource cost makes Advisor score comparable across subscriptions, tenants, and enrollments
where discounts may vary.
Do I need to view the recommendations in Advisor to get points for my score? No. Your score reflects
whether you adopt best practices that Advisor recommends, even if you adopt those best practices proactively
and never view your recommendations in Advisor.
Does the scoring methodology differentiate between production and dev-test workloads? No, not
for now, but you can dismiss recommendations on individual resources if those resources are used for
development and test and the recommendation does not apply.
Can I compare scores between a subscription with 100 resources and a subscription with 100,000
resources? The scoring methodology is designed to control for number of resources on a subscription and
service mix, so subscriptions with fewer resources can have higher or lower scores than subscriptions with more
resources.
What does it mean when I see "Coming soon" in the Score impact column? This means that this is a
new recommendation and we are still working on bringing it in our Advisor score model. Once this new
recommendation is considered in score calculation, you will see the score impact value for your
recommendation.
Does my score depend on how much I spend on Azure? No, your score is not necessarily a reflection of
how much you spend, and unnecessary spending will result in a lower cost score.

How to access Advisor


Advisor score is in public preview in Azure portal. You have to go to Advisor section and you will find Advisor score
as the 2nd menu item in the left nav.

Next steps
For more information about Advisor recommendations, see:
Introduction to Advisor
Get started with Advisor
Advisor cost recommendations
Advisor performance recommendations
Advisor security recommendations
Advisor operational excellence recommendations
Database Advisor performance recommendations for
Azure SQL Database
9/22/2020 • 7 minutes to read • Edit Online

APPLIES TO: Azure SQL Database


Azure SQL Database learns and adapts with your application. Azure SQL Database has a number of database
advisors that provide customized recommendations that enable you to maximize performance. These database
advisors continuously assess and analyze the usage history and provide recommendations based on workload
patterns that help improve performance.

Performance overview
Performance overview provides a summary of your database performance, and helps you with performance
tuning and troubleshooting.

The Recommendations tile provides a breakdown of tuning recommendations for your database (top three
recommendations are shown if there are more). Clicking this tile takes you to Performance recommendation
options .
The Tuning activity tile provides a summary of the ongoing and completed tuning actions for your database,
giving you a quick view into the history of tuning activity. Clicking this tile takes you to the full tuning history
view for your database.
The Auto-tuning tile shows the auto-tuning configuration for your database (tuning options that are
automatically applied to your database). Clicking this tile opens the automation configuration dialog.
The Database queries tile shows the summary of the query performance for your database (overall DTU
usage and top resource consuming queries). Clicking this tile takes you to Quer y Performance Insight .

Performance recommendation options


Performance recommendation options available in Azure SQL Database are:
SIN GL E DATA B A SE A N D P O O L ED
P ERF O RM A N C E REC O M M EN DAT IO N DATA B A SE SUP P O RT IN STA N C E DATA B A SE SUP P O RT

Create index recommendations - Yes No


Recommends creation of indexes that
may improve performance of your
workload.

Drop index recommendations - Yes No


Recommends removal of redundant and
duplicate indexes daily, except for
unique indexes, and indexes that were
not used for a long time (>90 days).
Please note that this option is not
compatible with applications using
partition switching and index hints.
Dropping unused indexes is not
supported for Premium and Business
Critical service tiers.

Parameterize queries Yes No


recommendations (preview) -
Recommends forced parameterization in
cases when you have one or more
queries that are constantly being
recompiled but end up with the same
query execution plan.

Fix schema issues Yes No


recommendations (preview) -
Recommendations for schema
correction appear when Azure SQL
Database notices an anomaly in the
number of schema-related SQL errors
that are happening on your database.
Microsoft is currently deprecating "Fix
schema issue" recommendations.

To apply performance recommendations, see applying recommendations. To view the status of recommendations,
see Monitoring operations.
You can also find complete history of tuning actions that were applied in the past.
Create index recommendations
Azure SQL Database continuously monitors the queries that are running and identifies the indexes that could
improve performance. After there's enough confidence that a certain index is missing, a new Create index
recommendation is created.
Azure SQL Database builds confidence by estimating the performance gain the index would bring through time.
Depending on the estimated performance gain, recommendations are categorized as high, medium, or low.
Indexes that are created by using recommendations are always flagged as auto-created indexes. You can see which
indexes are auto-created by looking at the sys.indexes view. Auto-created indexes don't block ALTER/RENAME
commands.
If you try to drop the column that has an auto-created index over it, the command passes. The auto-created index is
dropped with the command as well. Regular indexes block the ALTER/RENAME command on columns that are
indexed.
After the create index recommendation is applied, Azure SQL Database compares the performance of the queries
with the baseline performance. If the new index improved performance, the recommendation is flagged as
successful and the impact report is available. If the index didn't improve performance, it's automatically reverted.
Azure SQL Database uses this process to ensure that recommendations improve database performance.
Any create index recommendation has a back-off policy that doesn't allow applying the recommendation if the
resource usage of a database or pool is high. The back-off policy takes into account CPU, Data IO, Log IO, and
available storage.
If CPU, data IO, or log IO is higher than 80% in the previous 30 minutes, the create index recommendation is
postponed. If the available storage will be below 10% after the index is created, the recommendation goes into an
error state. If, after a couple of days, automatic tuning still believes that the index would be beneficial, the process
starts again.
This process repeats until there's enough available storage to create an index, or until the index isn't seen as
beneficial anymore.

Drop index recommendations


Besides detecting missing indexes, Azure SQL Database continuously analyzes the performance of existing indexes.
If an index is not used, Azure SQL Database recommends dropping it. Dropping an index is recommended in two
cases:
The index is a duplicate of another index (same indexed and included column, partition schema, and filters).
The index hasn't been used for a prolonged period (93 days).
Drop index recommendations also go through the verification after implementation. If the performance improves,
the impact report is available. If performance degrades, the recommendation is reverted.

Parameterize queries recommendations (preview)


Parameterize queries recommendations appear when you have one or more queries that are constantly being
recompiled but end up with the same query execution plan. This condition creates an opportunity to apply forced
parameterization. Forced parameterization, in turn, allows query plans to be cached and reused in the future, which
improves performance and reduces resource usage.
Every query initially needs to be compiled to generate an execution plan. Each generated plan is added to the plan
cache. Subsequent executions of the same query can reuse this plan from the cache, which eliminates the need for
additional compilation.
Queries with non-parameterized values can lead to performance overhead because the execution plan is
recompiled each time the non-parameterized values are different. In many cases, the same queries with different
parameter values generate the same execution plans. These plans, however, are still separately added to the plan
cache.
The process of recompiling execution plans uses database resources, increases the query duration time, and
overflows the plan cache. These events, in turn, cause plans to be evicted from the cache. This behavior can be
altered by setting the forced parameterization option on the database.
To help you estimate the impact of this recommendation, you are provided with a comparison between the actual
CPU usage and the projected CPU usage (as if the recommendation were applied). This recommendation can help
you gain CPU savings. It can also help you decrease query duration and overhead for the plan cache, which means
that more of the plans can stay in the cache and be reused. You can apply this recommendation quickly by selecting
the Apply command.
After you apply this recommendation, it enables forced parameterization within minutes on your database. It starts
the monitoring process, which lasts for approximately 24 hours. After this period, you can see the validation report.
This report shows the CPU usage of your database 24 hours before and after the recommendation has been
applied. Azure SQL Database Advisor has a safety mechanism that automatically reverts the applied
recommendation if performance regression has been detected.

Fix schema issues recommendations (preview)


IMPORTANT
Microsoft is currently deprecating "Fix schema issue" recommendations. We recommend that you use Intelligent Insights to
monitor your database performance issues, including schema issues that the "Fix schema issue" recommendations previously
covered.

Fix schema issues recommendations appear when Azure SQL Database notices an anomaly in the number of
schema-related SQL errors that are happening on your database. This recommendation typically appears when
your database encounters multiple schema-related errors (invalid column name, invalid object name, and so on)
within an hour.
"Schema issues" are a class of syntax errors. They occur when the definition of the SQL query and the definition of
the database schema aren't aligned. For example, one of the columns that's expected by the query might be
missing in the target table or vice-versa.
The "Fix schema issue" recommendation appears when Azure SQL Database notices an anomaly in the number of
schema-related SQL errors that are happening on your database. The following table shows the errors that are
related to schema issues:

SQ L ERRO R C O DE M ESSA GE

201 Procedure or function '' expects parameter '', which was not
supplied.

207 Invalid column name '*'.

208 Invalid object name '*'.

213 Column name or number of supplied values does not match


table definition.
SQ L ERRO R C O DE M ESSA GE

2812 Could not find stored procedure '*'.

8144 Procedure or function * has too many arguments specified.

Custom applications
Developers might consider developing custom applications using performance recommendations for Azure SQL
Database. All recommendations listed in the portal for a database can be accessed through Get-
AzSqlDatabaseRecommendedAction API.

Next steps
For more information about automatic tuning of database indexes and query execution plans, see Azure SQL
Database automatic tuning.
For more information about automatically monitoring database performance with automated diagnostics and
root cause analysis of performance issues, see Azure SQL Intelligent Insights.
See Query Performance Insights to learn about and view the performance impact of your top queries.
Best Practices for Azure App Service
9/22/2020 • 4 minutes to read • Edit Online

This article summarizes best practices for using Azure App Service.

Colocation
When Azure resources composing a solution such as a web app and a database are located in different regions, it can have the following effects:
Increased latency in communication between resources
Monetary charges for outbound data transfer cross-region as noted on the Azure pricing page.
Colocation in the same region is best for Azure resources composing a solution such as a web app and a database or storage account used to hold content or data. When
creating resources, make sure they are in the same Azure region unless you have specific business or design reason for them not to be. You can move an App Service app to
the same region as your database by using the App Service cloning feature currently available for Premium App Service Plan apps.

When apps consume more memory than expected


When you notice an app consumes more memory than expected as indicated via monitoring or service recommendations, consider the App Service Auto-Healing feature.
One of the options for the Auto-Healing feature is taking custom actions based on a memory threshold. Actions span the spectrum from email notifications to investigation
via memory dump to on-the-spot mitigation by recycling the worker process. Auto-healing can be configured via web.config and via a friendly user interface as described at in
this blog post for the App Service Support Site Extension.

When apps consume more CPU than expected


When you notice an app consumes more CPU than expected or experiences repeated CPU spikes as indicated via monitoring or service recommendations, consider scaling up
or scaling out the App Service plan. If your application is stateful, scaling up is the only option, while if your application is stateless, scaling out gives you more flexibility and
higher scale potential.
For more information about “stateful” vs “stateless” applications you can watch this video: Planning a Scalable End-to-End Multi-Tier Application on Azure App Service. For
more information about App Service scaling and autoscaling options, see Scale a Web App in Azure App Service.

When socket resources are exhausted


A common reason for exhausting outbound TCP connections is the use of client libraries, which are not implemented to reuse TCP connections, or when a higher-level
protocol such as HTTP - Keep-Alive is not used. Review the documentation for each of the libraries referenced by the apps in your App Service Plan to ensure they are
configured or accessed in your code for efficient reuse of outbound connections. Also follow the library documentation guidance for proper creation and release or cleanup to
avoid leaking connections. While such client libraries investigations are in progress, impact may be mitigated by scaling out to multiple instances.
Node.js and outgoing http requests
When working with Node.js and many outgoing http requests, dealing with HTTP - Keep-Alive is important. You can use the agentkeepalive npm package to make it easier in
your code.
Always handle the http response, even if you do nothing in the handler. If you don't handle the response properly, your application gets stuck eventually because no more
sockets are available.
For example, when working with the http or https package:

const request = https.request(options, function(response) {


response.on('data', function() { /* do nothing */ });
});

If you are running on App Service on Linux on a machine with multiple cores, another best practice is to use PM2 to start multiple Node.js processes to execute your
application. You can do it by specifying a startup command to your container.
For example, to start four instances:

pm2 start /home/site/wwwroot/app.js --no-daemon -i 4

When your app backup starts failing


The two most common reasons why app backup fails are: invalid storage settings and invalid database configuration. These failures typically happen when there are changes
to storage or database resources, or changes for how to access these resources (for example, credentials updated for the database selected in the backup settings). Backups
typically run on a schedule and require access to storage (for outputting the backed-up files) and databases (for copying and reading contents to be included in the backup).
The result of failing to access either of these resources would be consistent backup failure.
When backup failures happen, review most recent results to understand which type of failure is happening. For storage access failures, review and update the storage settings
used in the backup configuration. For database access failures, review and update your connections strings as part of app settings; then proceed to update your backup
configuration to properly include the required databases. For more information on app backups, see Back up a web app in Azure App Service.

When new Node.js apps are deployed to Azure App Service


Azure App Service default configuration for Node.js apps is intended to best suit the needs of most common apps. If configuration for your Node.js app would benefit from
personalized tuning to improve performance or optimize resource usage for CPU/memory/network resources, see Best practices and troubleshooting guide for Node
applications on Azure App Service. This article describes the iisnode settings you may need to configure for your Node.js app, describes the various scenarios or issues that
your app may be facing, and shows how to address these issues.

Next Steps
For more information on best practices, visit App Service Diagnostics to find out actionable best practices specific to your resource.
Navigate to your Web App in the Azure portal.
Click on Diagnose and solve problems in the left navigation, which opens App Service Diagnostics.
Choose Best Practices homepage tile.
Click Best Practices for Availability & Performance or Best Practices for Optimal Configuration to view the current state of your app in regards to these best
practices.
You can also use this link to directly open App Service Diagnostics for your resource:
https://ms.portal.azure.com/?
websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Micr
.

You might also like