Para monitorizar la memoria de un servidor remoto con nagios debemos realizar los siguientes pasos:
Lo primero es descargar el archivo check_mem.sh:
#!/bin/sh # check_mem.sh # Determine memory usage percentage on Linux servers. # Original write for RHEL3 for PC1 Project - jlightner 05-Jul-2005 # # Modified for RHEL5 on mailservers. # -Some of the escapes previously required for RHEL3's ksh not needed on RHEL5. # -Changed comparisons to allow for decimal rather than integer values. # # Usage: check_mem.sh WARNING CRITICAL # Where WARNING and CRITICAL are the integer only portions of the # percentage for the level desired. # (i.e. 85% Warning & 95% Critical should be input only as "85 95".) # Define Levels based on input # WARNLEVEL=$1 CRITLEVEL=$2 # Setup standard Nagios/NRPE return codes # UNKNOWN_STATE=3 CRITICAL_STATE=2 WARNING_STATE=1 OK_STATE=0 # Give full paths to commands - Nagios can't determine location otherwise # BC=/usr/bin/bc GREP=/bin/grep AWK=/bin/awk FREE=/usr/bin/free TAIL=/usr/bin/tail HEAD=/usr/bin/head # Get memory information from the "free" command - output of top two lines # looks like: # total used free shared buffers cached # Mem: 8248768 6944444 1304324 0 246164 5647524 # The set command will get everything from the second line and put it into # posiional variables $1 through $7. # set `$FREE |$HEAD -2 |$TAIL -1` # Now give variable names to the positional variables we set above # MEMTOTAL=$2 MEMUSED=$3 MEMFREE=$4 MEMBUFFERS=$6 MEMCACHED=$7 # Do calculations based on what we got from free using the variables defined # REALMEMUSED=`echo $MEMUSED - $MEMBUFFERS - $MEMCACHED | $BC` USEPCT=`echo "scale=3; $REALMEMUSED / $MEMTOTAL * 100" |$BC -l` #USEPCT=`echo scale=3 "n" $REALMEMUSED / $MEMTOTAL * 100 |$BC -l |$AWK -F. '{print $1}'` # Compare the Used percentage to the Warning and Critical levels input at # command line. Issue message and set return code as appropriate for each # level. Nagios web page will use these to determine alarm level and message. # #if [ `echo "5.0 > 5" |bc` -eq 1 ] #then echo it is greater #else echo it is not greater #fi if [ `echo "$USEPCT > $CRITLEVEL" |bc` -eq 1 ] then echo "CRITICAL - Memory usage is ${USEPCT}%" exit ${CRITICAL_STATE} elif [ `echo "$USEPCT > $WARNLEVEL" |bc` -eq 1 ] then echo "WARNING - Memory usage is ${USEPCT}%" exit ${WARNING_STATE} elif [ `echo "$USEPCT < $WARNLEVEL" |bc` -eq 1 ] then echo "OK - Memory usage is ${USEPCT}%" exit ${OK_STATE} else echo "Unable to determine memory usage." exit ${UNKNOWN_STATE} fi echo "Unable to determine memory usage." exit ${UNKNOWN_STATE}
En el servidor a monitorizar:
Comprobar que tenemos instalados los siguiente comandos en el servidor a monitorizar:
BC, GREP, AWK, FREE, TAIL, HEAD
El archivo descargado lo ponemos en la carpeta /usr/local/nagios/libexec le damos permisos al script de lectura y ejecucion para el usuario nagios.
En el archivo /usr/local/nagios/etc/nrpe.cfg añadimos la siguiente linea
# MEM RAM # check_mem <WARN%> <CRIT%> = MEMORY at defined warning and critical use %. command[check_mem]=/usr/local/nagios/libexec/check_mem.sh 85 95
En el servidor nagios:
define service{ use generic-service host_name trucoslinux service_description # Memoria RAM check_command check_nrpe!check_mem }
Se asume que check_nrpe ha sido definido en checkcommands.cfg.
me salvaste la vida excelente mi chavo
Excelente, funciona muy bien, Gracias. Nagios trae uno, pero al parecer tiene limitaciones ya que mi servidor tiene 8 GB y los resultados del chequeo era en base 4GB.
Si funciona genial.
Nosotros lo utilizamos para los servidores que tenemos en hoswedaje, que los más pequeños son de 24GB
Gracias por tu comentario.
Me sale este mensaje (No output returned from plugin)
?
si vas a poner un “tutorial” no asumas nada, escribe todos los pasos.
disculpen mi ignorancia pero soy un novato en linux, mi pregunta es ¿como puedo descargar el archivo check_mem para monitorear la memoria ram de el server de mi empresa? …