h1

Monitorizar un servicio o proceso y rearrancarlo en caso de caída

02/11/2008

Frecuentemente es necesario tener servicios y procesos monitorizados y levantados las 24h. Para ello existen utilidades que monitorizan y rearracan en caso de caída o condiciones críticas del sistema, a la vez que envían alertas al administrador. Y lo hacen no sólo en base al estado del proceso si no también, si se desea, en función del entorno (RAM en uso, espacio libre en disco, etc), así como permite crear tareas de mantenimiento para evitar entrar en situaciones críticas.

En GNU/Linux uno de los más utilizados es Monit. De una manera sencilla permite controlar procesos, servicios, ficheros, memoria, CPU, puertos ó comunicaciones. En Debian ó Ubuntu se instala de manera sencilla:

$sudo apt-get install monit

Y crea el servicio que se arrancará en todos los reinicios. A contiinuación, es necesario activarlo configurando los parámetros generales de la aplicación:

$sudo nano /etc/default/monit
# You must set this variable to for monit to start
startup=1
# To change the intervals which monit should run uncomment
# and change this variable.
CHECK_INTERVALS=180

y posteriormente indicar los parámetros personalizados (condiciones a monitorizar). El fichero viene totalmente comentado por un ejemplo de cada tipología de evento monitorizable (fichero que cambia, procesos que mueren, consumo de memoria o de CPU, puerto inalcanzable…), de modo que es bastante fácil de configurar y de adaptar a situaciones persanlizadas. En mi caso pongo de ejemplo una condición para mantener demonio de aMule (amuled) arrancado si cae:

# sudo nano /etc/monit/monitrc
set daemon  60
set logfile syslog facility log_daemon
set httpd port 2812 and
use address localhost  # only accept connection from localhost
allow localhost        # allow localhost to connect to the server and
allow admin:monit      # require user 'admin' with password 'monit'
(...)
#--------------- AMULE DAEMON
check process aMule with pidfile /home/carlos/.aMule/muleLock
start program = "/etc/init.d/amule-daemon start"
stop program  = "/etc/init.d/amule-daemon stop"
if failed host localhost port 4712 then restart
(...)

Comentar que el  «set httpd port 2812» configura un interfaz web cómodo para acceder a las estadísticas de Monit vía web. A parte, las estadísticas se pueden ver en el syslog o en el fichero que se especifique en la configuración.

3 comentarios

  1. Hola,
    gracias por ese tutorial.
    Lo que no puedo entender es:
    allow admin:monit
    Dice que necesita la contrasena, pero dónde se escribe ésta?
    depues de monit? antes de monit? antes de los dos puntos? dónde?
    Ademas, cuando veo monitcr en el terminal, me dice que no tengo derechos para escribir! Asi es que no puedo editar éste file.
    Me gustaria saber cómo se escribe ésta rutina si apenas quisiera agregarla a la configuración existente, sin tener que editar monitrc?
    y cómo hago para guardar el file en la carpeta correspondiente?


  2. La contraseña se escribe donde como en pone el ejemplo… justamente después de «:»
    Y para editarlo y grabarlo, prueba a hacerlo como root (comando «sudo», investiga también eso)


  3. Interessting thoughts



Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: