'Monitor free disk space on Azure VM
Is there some way how to monitor free disk space from the Azure Portal?
I know that there are all kinds of diagnostics for I/O, memory, network, CPU, .NET, SQL, ASP.NET, IIS, etc.
But is there some way to see how much free space there's on a disk attached to the VM?
All I found was this third-party solution:
http://cloudmonix.com/blog/how-to-monitor-free-disk-space-on-azure-vms/
But there should be some way how to see a basic metric like disk space without needing third-party SW, right?
Solution 1:[1]
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
Solution 2:[2]
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.
Solution 3:[3]
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
Solution 4:[4]
This is possible in Azure portal. In the VM resource page select the Logs blade and search "free disk". You'll get a default query which can be run to get the disk usage. You can pin this query to dashboard or send it to workbook to check the usage frequently.
Reference - Microsoft Techcommunity
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | pgampe |
Solution 2 | Shui shengbao |
Solution 3 | Andy Shen |
Solution 4 | Ratish |