Monitor free disk space on Azure VM
This is not possible today through Azure Portal or Azure Monitor. Free disk space is a guest OS performance counter. If this is a Windows VM, you can use the Windows Azure Diagnostics (WAD) agent to collect performance counters to either Azure Storage table and/or EventHub and setup custom tool to monitor this data. If this is a Linux VM, there is also the equivalent Linux Diagnostic Extension.
Here are some relevant links on WAD -
https://docs.microsoft.com/en-us/azure/virtual-machines/virtual-machines-windows-extensions-diagnostics-template?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/azure-diagnostics-streaming-event-hubs
Update 2019
This is possible today. To monitor free disk space per drive with Azure Monitor do the following:
- Enable Guest Operating System OS Metrics for the VM.
- In the Azure Portal select the Virtual Machine.
- Click Diagnostics Settings (under Monitoring).
- Click the Performance counters tab.
- Click the Custom button.
- In the textbox add the custom metric for the drive you would like. e.g.
\LogicalDisk(C:)\% Free Space
. - Click Add and set the Unit to
Percent
.
Source: Azure Support.
To view the logs from the Azure Guest Monitor for Linux:
// Virtual Machine free disk space
// Show the latest report of free disk space, per instance
InsightsMetrics
| where Name == "FreeSpacePercentage"
| summarize arg_max(TimeGenerated, *) by Tags
// arg_max over TimeGenerated returns the latest record
| project TimeGenerated, Computer, Val, Tags
This results in the following alert query (you need AggregatedValue
and bin(TimeGenerated, <some time>)
in the query):
InsightsMetrics
| where Name == "FreeSpacePercentage"
| summarize AggregatedValue=arg_min(Val, *) by bin(TimeGenerated, 5min), Tags
To view the same for any generic diagnostics endpoint (thanks @gabe):
After turning this on, i was able to view the free disk space with a log query:
// Virtual Machine free disk space
// Show the latest report of free disk space, per instance
Perf
| where ObjectName == "LogicalDisk" or
// the object name used in Windows records
ObjectName == "Logical Disk" // the object name used in Linux records
| where CounterName == "Free Megabytes"
| summarize arg_max(TimeGenerated, *) by InstanceName
// arg_max over TimeGenerated returns the latest record
| project TimeGenerated, InstanceName, CounterValue
For now, it is not possible on Azure Portal.
But you could do it by using Azure OMS. There is a example how to use Azure OMS to monitor free disk.