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

Leave a Reply

Your email address will not be published. Required fields are marked *