Could someone please help me with the Alert for High Memory Usage Per Process
Whenever the memory used per process is higher that 90% then trigger an alert.
Below is the query which I tried but not working.
index="index" sourcetype="PerfmonMk:Process" process_name="sqlservr"
| eval Proc_Mem_mb = process_mem_used / (1024 * 1024)
| fields Proc_Mem_mb process_name host _time
| join host [ search index="index2" sourcetype="WinHostMon" Type=OperatingSystem | eval Tot_Mem_mb = TotalPhysicalMemoryKB/1024 | fields host Tot_Mem_mb ]
| eval high_mem_per_proc = ( (Proc_Mem_mb/Tot_Mem_mb) * 100 )
| eval AlertStatus=if(high_mem_per_proc > 90, "Alert", "Ignore")
|table _time host process_name Tot_Mem_mb Proc_Mem_mb high_mem_per_proc AlertStatus
| search AlertStatus="Alert"
Please explain what "not working" means. What is not working? Does the query not find results or the alert not fire or something else? Have you confirmed at least one process is using 90% of memory?
May I suggest these lines to replace the last four?
| eval high_mem_per_proc = (Proc_Mem_mb * 100)/Tot_Mem_mb | where high_mem_per_proc > 90 | table _time host process_name Tot_Mem_mb Proc_Mem_mb high_mem_per_proc AlertStatus
process_mem_used is a calculated field defined by the splunk_TA_nix and splunk_TA_windows apps. It's part of the ps and Perfmon:Process sourcetypes.