Azure Monitor for AVD
Complete the full lesson to earn 25 points — 50 with Pro
Work through each section, then tap “Mark as Complete” on the last one.
✦ Skip the page breaks, the wait, and see fewer ads — read each lesson on a single page with Pro
Azure Monitor for Azure Virtual Desktop (AVD)
Introduction: Why Monitoring AVD Matters
In the modern enterprise, the digital workspace is the primary interface through which employees interact with corporate resources. Azure Virtual Desktop (AVD) has become a cornerstone of this strategy, allowing organizations to provide secure, flexible, and scalable remote desktop experiences. However, the complexity of a virtualized environment—spanning network connectivity, session hosts, user profiles, and application delivery—means that issues are inevitable. Without a structured approach to monitoring, you are essentially flying blind, reacting to user complaints rather than proactively identifying and resolving performance bottlenecks before they impact productivity.
Azure Monitor for AVD is not just a dashboard; it is a comprehensive telemetry engine designed specifically to provide visibility into the health and performance of your virtual desktop infrastructure. By integrating with Log Analytics and Azure Workbooks, it allows administrators to track user connection quality, session latency, host pool health, and resource utilization. Understanding these metrics is vital because AVD user experience is highly sensitive to latency and resource contention. A delay of even a few milliseconds can turn a perfectly functional virtual desktop into a source of frustration for an end-user.
This lesson will guide you through the intricacies of setting up, configuring, and interpreting the data provided by Azure Monitor for AVD. We will move beyond the basic installation and explore how to create custom alerts, diagnose connection failures, and optimize your host pool configuration based on real-world telemetry. Whether you are an infrastructure administrator or a support specialist, mastering these tools will significantly reduce your time-to-resolution and improve the overall stability of your remote desktop environment.
Understanding the Architecture of AVD Monitoring
To monitor AVD effectively, you must first understand the flow of data. AVD is a managed service, meaning Microsoft handles the control plane (the components that broker connections, manage the web access, and handle diagnostics). However, you are responsible for the session hosts—the virtual machines (VMs) where your users’ applications actually run. The monitoring data is collected from three primary sources: the AVD service itself, the operating system of the virtual machines, and the network connectivity between the user and the virtual desktop.
The heart of this architecture is the Log Analytics workspace. When you enable diagnostics for your AVD environment, the service sends logs (such as connection attempts, error codes, and management activities) to this workspace. Simultaneously, the Azure Monitor agent (AMA) installed on your session hosts sends performance data (CPU, memory, disk I/O) to the same workspace. By correlating these two streams of data, you gain a unified view of the environment. If a user reports that their session is slow, you can look at the connection logs to see if there was a high round-trip time (RTT) and then check the session host logs to see if the CPU was pinned at 100% during that exact timeframe.
Callout: The Difference Between Diagnostics and Telemetry It is important to distinguish between diagnostics and telemetry in AVD. Diagnostics refer to the events generated by the AVD service when a user attempts to connect or when a management action occurs. Telemetry, on the other hand, refers to the performance metrics collected from the session host virtual machines, such as process-level resource consumption or disk latency. Effective monitoring requires both to build a complete picture of why a user might be experiencing issues.
Step-by-Step: Enabling Azure Monitor for AVD
Before you can analyze your environment, you must configure the data collection process. This involves setting up a Log Analytics workspace and configuring diagnostic settings for your host pools.
1. Create a Log Analytics Workspace
The Log Analytics workspace is the centralized repository for all your AVD logs and metrics.
- Navigate to the Azure Portal and search for "Log Analytics workspaces."
- Select "Create" and choose your subscription, resource group, and a region that matches your AVD deployment.
- Provide a name for the workspace and proceed to the "Review + create" tab.
- Once deployed, take note of your Workspace ID, as you will need this for agent configuration.
2. Configure Diagnostic Settings
Diagnostic settings tell the AVD service which logs to send to your workspace.
- Open your AVD Host Pool in the Azure portal.
- Select "Diagnostic settings" from the left-hand menu.
- Select "Add diagnostic setting."
- Name the setting and check the boxes for the categories you want to collect, such as
Checkpoint,Error,Management, andConnection. - Under "Destination details," select "Send to Log Analytics workspace" and pick the workspace you created in the previous step.
3. Deploy the Azure Monitor Agent (AMA)
To get performance metrics from your session hosts, the virtual machines must have the Azure Monitor Agent installed.
- Go to "Azure Monitor" in the portal and select "Data Collection Rules."
- Create a new Data Collection Rule (DCR) that targets the resource group where your session hosts reside.
- In the "Resources" tab, add your session host virtual machines.
- In the "Collect and deliver" tab, select "Performance counters" and choose metrics like
LogicalDisk,Memory, andProcessor. - Save the rule. The agent will automatically deploy and begin sending data to your workspace.
Tip: Use Azure Policy for Automated Deployment In large-scale environments, manually installing agents on every new virtual machine is prone to error and time-consuming. Instead, use Azure Policy to assign the "Deploy Azure Monitor Agent" policy to your resource group or subscription. This ensures that every new VM created in your environment is automatically onboarded to your monitoring configuration without manual intervention.
Analyzing AVD Metrics: What to Look For
Once data begins flowing into your Log Analytics workspace, you can use the built-in "Azure Monitor for AVD" workbook to visualize the health of your environment. This workbook provides a pre-built interface that aggregates the most critical information, but you should also learn to query the data directly using Kusto Query Language (KQL).
Key Metrics for Performance Monitoring
Monitoring is only useful if you know which metrics indicate a healthy state versus a struggling one. Focus your attention on these areas:
- Round Trip Time (RTT): This is the most critical metric for user satisfaction. It measures the latency between the user's client and the session host. A consistent RTT under 100ms is generally considered good; anything over 200ms will result in noticeable input lag.
- CPU and Memory Utilization: If your session hosts are consistently running at high CPU or memory utilization, it indicates that the VMs are undersized for the workload. This leads to contention, where one user's heavy application slows down every other user on that same host.
- Connection Success Rate: This tracks how many connection attempts are successful versus failed. A spike in failed connections usually points to an issue with network security rules, identity provider outages, or misconfigured host pools.
- Logon Duration: This measures how long it takes for a user to reach their desktop after clicking the icon. Long logon durations are often caused by slow profile loading (FSLogix issues) or complex Group Policy Object (GPO) processing.
Example KQL Query for Connection Latency
If you want to find users experiencing high latency, you can run the following query in your Log Analytics workspace:
WVDConnections
| where TimeGenerated > ago(24h)
| summarize AvgRTT = avg(RoundTripTime), MaxRTT = max(RoundTripTime) by UserName
| where MaxRTT > 200
| sort by MaxRTT desc
This query filters for connection data from the last 24 hours, calculates the average and maximum round-trip times for each user, and identifies users who experienced a latency peak above 200ms. This is a powerful way to identify "trouble spots" in your network or specific user locations that are struggling with bandwidth.
Troubleshooting Common Issues with Azure Monitor
Even with perfect monitoring, you will encounter scenarios where the data points to a problem, but the solution isn't immediately obvious. Let’s walk through how to approach common AVD issues using your monitoring data.
Scenario: The "Slow Desktop" Complaint
When a user complains that their desktop is slow, start by checking the WVDConnections table to verify their RTT. If their RTT is low (e.g., 30ms), the network is not the problem. Next, move to the InsightsMetrics table to check the performance of the session host they were logged into at that time.
InsightsMetrics
| where TimeGenerated > ago(1h)
| where Computer == "YourSessionHostName"
| where Name == "UtilizationPercentage"
| summarize avg(Val) by bin(TimeGenerated, 5m)
If the CPU utilization is consistently high, you have a resource contention issue. You can drill down further by checking the processes running on that VM to see if one specific application is consuming excessive resources.
Scenario: High Logon Times
Logon times are often tied to the underlying profile solution, such as FSLogix. If you notice that users are taking minutes to log in, query the WVDCheckpoints table to see where the process is hanging.
WVDCheckpoints
| where TimeGenerated > ago(24h)
| where Name == "InitialProfileLoad"
| project TimeGenerated, UserName, DurationMs
| sort by DurationMs desc
If the DurationMs is high, you should investigate your storage backend (e.g., Azure Files or NetApp Files) to ensure that the profile containers are not experiencing high latency during the read/write operations.
Warning: Data Retention Costs Log Analytics stores data based on the amount of data ingested and the duration of retention. If you enable verbose logging for every single connection and process, your storage costs can scale rapidly. Always configure a retention policy that balances your compliance needs with your budget, and consider using "Basic Logs" for high-volume, low-value data to save on costs.
Best Practices for Maintaining AVD Health
Monitoring is not a "set it and forget it" task. To maintain a healthy AVD environment, you need to integrate monitoring into your operational routine.
1. Proactive Alerting
Don't wait for users to report issues. Configure alerts in Azure Monitor to notify your team when key metrics cross a threshold. For example, set an alert that triggers an email or a webhook to your ticketing system if the average CPU utilization across a host pool exceeds 80% for more than 15 minutes.
2. Standardize Your Workbooks
Create a set of standard workbooks that your support team uses to troubleshoot common issues. By creating a custom "Support Dashboard," you can hide the complexity of KQL queries and provide simple dropdowns for selecting users, time ranges, and host pools. This empowers frontline support staff to resolve issues without needing deep knowledge of the underlying infrastructure.
3. Monitor the Storage Backend
Many AVD administrators focus entirely on the virtual machines and forget the storage. Since AVD relies heavily on profile containers (FSLogix), the performance of your Azure Files or NetApp Files share is a hidden bottleneck. Include storage latency metrics in your Azure Monitor dashboards to ensure that your profile access is not the cause of slow logons or application crashes.
4. Regular Review of Connection Logs
Once a week, review the connection logs for patterns. Are there specific times of day when connection failures spike? Are there specific locations or ISPs that consistently show high latency? This data is invaluable for capacity planning and network architecture improvements.
Comparison Table: Monitoring Options
| Feature | Azure Monitor for AVD | Third-Party Monitoring Tools |
|---|---|---|
| Integration | Native, deep integration with Azure | Often requires agents or API connectors |
| Cost | Pay-per-GB ingested | Usually subscription-based, can be expensive |
| Complexity | Requires KQL knowledge | Often provides "out-of-the-box" insights |
| Customization | Unlimited via KQL and Workbooks | Limited to what the vendor provides |
| Alerting | Integrated with Azure Monitor Alerts | Often has sophisticated correlation engines |
Common Mistakes and How to Avoid Them
Even experienced administrators can fall into traps when managing AVD monitoring. Here are the most common mistakes and how to steer clear of them.
Mistake 1: Not Monitoring the "Quiet" Times
Many administrators only check their dashboards during business hours when they know the system is under load. However, the most critical issues—such as failed automated scaling events or patch management errors—often happen at night. Ensure your alerts are configured to monitor the environment 24/7, even when usage is low.
Mistake 2: Ignoring User Feedback
Logs don't always tell the whole story. A user might experience an issue that doesn't trigger a "Critical" event in the logs, such as an application that feels "sluggish" despite low CPU usage. Always correlate your technical monitoring data with qualitative user feedback to identify subtle performance issues that aren't immediately apparent in the metrics.
Mistake 3: Over-Alerting (Alert Fatigue)
If your inbox is flooded with low-priority alerts, you will eventually start ignoring them. This is known as "alert fatigue." Be selective about what you trigger an alert for. Focus on actionable events—things that require an administrator to actually do something—rather than informational notices that can be reviewed during a weekly report.
Mistake 4: Failing to Test the Monitoring Setup
It is a common error to assume that because you have configured the diagnostic settings, the data is flowing correctly. Periodically "simulate" a failure—such as intentionally triggering a connection error or temporarily disconnecting a host—to verify that your logs are populating and your alerts are firing as expected.
Deep Dive: Advanced KQL for AVD Troubleshooting
To truly master AVD monitoring, you must move beyond basic queries. Let's look at a more complex scenario: identifying the "noisy neighbor" on a multi-session host.
When multiple users share a single VM, one user running a resource-heavy application (like a web browser with dozens of tabs or a CAD tool) can degrade the experience for everyone. You can use the InsightsMetrics data to identify these individuals.
// Identify the top 5 users by CPU consumption on a specific host
let HostName = "AVD-SessionHost-01";
InsightsMetrics
| where TimeGenerated > ago(1h)
| where Computer == HostName
| where Namespace == "Processor" and Name == "UtilizationPercentage"
| summarize AvgCPU = avg(Val) by bin(TimeGenerated, 5m), Computer
| join kind=inner (
// This assumes you have process-level tracking enabled
Perf
| where ObjectName == "Process" and CounterName == "% Processor Time"
| summarize MaxProcessCPU = max(CounterValue) by InstanceName, Computer
) on Computer
| sort by MaxProcessCPU desc
| take 5
This query joins performance metrics with process-level data. By identifying the process name, you can often pinpoint exactly which application is causing the contention. This level of granularity allows you to contact the specific user or restrict the application's resource usage, rather than rebooting the entire host and disrupting all users.
Managing Session Host Performance at Scale
In a large environment with hundreds or thousands of session hosts, monitoring individual VMs is impossible. Instead, you must rely on "Aggregated Views." Azure Monitor for AVD provides this through the "Host Pool Health" view in the workbook.
Utilizing Host Pool Health Metrics
The Host Pool Health view aggregates data across all VMs in a pool. You should monitor:
- Active Sessions: How many users are currently logged in?
- Disconnected Sessions: A high number of disconnected sessions can indicate that users are not properly logging off, which consumes resources and locks profile containers.
- Host Availability: Are there hosts that are "Unavailable" or "Upgrading"? This is vital for ensuring your scaling plan is working correctly.
Callout: The Importance of User Logoffs A common issue in AVD is "zombie sessions," where a user closes the window without signing out. This keeps the session active on the host, consuming RAM and preventing the FSLogix profile container from detaching correctly. Use Group Policy to automatically disconnect idle sessions after a set period, and monitor the
WVDConnectionstable to track how many users are leaving sessions in a "Disconnected" state for extended periods.
Best Practices Summary
- Standardize Data Collection: Use Data Collection Rules (DCRs) to ensure consistent telemetry across your entire fleet.
- Automate Everything: Use Azure Policy for agent installation and Infrastructure-as-Code (Terraform or Bicep) for deploying diagnostic settings.
- Focus on the User Experience: Prioritize RTT, logon duration, and application responsiveness over raw server metrics.
- Implement Proactive Alerting: Set thresholds that trigger actions, not just emails, to reduce time-to-resolution.
- Maintain a Clean Environment: Regularly review logs to identify and address "zombie" sessions and misconfigured scaling plans.
- Review Costs Regularly: Audit your Log Analytics workspace to ensure you aren't paying for unnecessary log ingestion.
- Document Your Findings: Create a knowledge base for common issues found via monitoring so that your support team can resolve recurring problems quickly.
Final Key Takeaways
- Visibility is the Foundation: You cannot optimize what you cannot see. Azure Monitor for AVD provides the essential telemetry to understand the health of your virtual desktop environment.
- Telemetry and Diagnostics Work Together: You need both the AVD service logs (for connection issues) and the VM-level performance metrics (for resource issues) to diagnose the root cause of user complaints.
- KQL is Your Best Friend: Mastering Kusto Query Language allows you to extract deep insights from your data, enabling you to identify "noisy neighbors," track logon trends, and troubleshoot latency spikes.
- Proactive vs. Reactive: Use alerts to identify potential issues before they become widespread outages. A well-monitored environment is one where you fix problems before users even notice them.
- Focus on the End User: Always prioritize metrics that impact the user experience, such as Round Trip Time and logon duration, over purely technical metrics like CPU usage.
- Continuous Improvement: Monitoring is an iterative process. Regularly review your dashboards, refine your alerts, and update your configuration to ensure the environment continues to meet business needs as it scales.
- Cost Awareness: Keep an eye on log ingestion costs. Monitoring is valuable, but it should be implemented in a way that respects the overall budget of the AVD deployment.
By following these principles and leveraging the tools within the Azure ecosystem, you can transition from an environment defined by constant fire-fighting to one characterized by stability, performance, and reliability. This proactive approach not only improves the user experience but also allows you to manage your infrastructure with confidence and precision.
Reach the last section to complete this lesson and earn points — you're on section 1 of 11.
- Network Capacity and Speed Requirements
- Network Capacity and Speed Requirements Quiz5q
- Network Configuration for Session Hosts
- Network Configuration for Session Hosts Quiz5q
- RDP Shortpath and Multipath
- RDP Shortpath and Multipath Quiz5q
- Quality of Service Policies
- Quality of Service Policies Quiz5q
- Azure Private Link for AVD
- Azure Private Link for AVD Quiz5q
- Network Connectivity Troubleshooting
- Network Connectivity Troubleshooting Quiz5q
- Resource Groups and Subscriptions
- Resource Groups and Subscriptions Quiz5q
- Operating System Selection
- Operating System Selection Quiz5q
- Licensing Models for AVD
- Licensing Models for AVD Quiz5q
- Host Pool Architecture
- Host Pool Architecture Quiz5q
- Performance Configuration
- Performance Configuration Quiz5q
- VM Capacity Requirements
- VM Capacity Requirements Quiz5q
- Create Host Pools via Portal
- Create Host Pools via Portal Quiz5q
- Automate with PowerShell and CLI
- Automate with PowerShell and CLI Quiz5q
- ARM Templates and Bicep
- ARM Templates and Bicep Quiz5q
- Host Pool and Session Host Settings
- Host Pool and Session Host Settings Quiz5q
- Session Host Licensing
- Session Host Licensing Quiz5q
- Identity Scenarios Overview
- Identity Scenarios Overview Quiz5q
- AD DS and Microsoft Entra ID
- AD DS and Microsoft Entra ID Quiz5q
- Microsoft Entra Domain Services
- Microsoft Entra Domain Services Quiz5q
- Azure RBAC for AVD
- Azure RBAC for AVD Quiz5q
- Conditional Access Policies
- Conditional Access Policies Quiz5q
- Authentication Options
- Authentication Options Quiz5q
- Single Sign-On Configuration
- Single Sign-On Configuration Quiz5q
- Microsoft Defender for Cloud
- Microsoft Defender for Cloud Quiz5q
- Microsoft Defender Antivirus
- Microsoft Defender Antivirus Quiz5q
- Microsoft Defender for Endpoint
- Microsoft Defender for Endpoint Quiz5q
- Network Security for AVD
- Network Security for AVD Quiz5q
- Azure Bastion and JIT Access
- Azure Bastion and JIT Access Quiz5q
- Windows Threat Protection
- Windows Threat Protection Quiz5q
- Confidential VMs and Trusted Launch
- Confidential VMs and Trusted Launch Quiz5q
- AVD Client Selection
- AVD Client Selection Quiz5q
- Client Deployment Methods
- Client Deployment Methods Quiz5q
- Device Redirection
- Device Redirection Quiz5q
- Multimedia Redirection
- Multimedia Redirection Quiz5q
- Printing and Universal Print
- Printing and Universal Print Quiz5q
- RDP Properties Configuration
- RDP Properties Configuration Quiz5q
- Start VM on Connect
- Start VM on Connect Quiz5q
- Session Timeout Properties
- Session Timeout Properties Quiz5q
- Personal Desktop Assignment
- Personal Desktop Assignment Quiz5q
- Application Deployment Methods
- Application Deployment Methods Quiz5q
- Application Groups
- Application Groups Quiz5q
- RemoteApp Publishing
- RemoteApp Publishing Quiz5q
- Microsoft 365 Apps
- Microsoft 365 Apps Quiz5q
- OneDrive Configuration
- OneDrive Configuration Quiz5q
- Microsoft Teams on AVD
- Microsoft Teams on AVD Quiz5q
- App Attach Configuration
- App Attach Configuration Quiz5q
- Browser Configuration
- Browser Configuration Quiz5q
- Log Collection and Analysis
- Log Collection and Analysis Quiz5q
- Azure Monitor for AVD
- Azure Monitor for AVD Quiz5q
- AVD Insights Workbooks
- AVD Insights Workbooks Quiz5q
- Session Host Optimization
- Session Host Optimization Quiz5q
- Autoscaling Host Pools
- Autoscaling Host Pools Quiz5q
- Session and Application Management
- Session and Application Management Quiz5q
- Session Host Update Strategy
- Session Host Update Strategy Quiz5q
- Disaster Recovery Planning
- Disaster Recovery Planning Quiz5q
- Multi-Region Implementation
- Multi-Region Implementation Quiz5q
- Backup Strategy for AVD
- Backup Strategy for AVD Quiz5q
- FSLogix Profile Backup
- FSLogix Profile Backup Quiz5q
- Image Backup and Restore
- Image Backup and Restore Quiz5q
Enjoying the courses?
Everything stays free. Pro shows fewer ads, doubles the points you earn on every lesson and quiz so you progress twice as fast, unlocks half of every practice exam — plus full case studies — with the Learn & Exam study modes, and lets you read each lesson on one page.
- ✓ Fewer advertisements
- ✓ 2× points per lesson & quiz
- ✓ 50% of every exam unlocked
- ✓ Learn & Exam modes
- ✓ Distraction-free lessons