{"id":15263,"date":"2021-07-08T07:07:52","date_gmt":"2021-07-08T11:07:52","guid":{"rendered":"https:\/\/www.eginnovations.com\/blog\/?p=15263"},"modified":"2026-08-04T06:47:45","modified_gmt":"2026-08-04T10:47:45","slug":"estimate-azure-monitor-costs-for-avd","status":"publish","type":"post","link":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/","title":{"rendered":"Estimating Azure Monitor Costs for AVD"},"content":{"rendered":"<div class=\"inner_content\">\n<h2><span class=\"ez-toc-section\" id=\"Using_Azure_Monitor_for_Monitoring_Azure_Virtual_Desktop_AVD_and_Estimating_Your_Costs\"><\/span>Using Azure Monitor for Monitoring Azure Virtual Desktop (AVD) and Estimating Your Costs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In my last blog, I wrote about how to set up <a href=\"https:\/\/www.eginnovations.com\/blog\/azure-monitor-avd\/\">Azure Monitor for WVD leveraging a Log Analytics Workspace<\/a>. In this next installment I\u2019ll cover how you can proceed from this point and add in thresholds on metrics and signals that when crossed will generate alerts which can trigger actions. As with most things in Azure, alerting is essentially PAYG so I will also cover some guidance on how you can start to estimate the costs of monitoring and alerting. Since my last blog Microsoft have changed the name of <a href=\"https:\/\/www.eginnovations.com\/blog\/azure-monitor-avd\/\">WVD (Windows Virtual Desktop)<\/a> to AVD (Azure Virtual Desktop). <a href=\"https:\/\/getnerdio.com\/academy\/what-is-azure-virtual-desktop-avd-heres-what-you-need-to-know\/\">An excellent overview of the reasons behind, and implications of, the change is available from Vadim Vladimirskiy at Nerdio<\/a>.<\/p>\n<p>Once you have set up a Log Analytics Workspace you will be able to setup and view various Dashboards or Workbooks in Azure Monitor or use other methods of visualizing and collating the data &#8211; for example, Power BI and Graphana are some of the integrations available. Azure dashboards are free to use so I am not going to cover them in this blog, <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/visualizations\">they are well-documented in the Microsoft documentation, here<\/a>. My ultimate goal is to try and work out how to calculate and estimate my end costs and Azure bill will be for monitoring and billing hence the emphasis on PAYG features.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/azure-monitor-avd\/\">In the previous blog<\/a>, \u00a0I started with an existing host pool named \u201cUKGROUP\u201d containing two WVD (now AVD &#8211; Azure Virtual Desktop) session hosts within a resource group \u201cegwvd\u201d located in the Azure region \u201cEast US 2\u201d, I connected them all into a Log Analytics Workspace named \u201cRachels-LogAnalyticsWorkspace\u201d and then added a 3<sup>rd<\/sup> session host. This is the configuration I will cover adding monitoring and alert thresholds to, today.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"What_you_can_monitor_and_raise_alerts_on_with_Azure_Monitor\"><\/span>What you can monitor and raise alerts on with Azure Monitor?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-15265\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-monitor.png\" alt=\"Man thinking about Azure Virtual Desktop monitoring\" width=\"400\" height=\"244\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-monitor.png 400w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-monitor-300x183.png 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-monitor-310x189.png 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-monitor-140x85.png 140w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/>At this point, it is worth familiarizing yourself with the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/\">Azure Monitor Documentation<\/a>. From the home page, you can navigate through the documentation tree on the left-hand side to \u201cHow-to-Guides&#8221; and then \u201cAlerts\u201d, however you should be aware that in addition to \u201cHow-to guides -&gt; Alerts\u201d you will probably want to familiarize yourself \u00a0 sections like \u201cHow-to guides -&gt; VM Insights -&gt; Alerts\u201d and possibly even \u201cHow-to-guides -&gt; Application Insights -&gt; Alerts&#8221; (Azure\u2019s APM monitoring).<\/p>\n<p>For the Azure Virtual Desktop host pool, in my last blog we configured collection of the default <strong>Performance counters<\/strong> and <strong>Windows event logs<\/strong>. Log alerts can be associated with any of these metrics and log events.<\/p>\n<p>There are also two types of log alerts in Azure Monitor associated with VM Insights (VM Insights being an optional agent you can install within the VMs in your Azure Virtual Desktop host pool, covered in my last blog:<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/alerts\/alerts-unified-log#count-of-the-results-table-rows\">Number of results alerts<\/a> create a single alert when a query returns at least a specified number of records. These are ideal for non-numeric data such and Windows and Syslog events collected by the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/agents\/log-analytics-agent\">Log Analytics agent<\/a> or for analyzing performance trends across multiple computers.<\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/alerts\/alerts-unified-log#calculation-of-measure-based-on-a-numeric-column-such-as-cpu-counter-value\">Metric measurement alerts<\/a> create a separate alert for each record in a query that has a value that exceeds a threshold defined in the alert rule. These alert rules are ideal for performance data collected by VM insights since they can create individual alerts for each computer.<\/li>\n<\/ul>\n<p>Beyond this if you are using Application Insights, there are alerting options with the smart detection module such as <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/app\/proactive-failure-diagnostics?WT.mc_id=Portal-Microsoft_Azure_Monitoring\">Failure Anomalies<\/a> that it may be helpful to review.<\/p>\n<p>The default <strong>Performance counter<\/strong> metrics (as of June 2021) for a WVD \/ Azure Virtual Desktop host are:<\/p>\n<table class=\"table_design numbers\" style=\"width: 100%;\">\n<tbody>\n<tr class=\"head_table\">\n<td><strong>Object name<\/strong><\/td>\n<td><strong>Counter name<\/strong><\/td>\n<td><strong>Instance<\/strong><\/td>\n<td><strong>Interval <\/strong><\/td>\n<\/tr>\n<tr>\n<td>LogicalDisk<\/td>\n<td>% Free Space<\/td>\n<td>C:<\/td>\n<td class=\"value\">60<\/td>\n<\/tr>\n<tr>\n<td>LogicalDisk<\/td>\n<td>Avg. Disk Queue Length<\/td>\n<td>C:<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>LogicalDisk<\/td>\n<td>Avg. Disk sec\/Transfer<\/td>\n<td>C:<\/td>\n<td class=\"value\">60<\/td>\n<\/tr>\n<tr>\n<td>LogicalDisk<\/td>\n<td>Current Disk Queue Length<\/td>\n<td>C:<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>Memory<\/td>\n<td>Available Mbytes<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>Memory<\/td>\n<td>Page Faults\/sec<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>Memory<\/td>\n<td>Pages\/sec<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>Memory<\/td>\n<td>% Committed Bytes In Use<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>PhysicalDisk<\/td>\n<td>Avg. Disk sec\/Read<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>PhysicalDisk<\/td>\n<td>Avg. Disk sec\/Transfer<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>PhysicalDisk<\/td>\n<td>Avg. Disk sec\/Write<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>PhysicalDisk<\/td>\n<td>Avg. Disk Queue Length<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>Processor Information<\/td>\n<td>% Processor Time<\/td>\n<td>_Total<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>RemoteFX Network<\/td>\n<td>Current TCP RTT<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>RemoteFX Network<\/td>\n<td>Current UDP Bandwidth<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>Terminal Services<\/td>\n<td>Active Sessions<\/td>\n<td>*<\/td>\n<td class=\"value\">60<\/td>\n<\/tr>\n<tr>\n<td>Terminal Services<\/td>\n<td>Inactive Sessions<\/td>\n<td>*<\/td>\n<td class=\"value\">60<\/td>\n<\/tr>\n<tr>\n<td>Terminal Services<\/td>\n<td>Total Sessions<\/td>\n<td>*<\/td>\n<td class=\"value\">60<\/td>\n<\/tr>\n<tr>\n<td>User Input Delay per Process<\/td>\n<td>Max Input Delay<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<tr>\n<td>User Input Delay per Session<\/td>\n<td>Max Input Delay<\/td>\n<td>*<\/td>\n<td class=\"value\">30<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In the initial release, Microsoft included some per-process metrics, these were subsequently removed as they were collected for every application for every user and formed 80% of the data (and hence cost), see <a href=\"https:\/\/techcommunity.microsoft.com\/t5\/windows-virtual-desktop\/updated-guidance-on-azure-monitor-for-wvd\/m-p\/2236173\">Updated guidance on Azure Monitor for WVD<\/a> for details.<\/p>\n<p>Some metrics that alerts can be set on are aggregated values and Alerts can be triggered by their constituent dimensions, billing is however per dimension. There is some fairly <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/essentials\/metrics-aggregation-explained\">heavyweight documentation around this available<\/a>. It is however something to be aware of if you are trying to evaluate the possible costs. We will cover more on this later.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_Costs_of_Monitoring_the_Azure_Virtual_Desktop_Service\"><\/span>The Costs of Monitoring the Azure Virtual Desktop Service<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-15268\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-virtual-desktop-monitoring-costs.jpg.png\" alt=\"AVD Monitoring Cost image\" width=\"101\" height=\"100\" border=\"0\" \/>Estimating Azure Monitoring costs for an Azure Virtual Desktop deployment is somewhat difficult to figure out, Microsoft Support themselves have answered this in their Support Q&amp;A \u201c<a href=\"https:\/\/docs.microsoft.com\/en-us\/answers\/questions\/319347\/how-to-get-cost-estimates-for-wvd-monitoring.html\">How to get Cost estimates for WVD Monitoring &#8211; Microsoft Q&amp;A<\/a>&#8221; by referring to a third-party blog from Tunecom consultant Jannick Dils &#8211; \u201c<a href=\"https:\/\/www.tunecom.be\/how-to-keep-control-over-your-windows-virtual-desktop-insights-logs-and-costs\/\">How to keep control over your Windows Virtual Desktop Insights logs and costs &#8211; Tunecom<\/a>&#8220;. It is an article both stunning in its depth and usefulness but also breath\u2013taking in the complexity of the steps that Jannick took to reach an estimate of costs around $14 a month per session host, after calculating that a VM would generate 14.5GB a month to be ingested. Jannick turned to <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-explorer\/kusto\/concepts\/\">kusto queries<\/a> to obtain some of the key variables need to make this estimate, which is no easy task. Beyond this, he also covers some very key caveats where it would be very easy to miscalculate costs by orders of magnitude. Many key session metrics collected can be expected to have multiple instances and a variable number of instances, for example per process metrics such as \u201c% Processor Time\u201d could easily be expected to have 50 instances associated with different processes. Additionally, metrics by default are configured to be collected at either 30 or 60 second intervals which complicates calculations further.<\/p>\n<p>In practice, for many metrics you will need as Jannick did to collect some real-world data for an extended length of time to obtain meaningful averages for metrics that vary significantly and\/or will have fluctuating numbers of multiple instances. The need to invest time and setup monitoring and then run it for a significant length of time to figure out if it\u2019s an affordable monitoring option is somewhat of a \u201cchicken and egg\u201d situation. You will also want to consider at this point what guest metrics you wish to collect within a VM, <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/vm\/monitor-vm-azure\">Monitor Azure virtual machines with Azure Monitor &#8211; Azure Monitor | Microsoft Docs<\/a>; in particular, it is likely that you may wish to enable \u201cVM Insights\u201d, see: <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/vm\/vminsights-enable-overview\">Enable VM insights overview &#8211; Azure Monitor | Microsoft Docs<\/a>. (I covered setting up VM insights in my previous blog).<\/p>\n<p>Within a Log Analytics Workspace there is a \u201cUsage and estimated\u201d costs tab from where you can click \u201cData Retention\u201d. Here you can indicate how long you want to store the data in the Log Analytics Workspace. By default, this is 30 days, but you can increase this to a maximum of 730 days. Users needing to change this would have to also factor the additional storage costs which will increase as you increase the number of days; the first 30 days of retention are free but beyond that there is a per GB retention cost per day. If you start fiddling with the <em>interval <\/em>on metrics like the <strong>Performance counters<\/strong> you will of course change the data volume and hence Log Analytics data costs.<\/p>\n<p>Now this is all very well but it is likely that you are also going to want to trigger alerts based upon threshold values for key metrics and alerts, and in turn actions triggered by alerts (e.g., email the Azure administrator) these are all also pay for features, you will pay a fee for each alert you set. If you want to go further and integrate alerts with ticketing systems such as ServiceNow there are also associated costs. At this point you probably want to think about how you will manage alerts and actions and what integrations you need.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Setting_up_my_First_Azure_Monitor_Alert\"><\/span>Setting up my First Azure Monitor Alert<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-15266\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-virtual-desktop-alert.jpg.png\" alt=\" Azure Virtual Desktop Alert image\" width=\"100\" height=\"100\" border=\"0\" \/>At this point I decided to set up some alerts based on threshold on the simple <strong>Performance counter<\/strong> metrics e.g. if VMs or Hosts reached 90% of capacity. Note this metric was configured to be collected in the default set every 30 seconds.<\/p>\n<p>Navigate via Azure &#8211; &gt; Monitor and select Alerts (<a href=\"https:\/\/portal.azure.com\/#blade\/Microsoft_Azure_Monitoring\/AzureMonitoringBrowseBlade\/alertsV2\">quick link, here<\/a>), from here you can manage existing alert rules or add a new alert rules. An Alert Rule consists of 4 parts:<\/p>\n<ul>\n<li><strong>Scope<\/strong>: What resource \/ resources to apply the test to e.g. a single VM, a pool of VMs etc<\/li>\n<li><strong>Condition<\/strong>: This includes the metric or signal to be tested and what conditions (the logic) are defined to trigger an alert. The metrics you can select from will be filtered by what you chose as the \u201cScope\u201d and you will need to be prepared to add a sensible value for thresholds of any numeric metric you choose.<\/li>\n<li><strong>Actions<\/strong>: send notifications or invoke actions when the alert rule triggers, by selecting or creating a new action group<\/li>\n<li><strong>Alert Rule Details:<\/strong> Including a name and description for the Alert Rule and a severity level<\/li>\n<\/ul>\n<p>The easiest way to get started and get a feel for the alert interface and capabilities is probably by adding a simple alert triggered by a basic numeric metric value crossing a threshold value within the Condition of the Alert Rule. I decided to add an alert on one of the Azure Virtual Desktop hosts if the performance counter <strong>\u201c% Processor Time\u201d<\/strong> exceeds 90%.<\/p>\n<p>Once one navigates to Alerts (<a href=\"https:\/\/portal.azure.com\/#blade\/Microsoft_Azure_Monitoring\/AzureMonitoringBrowseBlade\/alertsV2\">quick link, here<\/a>), you can filter on resource groups and resources, I found it was easier to follow what I was exploring by ignoring the filters for now and clicking directly on <strong>New Alert Rule<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm2-view.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm2.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm2.png 700w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm2-300x150.png 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm2-310x155.png 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm2-140x70.png 140w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>Now we will define the scope, this is where you have to be very careful, as all Azure resources will be an option, and there are options such as <strong>Host pools<\/strong> and <strong>Virtual Machines<\/strong> which will take you to the same hosts in your WVD \/ Azure Virtual Desktop pool but a completely different set of signals and metrics. You need to remember that we are trying to configure alerts that are triggered from the aggregated data within the Log Analytics Workspace which was set up in my earlier blog, namely \u201cRachels-LogAnalyticsWorkspace\u201d. Here I set the <strong>Scope<\/strong> to \u201cRachels-LogAnalyticsWorkspace\u201d, by selecting it and clicking <strong>Done<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm3-view.jpg\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm3.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Now that the Scope is set, we can explore how to set thresholds for the metric <strong>\u201c% Processor Time\u201d<\/strong>, cliick or hover over <strong>Add condition<\/strong>, and the <strong>Select a signal<\/strong> window will appear,<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm4-view.jpg\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm4.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Here I filtered on the <strong>Signal type<\/strong> to see metrics and then selected the <strong>\u201c% Processor Time\u201d <\/strong>by clicking on it.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm5-view.jpg\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm5.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Once you click on a specific signal or metric, you will see the <strong>Configure signal logic<\/strong> window, with a graph of the metric, now I had set the pool hosts up as a test hosts and as such it has had no real users or logged on sessions or applications running other than background processes and services so the recent \u201c% Processor Time\u201d has hovered around ~1.5% only, hardly a realistic load.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm6-view.jpg\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm6.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Note that this is an aggregated metric, i.e., the graph is showing the CPU usage averaged across all the hosts in the pool. At this point we need to consider what we wish to be alerted to, if we consider 90% CPU usage the threshold at which a host may have an issue, if 1 host is at 100% and 2 hosts are at 55% the average across the pool would only be 70% [(100+55+55)\/3)] and I think setting thresholds on this aggregated metric would mean no alert would be triggered. Ideally, I\u2019d want to set a threshold on every single host.<\/p>\n<p>Now scroll down you will find the option to <strong>Split by dimension<\/strong>. Here we can split this metric into the data for each individual hosts. If you explore the options under Dimension name, you will see many are essentially internal parts of the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/agents\/data-sources-performance-counters\">underlying xml data schema<\/a> which holds the data, although there is usually one human readable dimension, in this case \u201cComputer\u201d, which then allowed me to select the three hosts in my WVD \/ Azure Virtual Desktop pool. Note how I was informed that this is 3 separate metrics for the purposes of billing.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm7-view.jpg\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm7.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>In the next section, we can choose to set a Static or a Dynamic threshold. To set a Static threshold of 90%, I need to set the Operator to \u201cGreater than\u201d or \u201cGreater than or equal\u201d. There are also various fields associated with granularity and aggregation. I set my threshold thus:<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm8-view.jpg\" data-rel=\"lightbox-image-6\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm8.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Note that the console displays \u201cMonitoring 3 time series ($0.1\/time series)\u201d, i.e. for every static threshold set Azure will bill you $0.10 a month, if you wish to set a minimum threshold too e.g. an alert if your usage falls below 10% you will need to set a separate Alert which will also be billed at $0.10 (for a metric such as processor usage that normally wouldn\u2019t make sense but for some signals it would).<\/p>\n<p>Now at this point, rather than click <strong>Done<\/strong>. I decided to explore the Dynamic Thresholding capabilities by changing the metric type to Dynamic,<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm9-view.jpg\" data-rel=\"lightbox-image-7\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm9.png\" alt=\"\" width=\"413\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Note: how the cost per threshold increases \u201cMonitoring 3 time series ($0.2\/time series)\u201d, all Dynamic thresholds are charged at $0.20 per metric. If you can scroll up now you will see the thresholds imposed on the metric graph:<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm10-view.jpg\" data-rel=\"lightbox-image-8\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm10.png\" alt=\"\" width=\"413\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>At this point I thought \u201cwell fair enough on the $0.20\u201d as the Operator was set to \u201cGreater of less than\u201d, I.e. two thresholds were involved but changing this to \u201cGreater than\u201d, I found that it makes no difference the price is the same regardless of a single upper\/lower bound or using both.<\/p>\n<p>Overall, the thresholding options are reasonable with options to set windowing thresholds and control the sensitivity of dynamic thresholds, but you do need to have a reasonable understanding of threshold types. Many traditional EUC sys admin type tools are based on infrastructure monitoring paradigms and are limited to static thresholds &#8211; if a server hits 99% CPU for 10 data points in a row raise an alert. Dynamic thresholds and auto-baselining are more common in <a href=\"https:\/\/www.eginnovations.com\/blog\/aiops-artificial-intelligence-it-operations\/\">AIOps (Artificial Intelligence for IT Operations) platform-based monitoring such as eG Enterprise<\/a> where they are a key component of automated root cause analysis and anomaly detection. AIOps platforms use analytics and machine learning to learn what is normal for a system factoring in historical usage, time of day, seasonality and usual user behavior. In the case of the CPU used whilst protracted 80% usage may not be an infrastructure IT issue if 5% is more normal at 3am, the IT administrator will want to investigate as it could be a symptom of a security breach, or a new rogue batch job added to the system.<\/p>\n<p>My little test pool illustrates some of the issues associated with dynamic thresholding, the fact the pool hosts had minimal load means that the limits for alerts would be set at a rather implausible values around my historical ~1.5% usage. Fundamental limitations of Dynamic thresholds are exposed in <a href=\"https:\/\/searchitoperations.techtarget.com\/tip\/Monitoring-thresholds-determine-IT-performance-alerts\">an excellent TechTarget article by\u00a0Alistair Cooke<\/a> in which he covers the fact that <em>\u201cDynamic thresholds are not as intelligent as people. A dynamic monitoring setup can become confused when cyclic activity doesn&#8217;t happen according to usual patterns. For example, the support staff will get an alert that system load is low on a public holiday, because the users are at the beach instead of at their desks creating load.\u201d.<\/em><\/p>\n<table class=\"hand_table_style\" style=\"width: 100%;\">\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"lazy loaded\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2020\/09\/hand-symbol.png\" alt=\"\" width=\"48\" height=\"28\" border=\"0\" data-src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2020\/09\/hand-symbol.png\" data-was-processed=\"true\" \/><\/td>\n<td>\n<div style=\"line-height: 30px; font-family: 'Graphik-Regular';\">Both static and dynamic thresholding have limitations and enterprise monitoring solutions such as <a href=\"https:\/\/www.eginnovations.com\/product\/application-performance-monitoring\">eG Enterprise<\/a> <a href=\"https:\/\/www.eginnovations.com\/documentation\/Admin\/Types-of-Thresholds.htm\">combine both static and dynamic thresholds on many individual metrics and use strategies such as auto-static thresholding<\/a> to overcome the limitations and avoid consequences such as false-positive alerts and event \/ alert storms.<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If choosing Dynamic thresholds on Azure, it would be wise to run your system for a while, so the baselines are set based on realistic usage. For some metrics upper or lower limits make little sense for alerts e.g. for CPU usage a host being idle is rarely of interest so at this point I decided to return the static alert as configured above, by clicking <strong>Done<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm11-view.jpg\" data-rel=\"lightbox-image-9\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm11.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Having done this we return to the main pane, note that because I chose to monitor multiple hosts (dimensions) I am now informed that \u201cAlert rules that monitor multiple dimensions can include only one condition.\u201d. This means that if I did want to set a lower static threshold on all the hosts in the pool, I would need to set it up in an additional condition or I could choose to monitor the bounds of each host in their own separate conditions rather than all three (the later probably makes more sense but is tedious to set up manually).<\/p>\n<p>Now click on \u201cAdd action groups\u201d and the <strong>Add action groups<\/strong> pane will appear, now click on <strong>Create action group.<\/strong><\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm12-view.jpg\" data-rel=\"lightbox-image-10\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm12.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Select the resource group and choose a sensible name for the alert, note the displayed name will only be 12 chars long, which in an enterprise scenario could make it quite difficult to have meaningful names and schemas for alerts to indicate what resource they are associated with.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm13-view.jpg\" data-rel=\"lightbox-image-11\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm13.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Do not click, <strong>Review and create<\/strong> yet, instead use the tabs to set the properties of the action, on the Notification tab I chose to send an email to the \u201cAzure Resource Manager Role\u201d. At this point you may get asked if you want to enable the common schema, historically logs and metrics and other signals have had different formats for alerts and this enables them to use a common new format, if you are setting up your Azure environment from scratch you will probably want to enable the common schema, but since I was using a shared sandpit environment I left things as they were because I do not know whether others are relying on the old format. Click <strong>OK<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm14-view.jpg\" data-rel=\"lightbox-image-12\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm14.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Now choose a name, again hopefully meaningful.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm15-view.jpg\" data-rel=\"lightbox-image-13\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm15.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Beyond sending notifications when the metric threshold conditions are crossed, users can also associate a set of actions with the alert. At this point you might want to review the Actions tab, it is on this tab integrations with ITSM service helpdesk applications can be configured to set up automated Jira\/ServiceNow help desk tickets, there are costs with many of the actions\/integrations so you will need to investigate further if you are planning to do a helpdesk like integration. At this point I chose not to add actions beyond notifications and selected \u201c<strong>Review and Create\u201d<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm19-view.jpg\" data-rel=\"lightbox-image-14\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm19.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Review and hit <strong>Create<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm20-view.jpg\" data-rel=\"lightbox-image-15\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm20.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>Bizarrely, at this point, I was returned to a main dashboard with no sign of my new Alert rule. So, I had to repeat all my previous steps, however when I came to set up the Action group again, I found it had been created and so I didn\u2019t need to repeat that step. This type of things seemed to happen occasionally throughout my encounters with Azure.<\/p>\n<p>Finally, I set the <strong>Alert rule details <\/strong>and decided to set a warning level of 2 for the <strong>Severity<\/strong> and clicked <strong>Create alert rule<\/strong>.<\/p>\n<p>I was now returned to the Alert rule pane, selecting the <strong>Manage alert rules<\/strong> tab, I could finally see my created alert.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm22-view.jpg\" data-rel=\"lightbox-image-16\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm22.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm23-view.jpg\" data-rel=\"lightbox-image-17\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm23.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p>By default, in <a href=\"https:\/\/www.eginnovations.com\/product\/application-performance-monitoring\">eG Enterprise<\/a> we configure multiple warning levels and thresholds associated with a metric, so at this point I wanted to do similar but I\u2019m still unsure how to do this in Azure. Often, there is a need to set different threshold levels to map to different levels of severity of problems. The eG Enterprise system offers three levels of thresholds that correspond to the three alarm priorities &#8211; Critical, Major, and Minor. The user can specify three maximum and\/or three minimum threshold values in the format: Critical\/Major\/Minor, which allows for escalation and granularity. So far, the only way I\u2019ve found to do this is to create a whole new alert just with a different severity level, which would leave me with an alert storm issue as I could get a Critical\/Major and Minor alert for the same event.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Checking_the_Costs_of_Azure_Monitor_Alerts\"><\/span>Checking the Costs of Azure Monitor Alerts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Now assuming you follow the process above and set up alerts for every metric you need. You can check the overall costs via the Monitor blade (UI pane), scrolling down to find <strong>Usage and estimated costs<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm24-view.jpg\" data-rel=\"lightbox-image-18\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15273\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/avd-mm24.png\" alt=\"\" width=\"700\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"How_much_is_your_time_worth\"><\/span>How much is your time worth?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-15267\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-virtual-desktop-costs-message.jpg\" alt=\"Azure Virtual Desktop costs message\" width=\"330\" height=\"170\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-virtual-desktop-costs-message.jpg 330w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-virtual-desktop-costs-message-300x155.jpg 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-virtual-desktop-costs-message-310x160.jpg 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/06\/azure-virtual-desktop-costs-message-140x72.jpg 140w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/>At this point I gave up as it was just getting too complicated and time consuming and concluded that Rob Beekmans was correct that the best way would just be to run the analytics for a month and keep an eye on the costs whilst doing so.<\/p>\n<p>All the components are there to build your own monitoring and alerting system, but you really have to\u00a0 build it before you can work out if it is sufficient let alone how much it will cost. I experienced so many challenges to doing this even on my teeny tiny pool of single figures of hosts with a couple of VMs on each that I admitted defeat, although the exercise has given me a good idea of the challenges and things to consider if you are brave enough to try, challenges I see:<\/p>\n<ul>\n<li>To create something anyone else could use and maintain I would have to define templates, naming conventions (there are a lot of freeform text fields) and processes to enforce where there are none, the idea of documenting this is overwhelming.<\/li>\n<li>I\u2019m not sure how an organization could easily enforce or audit any written guidelines<\/li>\n<li>The volume of signals, logs and metrics is vast, and many have names that are frankly near meaningless; I didn\u2019t have sufficient knowledge to know what key metrics would alert me to problems and I was too scared of racking up a huge Azure bill to turn everything on and work that out retrospectively<\/li>\n<li>Adding alerts is a highly manual and time-consuming exercise, I imagine somehow you can automate this via some script voodoo magic but again it wouldn\u2019t be something you could easily handover to a helpdesk administrator<\/li>\n<li>The lack of tiered alerting \u2013 to recreate the multiple alert levels (minor, major, critical) we have in eG I think I would have to create multiple alerts on the same metric at different<\/li>\n<li>There\u2019s <a href=\"https:\/\/www.eginnovations.com\/blog\/event-correlation-analytics-and-artificial-intelligence\/\">no root cause analysis or alert filtering\/correlation<\/a> built into the alert system.<\/li>\n<li>There\u2019s no obvious mechanism to <a href=\"https:\/\/www.eginnovations.com\/product\/capabilities\/alerts\">combine Static and Dynamic thresholds a<\/a>s offered by enterprise monitoring tools, so whilst there is a degree of anomaly detection available tuning and avoiding alert storms will be extremely tricky.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Conclusions\"><\/span>Conclusions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>I thought someone else must have already done this, however I found remarkably little helpful information regarding automating the setup of Monitor alerts. Stanislav Zhelyazkov blog was rare in that it described <a href=\"https:\/\/cloudadministrator.net\/about\/\">how to script the setup<\/a>.<\/li>\n<li>The level of analytics available and historical data in Azure Monitor is very good, but I came to the conclusion that Monitor isn\u2019t really a monitoring solution more a monitoring framework (it\u2019s kind of like the Kubernetes of monitoring). Plus, there\u2019s the fundamental challenge that to use Azure Monitor you have to be able to access Azure, how do you know what is going on when users report issues and Azure is down in your region? Monitoring Azure availability and performance within Azure itself alone will not be enough.<\/li>\n<li><a href=\"https:\/\/twitter.com\/robbeekmans\/status\/1384889370608611329?s=20\">Rob Beekmans was right<\/a> &#8211; \u201cI think one of the issues deploying on cloud is that there is no good prediction of actual costs to come. I&#8217;ve been looking into this for a customer and I don&#8217;t see how you can know, as a customer, know what your monitoring\/analytics bill will be without just running for a month\u201d<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Further_information\"><\/span>Further information<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>For information on eG Innovations\u2019 support for digital workspaces on Azure, please see \u201c<a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/azure-virtual-desktop-monitoring-avd\">Azure Monitoring Tools and Solutions from eG Enterprise<\/a>\u201d.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Using Azure Monitor for Monitoring Azure Virtual Desktop (AVD) and Estimating Your Costs In my last blog, I wrote about how to set up Azure Monitor for WVD leveraging a Log Analytics Workspace. In this next installment I\u2019ll cover how you can proceed from this point and add in thresholds on metrics and signals that [&hellip;]<\/p>\n","protected":false},"author":30,"featured_media":20861,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[404,387,362],"tags":[421,865,638,867,866,785,864,415,257,260,261,265,266],"class_list":["post-15263","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-monitoring","category-digital-workspace-monitor","category-vdi-monitoring","tag-avd","tag-avd-alerts","tag-azure-monitor","tag-azure-monitor-alerting","tag-azure-monitor-alerts","tag-azure-monitor-cost","tag-azure-monitor-for-avd","tag-azure-monitoring","tag-vdi","tag-vdi-monitor","tag-vdi-monitoring","tag-virtual-desktop","tag-virtual-desktop-monitoring"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Estimating Azure Monitor Cost for AVD Monitoring<\/title>\n<meta name=\"description\" content=\"Azure monitor is a popular tool for monitoring any AVD deployment. Learn why estimating the cost of Azure monitor is important.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Virtual Desktop Monitoring \u2013 AVD Monitoring | eG Innovations\" \/>\n<meta property=\"og:description\" content=\"Learn how to add in thresholds on metrics and signals that when crossed will generate alerts in AVD which can trigger actions. From the world\u2019s leader in IT Monitoring.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/\" \/>\n<meta property=\"og:site_name\" content=\"eG Innovations\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eGInnovations\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-08T11:07:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-04T10:47:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Socialbanner.jpg\" \/>\n<meta name=\"author\" content=\"Rachel Berry\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Azure Virtual Desktop Monitoring \u2013 AVD Monitoring | eG Innovations\" \/>\n<meta name=\"twitter:description\" content=\"Learn how to add in thresholds on metrics and signals that when crossed will generate alerts in AVD which can trigger actions. From the world\u2019s leader in IT Monitoring.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Socialbanner.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/rhbBSE\/\" \/>\n<meta name=\"twitter:site\" content=\"@eginnovations\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rachel Berry\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Estimating Azure Monitor Cost for AVD Monitoring","description":"Azure monitor is a popular tool for monitoring any AVD deployment. Learn why estimating the cost of Azure monitor is important.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/","og_locale":"en_US","og_type":"article","og_title":"Azure Virtual Desktop Monitoring \u2013 AVD Monitoring | eG Innovations","og_description":"Learn how to add in thresholds on metrics and signals that when crossed will generate alerts in AVD which can trigger actions. From the world\u2019s leader in IT Monitoring.","og_url":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/","og_site_name":"eG Innovations","article_publisher":"https:\/\/www.facebook.com\/eGInnovations","article_published_time":"2021-07-08T11:07:52+00:00","article_modified_time":"2026-08-04T10:47:45+00:00","og_image":[{"url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Socialbanner.jpg","type":"","width":"","height":""}],"author":"Rachel Berry","twitter_card":"summary_large_image","twitter_title":"Azure Virtual Desktop Monitoring \u2013 AVD Monitoring | eG Innovations","twitter_description":"Learn how to add in thresholds on metrics and signals that when crossed will generate alerts in AVD which can trigger actions. From the world\u2019s leader in IT Monitoring.","twitter_image":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Socialbanner.jpg","twitter_creator":"@https:\/\/twitter.com\/rhbBSE\/","twitter_site":"@eginnovations","twitter_misc":{"Written by":"Rachel Berry","Est. reading time":"23 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#article","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/"},"author":{"name":"Rachel Berry","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/1a4ada024f10e3a5d8df35ab2e58840d"},"headline":"Estimating Azure Monitor Costs for AVD","datePublished":"2021-07-08T11:07:52+00:00","dateModified":"2026-08-04T10:47:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/"},"wordCount":4047,"commentCount":0,"publisher":{"@id":"https:\/\/www.eginnovations.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Thumbnail.jpg","keywords":["AVD","AVD alerts","Azure Monitor","Azure monitor alerting","Azure monitor alerts","Azure Monitor cost","Azure Monitor for AVD","Azure Monitoring","VDI","VDI Monitor","VDI Monitoring","virtual desktop","Virtual Desktop Monitoring"],"articleSection":["Azure Monitoring","Digital Workspace Monitoring","VDI Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/","url":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/","name":"Estimating Azure Monitor Cost for AVD Monitoring","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#primaryimage"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Thumbnail.jpg","datePublished":"2021-07-08T11:07:52+00:00","dateModified":"2026-08-04T10:47:45+00:00","description":"Azure monitor is a popular tool for monitoring any AVD deployment. Learn why estimating the cost of Azure monitor is important.","breadcrumb":{"@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#primaryimage","url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Thumbnail.jpg","contentUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2021\/07\/AVD-Thumbnail.jpg","width":362,"height":235},{"@type":"BreadcrumbList","@id":"https:\/\/www.eginnovations.com\/blog\/estimate-azure-monitor-costs-for-avd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.eginnovations.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Estimating Azure Monitor Costs for AVD"}]},{"@type":"WebSite","@id":"https:\/\/www.eginnovations.com\/blog\/#website","url":"https:\/\/www.eginnovations.com\/blog\/","name":"eG Innovations","description":"IT Performance Monitoring Insights","publisher":{"@id":"https:\/\/www.eginnovations.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.eginnovations.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.eginnovations.com\/blog\/#organization","name":"eG Innovations","alternateName":"eg innovations","url":"https:\/\/www.eginnovations.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2014\/07\/eg-logo-dark-gray1_new.jpg","contentUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2014\/07\/eg-logo-dark-gray1_new.jpg","width":362,"height":235,"caption":"eG Innovations"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eGInnovations","https:\/\/x.com\/eginnovations"]},{"@type":"Person","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/1a4ada024f10e3a5d8df35ab2e58840d","name":"Rachel Berry","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/04d3d41fd89b2c0738787702d522fed6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/04d3d41fd89b2c0738787702d522fed6?s=96&d=mm&r=g","caption":"Rachel Berry"},"sameAs":["https:\/\/x.com\/https:\/\/twitter.com\/rhbBSE\/"],"url":"https:\/\/www.eginnovations.com\/blog\/author\/rachel-berry\/"}]}},"modified_by":"eG Innovations","_links":{"self":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/15263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/comments?post=15263"}],"version-history":[{"count":2,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/15263\/revisions"}],"predecessor-version":[{"id":40427,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/15263\/revisions\/40427"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media\/20861"}],"wp:attachment":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media?parent=15263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/categories?post=15263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/tags?post=15263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}