Memory usage in MB and % for Azure VM April 10, 2025 by admin
This has a workaround in case you do not have Insight
arg("").Resources
| where type == "microsoft.compute/virtualmachines"
| extend vmSize = tostring(properties.hardwareProfile.vmSize)
| extend CleanedVmSize = replace(@"_v\d+", "", vmSize)
| extend ComputerNameBeforeDot = tolower(tostring(split(name, ".")[0]))
| project
ComputerNameBeforeDot,
MemoryGB = case(
CleanedVmSize contains "Standard_D2",
8,
CleanedVmSize contains "Standard_D4",
16,
CleanedVmSize contains "Standard_D8",
32,
CleanedVmSize contains "Standard_D16",
64,
CleanedVmSize contains "Standard_D32",
128,
CleanedVmSize contains "Standard_D64",
256,
CleanedVmSize contains "Standard_E2",
16,
CleanedVmSize contains "Standard_E4",
32,
CleanedVmSize contains "Standard_E8",
64,
CleanedVmSize contains "Standard_E16",
128,
CleanedVmSize contains "Standard_E32",
256,
CleanedVmSize contains "Standard_E64",
512,
CleanedVmSize contains "Standard_E96",
672,
CleanedVmSize contains "Standard_F2",
4,
CleanedVmSize contains "Standard_F4",
8,
CleanedVmSize contains "Standard_F8",
16,
CleanedVmSize contains "Standard_F16",
32,
CleanedVmSize contains "Standard_F32",
64,
CleanedVmSize contains "Standard_F64",
96,
CleanedVmSize contains "Standard_M32ms",
875,
CleanedVmSize contains "Standard_M32ls",
256,
0 // default if none matche
),
vmSize
| join kind=leftouter (
Perf
| where ObjectName == "Memory"
| where CounterName == "Available MBytes"
or CounterName == "Available mbytes"
or CounterName == "Available MBytes Memory"
| where TimeGenerated between (startofmonth(datetime_add("month", -1, now())) .. endofmonth(datetime_add("month", -1, now())))
| extend Month = format_datetime(TimeGenerated, "yyyy-MM")
| extend ComputerNameBeforeDot = tolower(tostring(split(Computer, ".")[0]))
| summarize
MinMemMB = min(CounterValue),
MaxMemMB = max(CounterValue),
AvgMemMB = avg(CounterValue)
by Computer, "Available Memory", Month, ComputerNameBeforeDot
)
on
$left.ComputerNameBeforeDot == $right.ComputerNameBeforeDot
| project Computer, MemoryGB, vmSize, Month, MinMem = round(MinMemMB*100/(MemoryGB*1024), 2), MaxMem = round(MaxMemMB*100/(MemoryGB*1024), 2), AvgMem = round(AvgMemMB*100/(MemoryGB*1024), 2), MinMemMB, MaxMemMB, AvgMemMB