Oct 29 2020
12:22 PM
- last edited on
Apr 08 2022
10:39 AM
by
TechCommunityAP
Oct 29 2020
12:22 PM
- last edited on
Apr 08 2022
10:39 AM
by
TechCommunityAP
Hello,
I trying to get list of the VMs that have available memory below 20% and CPU Utilization above 50%. I have this below two queries for Memory and CPU. Can you please suggest on how to join both queries.
Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total"
| summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 1h)
| where AggregatedValue >50
| render table
let free_memory_percent = Perf
| where CounterName == "% Committed Bytes In Use"
| summarize arg_max(TimeGenerated, CounterValue) by Computer
| project TimeGenerated, Computer, free_memory_percent=100-CounterValue;
let free_memory_gigs = Perf
| where CounterName == "Available MBytes"
| summarize arg_max(TimeGenerated, CounterValue) by Computer
| project TimeGenerated, Computer, free_memory_GB=CounterValue/1024;
free_memory_gigs
| join kind= innerunique(free_memory_percent) on Computer
| where free_memory_percent > 80
| project TimeGenerated, Computer, free_memory_percent, free_memory_GB, Total_GB=(free_memory_GB*100)/free_memory_percent
| sort by free_memory_percent asc
Thanks,
Ruheena
Nov 01 2020 02:44 AM
To make it most "elegant", prepend your queries with a let statement for the CPU usage:
let CPU_usage=
Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total"
| summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 1h)
| where AggregatedValue >50;
Then, append your existing memory query with:
| join CPU_usage() on Computer
HTH