Alerts Home | PostDeployment | How to Change Thresholds | Alert Reference | Excel List of Alert Rules | Update History
This solution provides a baseline of alerts for AVD that are disabled by default and for ensuring administrators and staff get meaningful and timely alerts when there are problems related to an AVD deployment. The deployment has been tested in Azure Global and Azure US Government and will incorporate storage alerts for either or both Azure Files and/or Azure Netapp Files.
Current Version: v2.1.5 (Dec 5, 2023)
An AVD deployment and the Owner Role on the Subscription containing the AVD resources, VMs and Storage. You must have also pre-configured the AVD Insights as it will enable diagnostic logging for the Host Pools and associated VMs in which the alerts rely on.
Names will be created with a standard 'avdmetrics' in the name and vary based on input for things like site, environment type, etc.
Resource Group starting with the name "rg-avdmetrics-" with the following:
- Automation Account with a Runbook (for Host Pool Information not otherwise available)
- Identity for the Automation Account in which the name will start with "aa-avdmetrics-"
- Logic App that execute every 5 minutes (Host Pool Info Runbook)
The Automation Account Identity will be assigned the following roles at the Subscription level:
- Desktop Virtualization Reader
- Reader and Data Access (Storage Specific)
While this is highly subjective on the environment, number of triggered alerts, etc. it was designed with cost in mind. The primary resources in this deployment are the Automation Account and Alerts. We recommend you enable alerts in stages and monitor costs, however the overall cost should be minimal.
- Automation Account runs a script every 5 minutes to collect additional Azure File Share data and averages around $5/month
- Alert Rules vary based on number of times triggered but estimates are under $1/mo each.
Table below shows the Alert Names however the number of alert rules created may be multiple based on different severity and/or additional volume or storage name designators. For example, a deployment with a single Azure Files Storage Account and an Azure NetApp Files Volume would yield 20 alert rules created. (Excel Table)
Name | Threshold(s) (Severity) | Signal Type | Frequency | # Alert Rules |
---|---|---|---|---|
AVD-HostPool-Capacity 1️⃣ | 95% (1) / 85% (2) / 50% (3) | Log Analytics | 5 min | 3/hostpool |
AVD-HostPool-Disconnected User over n Hours (hostpoolname) | 24 (1) / 72 (2) | Log Analytics | 1 hour | 2/hostpool |
AVD-HostPool-No Resources Available (hostpoolname) | Any are Sev1 | Log Analytics | 15 min | 1/hostpool |
AVD-HostPool-VM-Available Memory Less Than nGB (hostpoolname) | 1gb (Sev1) / 2gb (Sev2) | Metric Alerts | 5 min | 2/hostpool |
AVD-HostPool-VM-FSLogix Profile DiskCompactFailed (hostpoolname) | (2) | Log Analytics | 5 min | 1/hostpool |
AVD-HostPool-VM-FSLogix Profile FailedAttachVHD (hostpoolname) | (1) | Log Analytics | 5 min | 1/hostpool |
AVD-HostPool-VM-FSLogix Profile Less Than n% Free Space (hostpoolname) | 2% (1) / 5% (2) | Log Analytics | 5 min | 2/hostpool |
AVD-HostPool-VM-FSLogix Profile Failed due to Network Issue (hostpoolname) | (1) | Log Analytics | 5 min | 1/hostpool |
AVD-HostPool-VM-FSLogix Profile Service Disabled (hostpoolname) | (1) | Log Analytics | 5 min | 1/hostpool |
AVD-HostPool-VM-Health Check Failure (hostpoolname) | (1) | Log Analytics | 5 min | 1/hostpool |
AVD-HostPool-VM-High CPU nn Percent (hostpoolname) | 95 (1) / 85 (2) | Metric Alerts | 5 min | 2/hostpool |
AVD-HostPool-VM-Local Disk Free Space n% (hostpoolname) | 5 (1) / 10 (2) | Log Analytics | 15 min | 2/hostpool |
AVD-HostPool-VM-Personal Assigned Not Healthy (hostpoolname) | Any are Sev 1 | Log Analytics | 5 min | 1/hostpool |
AVD-HostPool-VM-OS Disk Bandwidth Avg n% (hostpoolname) | 95 (1) / 85 (2) | Metric Alerts | 5 min | 2/hostpool |
AVD-HostPool-VM-User Connection Failed (hostpoolname) | Any are Sev 3 | Log Analytics | 15 min | 1/hostpool |
AVD-HostPool-VM-Missing Critical Updates (hostpoolname) | Any are Sev 1 | Log Analytics | 1 day | 1/hostpool |
AVD-Storage-Low Space on ANF Share-XX Percent Remaining-{volumename} | 5 / 15 | Metric Alerts | 1 hour | 2/vol |
AVD-Storage-Low Space on Azure File Share-X% Remaining-{volumename} 1️⃣ | 5 / 15 | Log Analytics | 1 hour | 2/share |
AVD-Storage-Over XXms Latency for Storage Act-{storacctname} | 100ms / 50ms | Metric Alerts | 15 min | 2/stor acct |
AVD-Storage-Over XXms Latency Between Client-Storage-{storacctname} | 100ms / 50ms | Metric Alerts | 15 min | 2/stor acct |
AVD-Storage-Possible Throttling Due to High IOPs-{storacctname} | na / custom 2️⃣ | Metric Alerts | 15 min | 1/stor acct |
AVD-Storage-Azure Files Availability-{storacctname} | 99 / na | Metric Alerts | 5 min | 1/stor acct |
AVD-ServiceHealth-Health Advisory | na | Service Health | na | 4 |
AVD-ServiceHealth-Planned Maintenance | na | Service Health | na | 4 |
AVD-ServiceHealth-Security | na | Service Health | na | 4 |
AVD-ServiceHealth-Service Issue | na | Service Health | na | 4 |
NOTES:
1️⃣ Alert based on associated Automation Account / Runbook
2️⃣ See the following for custom condition. Note that both Standard and Premium values are incorporated into the alert rule. 'How to create an alert if a file share is throttled'
Service Health - The alert severity cannot be set or changed from 'Verbose'
Be sure to review the PostDeployment documentation as the alerts are deployed in a disabled state by default. This will guide you through how to see the alerts by adjusting the filter and enabling them.
The following parameters are optional:
- AlertNamePrefix (Default will be "AVD" if not used)
- StorageAccountResourceIds (Storage Account Alerts will not be deployed if not used)
- ANFVolumeResourceIds (Azure NetApp Files Volume Alerts will not be deployed if not used)
- Tags (No Tags will be set during deployment if not used)
New-AzDeployment `
-Location '<Azure location>' `
-TemplateFile 'https://raw.githubusercontent.com/Azure/avdaccelerator/main/workload/arm/brownfield/deployAlerts.json' `
-AlertNamePrefix '<Alert Name Prefix (Dash will be added after prefix for you.)>' `
-DistributionGroup '<The Distribution Group that will receive email alerts for AVD.>' `
-Environment '<Must be d, p, or t. (Developement, Production, Test) The environment is which these resources will be deployed.>' `
-HostPools '<Array Value surrounded by [] with list of comma seperated Host Pool Resource IDs>' `
-LogAnalyticsWorkspaceResourceId '<Resource ID of the Log Analytics Workspace used for AVD Insights>' `
-ResourceGroupName '<Resource Group to deploy the Alerts Solution in>' `
-ResourceGroupStatus '<Must be "New" or "Existing" denoting whether the Resource Group Name is existing or needs to be created>' `
-SessionHostsResourceGroupIds '<Array Value surrounded by [] with a list of comma seperated Resource IDs of the Resource Groups where AVD VMs reside>' `
-StorageAccountResourceIds '<Array Value surrounded by [] with a list of comma seperated Resource IDs of the Azure Storage Accounts>' `
-ANFVolumeResourceIds '<Array Value surrounded by [] with a list of comma seperated Resource IDs of the Azure NetApp Files Volumes>' `
-Tags '<Object value surrounded by {} with comma seperated key pairs for Tagging>' `
-Verbose
az deployment sub create \
--location '<Azure location>' \
--template-uri 'https://raw.githubusercontent.com/Azure/avdaccelerator/main/workload/arm/brownfield/deployAlerts.json' \
--parameters \
AlertNamePrefix '<Alert Name Prefix (Dash will be added after prefix for you.)>' \
DistributionGroup '<The Distribution Group that will receive email alerts for AVD.>' \
Environment '<Must be d, p, or t. (Developement, Production, Test) The environment is which these resources will be deployed.>' \
HostPools '<Array Value surrounded by [] with list of comma seperated Host Pool Resource IDs>' \
LogAnalyticsWorkspaceResourceId '<Resource ID of the Log Analytics Workspace used for AVD Insights>' \
ResourceGroupName '<Resource Group to deploy the Alerts Solution in>' \
ResourceGroupStatus '<Must be "New" or "Existing" denoting whether the Resource Group Name is existing or needs to be created>' \
SessionHostsResourceGroupIds '<Array Value surrounded by [] with a list of comma seperated Resource IDs of the Resource Groups where AVD VMs reside>' \
StorageAccountResourceIds '<Array Value surrounded by [] with a list of comma seperated Resource IDs of the Azure Storage Accounts>' \
ANFVolumeResourceIds '<Array Value surrounded by [] with a list of comma seperated Resource IDs of the Azure NetApp Files Volumes>' \
Tags '<Object value surrounded by {} with comma seperated key pairs for Tagging>'