Memory

check_proc_mem.sh: check process memory usage

Description:

Check memory used by a given process

Check more: https://www.dennyzhang.com/nagois_monitor_process_memory

Current Version

1.0

Last Release Date

2014-10-26

Compatible With

  • Nagios 1.x
  • Nagios 2.x
  • Nagios 3.x
  • Nagios 4.x
  • Nagios XI
  • Nagios Fusion
  • Nagios Reactor
  • Nagios Network Analyzer
  • Nagios Log Server

Owner

License

GPL


Nagios CSP

Meet The New Nagios Core Services Platform

Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.

Monitoring Made Magically Better

  • Nagios Core on Overdrive
  • Powerful Monitoring Dashboards
  • Time-Saving Configuration Wizards
  • Open Source Powered Monitoring On Steroids
  • And So Much More!
Project Files
Project Notes
Reviews (2) Add a Review
good script
by macko003, November 30, 2021
First of all, thanks your work!

As I see if you use --cmdpattern, the script counts only the first process' mem usage. So if you run httpd or other services with fork/child calculate with it.

I prefer to send back the warning and critical in perform data. So I modified the script a bit.

if [ "$memVmRSS" -ge "$4" ]; then
echo "Memory: CRITICAL VIRT: $memVmSize MB - RES: $memVmRSS MB used!|RES=$(($memVmRSS*1024*1024));$(($2*1024*1024));$(($4*1024*1024));;"
$(exit 2)
elif [ "$memVmRSS" -ge "$2" ]; then
echo "Memory: WARNING VIRT: $memVmSize MB - RES: $memVmRSS MB used!|RES=$(($memVmRSS*1024*1024));$(($2*1024*1024));$(($4*1024*1024));;"
$(exit 1)
else
echo "Memory: OK VIRT: $memVmSize MB - RES: $memVmRSS MB used!|RES=$(($memVmRSS*1024*1024));$(($2*1024*1024));$(($4*1024*1024));;"
$(exit 0)
fi
Helpful? Yes  No 
A few suggested changes.
by collinhayden, December 31, 2015
Hi and thanks for a great plugin. I ran into an issue because I had renamed the file from check_proc_mem.sh to just check_proc_mem as I like them w/ no file extension since that is how they commonly are in the plugin directory. This caused an issue in the grep -v portion. I added some things to accommodate this changes, here is the modified script that will work just in case someone else happens to rename it:

#!/bin/bash -e
##-------------------------------------------------------------------
## File: check_proc_mem.sh
## Author : Denny
## Description :
## --
##
## Link: http://www.dennyzhang.com/nagois_monitor_process_memory
##
## Created :
## Updated: Time-stamp:
##-------------------------------------------------------------------
SCRIPTNAME=$(basename $0)

if [ "$1" = "-w" ] && [ "$2" -gt "0" ] &&
[ "$3" = "-c" ] && [ "$4" -gt "0" ]; then
pidPattern=${5?"specify how to get pid"}

if [ "$pidPattern" = "--pidfile" ]; then
pidfile=${6?"pidfile to get pid"}
pid=$(cat $pidfile)
elif [ "$pidPattern" = "--cmdpattern" ]; then
cmdpattern=${6?"command line pattern to find out pid"}
pid=$(ps -ef | grep "$cmdpattern" | grep -v grep | grep -v ${SCRIPTNAME} | head -n 1 | awk -F' ' '{print $2}')
elif [ "$pidPattern" = "--pid" ]; then
pid=${6?"pid"}
else
echo "ERROR input for pidpattern"
exit 2
fi

if [ -z "$pid" ]; then
echo "ERROR: no related process is found"
exit 2
fi

memVmSize=`grep 'VmSize:' /proc/$pid/status | awk -F' ' '{print $2}'`
memVmSize=$(($memVmSize/1024))

memVmRSS=`grep 'VmRSS:' /proc/$pid/status | awk -F' ' '{print $2}'`
memVmRSS=$(($memVmRSS/1024))

if [ "$memVmRSS" -ge "$4" ]; then
echo "Memory: CRITICAL VIRT: $memVmSize MB - RES: $memVmRSS MB used!|RES=$(($memVmRSS*1024*1024));;;;"
$(exit 2)
elif [ "$memVmRSS" -ge "$2" ]; then
echo "Memory: WARNING VIRT: $memVmSize MB - RES: $memVmRSS MB used!|RES=$(($memVmRSS*1024*1024));;;;"
$(exit 1)
else
echo "Memory: OK VIRT: $memVmSize MB - RES: $memVmRSS MB used!|RES=$(($memVmRSS*1024*1024));;;;"
$(exit 0)
fi

else
echo "${SCRIPTNAME}"
echo ""
echo "Usage:"
echo "${SCRIPTNAME} -w -c "
echo ""
echo "Below: If tomcat use more than 1024MB resident memory, send warning"
echo "${SCRIPTNAME} -w 1024 -c 2048 --pidfile /var/run/tomcat7.pid"
echo "${SCRIPTNAME} -w 1024 -c 2048 --pid 11325"
echo "${SCRIPTNAME} -w 1024 -c 2048 --cmdpattern "tomcat7.*java.*Dcom""
echo ""
echo "Copyright (C) 2014 DennyZhang (denny.zhang001@gmail.com)"
exit
fi
## File - check_proc_mem.sh ends
Helpful? Yes  No 
Add a Review

You must be logged in to submit a review.

Thank you for your review!

Your review has been submitted and is pending approval.

Recommend

To:


From:


Thank you for your recommendation!

Your recommendation has been sent.

Project Stats
Rating
4.6 (5)
Favorites
2
Views
30,609