JTorrents
Mis experiencias en TI

Script con sar para monitorizar la carga del servidor

Este script forma parte de las herramientas habituales que utilizo para monitorizar mis servidores, y en ningún caso sustituye a otras herramientas de monitorización como Nagios o Cacti, etc.

Lo utilizo para monitorizar la carga (load average) del servidor a la que ha estado sometido durante un tiempo acotado de 5 minutos, menos de este tiempo puede darnos falsos positivos.

El script lo ejecutaremos en una tarea cron, esto nos permitirá reaccionar ante un aumento inesperado de la misma.

En Debian el comando sar está incluido en el paquete sysstat .

Actualizamos la cache de apt:

apt-get update

Instalamos los paquetes necesarios:

apt-get install sysstat

Load (Average) de los últimos 5 minutos:

# sar -q 1 1
09:53:39 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
09:53:40 PM         0       469      0.07      0.03      0.00         0
Average:            0       469      0.07      0.03      0.00         0

Limpiamos la salida del comando:

# sar -q 1 1 |sed -n '/Average/,$ {s/Average//g;p;}'|awk '{print $5}'
0.03

Editamos el script:

# vi sar-monitor.sh
#!/bin/bash
HOSTNAME=`hostname`
LOAD=`sar -q 1 1 |sed -n '/Average/,$ {s/Average//g;p;}'|awk '{print $5}'`
if [ $LOAD \> 2 ] ; then
    echo load=$LOAD |mail -s "Servidor $HOSTNAME en sobrecarga" usuario@emailexterno.lan
fi

Editamos crontab:

# crontab -e
# Monitor Sar cada 5 minutos
*/5 * * * * /usr/local/bin/sar-monitor.sh

Para provocar carga en el servidor y probar el script podemos instalar el paquete stress y ejecutamos:

stress --cpu 3 --io 4 --vm 2 --vm-bytes 128M --timeout 240s

Nota: Como siempre más información en las páginas del manual de los comandos.

Escrito por Joan Torrents el Tuesday February 25, 2014
Enlace permanente -

« Gestión de servidores con Ansible - dpkg (debian) y directorios temporales con el flag noexec »