Azure Monitor for AVD
Complete the full lesson to earn 25 points
Work through each section, then tap “Mark as Complete” on the last one.
✦ Skip the page breaks 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.
Enjoying the courses?
Everything stays free. Pro shows fewer ads, doubles your daily points limit so you progress twice as fast, and lets you read each lesson on one page.
- ✓ Fewer advertisements
- ✓ 2× daily points limit
- ✓ Distraction-free lessons