Monit

De enunpimpam
Saltar a: navegación, buscar

De acuerdo con su propia definición, Monit es una utilidad gratuita y Open Source para administrar y monitorear procesos, archivos, directorios y filesystems en un sistema Unix. Realiza tareas automáticas de mantenimiento y reparación y puede ejecutar acciones significativas durante situaciones de error.

Instalar

Podemos instalarlo desde los repositorios

apt-get install monit

Para descargar la ultima version Monit, podéis hacerlo desde la web oficial: http://mmonit.com/monit/#download

Configuración

Esto son los tres fichero que tenemos que editar para configurar monit.

  • /etc/default/monit
  • /etc/monit/monitrc
  • /etc/monit.d/

El fichero /etc/default/monit sirve para activar/desactivar Monit en el arranque de la máquina y definir opciones para el demonio.

nano /etc/default/monit 

Por defecto el demonio ya esta iniciado

El fichero /etc/monit/monitrc es el fichero de configuración principal de monit, donde realizaremos la configuración por defecto.

nano /etc/monit/monitrc

Descomentamos la siguiente linea:

include /etc/monit/conf.d/*

Podremos colocar ficheros de configuración para definir servicios a monitorizar en /etc/monit/conf.d/*:

Acceso al interfaz web de Monit

Para acceder a la interfaz web de Monit tenemos que configurar los siguientes parametros:

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'    
allow @monit           # allow users of group 'monit' to connect (rw)    
allow @users readonly  # allow users of group 'users' to connect readonly

Todas estos parametros estas desactivados, tendremos que activar y configurar los que nos parezcan mas apropiados.

Que escuche en el puerto 2812 (set httpd port 2812).

set httpd port 2812 and

El nombre del host por el que se debe acceder al interfaz es localhost (use address localhost). Si la máquina que estoy monitorizando se llama miservidor.com, podría definir un "use address miservidro.com" en el fichero de configuración para que hubiera que acceder al interfaz de la siguiente manera: http://miservidor:2812.

use address localhost  # only accept connection from localhost 
use address miservidro.com   

Que se permite el acceso a la máquina localhost (allow localhost). Podríamos definir otra línea con la IP de nuestro equipo para poder acceder desde él al interfaz web de monit. Por ejemplo: allow 192.168.1.14.

Pero si queremos acceder desde cualquie maquina dentro de nuestra red seria: 192.168.1.1/255.255.255.0 y la anterior no la usamos.

Pero si ademas queremos acceder desde fuera de nuestra res entonces tendriamos que añadir un allow 0.0.0.0

allow localhost        # allow localhost to connect to the server and    
allow 192.168.1.1/255.255.255.0
allow 0.0.0.0

Es necesario introducir el usuario admin con la contraseña monit para lograr el acceso (allow admin:monit).

Que se permite el acceso completo a los usuarios del grupo "monit" (allow @monit).

allow admin:monit      # require user 'admin' with password 'monit'    

Que se permite acceso de sólo lectura a los usuarios del grupo "users" (allow @users).

allow @users readonly  # allow users of group 'users' to connect readonly

Mi configuración quedaria asi:

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'
     allow 192.168.1.1/255.255.255.0
     allow 0.0.0.0
#    allow @monit           # allow users of group 'monit' to connect (rw)
#    allow @users readonly  # allow users of group 'users' to connect readonly

Enviar notificaciones de Monit usando Gmail

Podemos hacer que Monit nos envíe notificaciones mediante email cuando se produzca un determinado evento en los servicios, ficheros, directorios o dispositivos que estemos monitorizando.

nano /etc/monit/monitrc
set mailserver smtp.gmail.com port 587
  username "usuario@gmail.com" password "password"
  using tlsv1
  with timeout 30 seconds

Ahora definimos a quien le enviamos el mail de alerta

set alert usuario@proveedor.dominio

Reglas de monitoreo

Monitorear ssh

Creamos el archivo ssh.monitrc dentro de la carpeta /etc/monit/conf.d

nano /etc/monit/conf.d/ssh.monitrc
check process sshd with pidfile /var/run/sshd.pid
   group system
   group sshd
   start program = "/etc/init.d/ssh start"
   stop  program = "/etc/init.d/ssh stop"
   if failed host localhost port 22 with proto ssh then restart
   if 5 restarts with 5 cycles then alert

Monitorear Apache

Creamos el archivo httpd.monitrc dentro de la carpeta /etc/monit/conf.d

nano /etc/monit/conf.d/httpd.monitrc
check process apache with pidfile /var/run/apache2.pid
  group www
  start program = "/etc/init.d/apache2 start"
  stop program  = "/etc/init.d/apache2 stop"
  if failed host [IP_SERVER] port 80
       protocol http request /monit/token then restart
  if cpu is greater than 60% for 3 cycles then alert
  if cpu > 80% for 5 cycles then restart
  if totalmem > 400 MB for 5 cycles then restart
  if children > 250 then restart
  if loadavg(5min) greater than 10 for 8 cycles then stop
  if 3 restarts within 5 cycles then timeout

Nota:Hay que crear un archivo en www//monit/token

Monitorear MySQL

Creamos el archivo httpd.monitrc dentro de la carpeta /etc/monit/conf.d

nano /etc/monit/conf.d/mysql.monitrc
check process mysql with pidfile /var/run/mysqld/mysqld.pid
  group database
  start program = "/etc/init.d/mysql start"
  stop program = "/etc/init.d/mysql stop"
  if failed host 127.0.0.1 port 3306 then restart
  if 5 restarts within 5 cycles then timeout

Monitorear Motion

Creamos el archivo motion.monitrc dentro de la carpeta /etc/monit/conf.d

nano /etc/monit/conf.d/motion.monitrc
check process motion with pidfile /run/motion/motion.pid
  group motion
  start program = "/etc/init.d/motion start"
  stop program  = "/etc/init.d/motion stop"

Monitorear Host

Creamos el archivo httpd.monitrc dentro de la carpeta /etc/monit/conf.d

nano /etc/monit/conf.d/localhost.monitrc
# check the local system <<your hostname>>
check system hp.home
   if loadavg (1min) > 5 then alert
   if loadavg (5min) > 3 then alert
   if memory usage > 75% then alert
   if swap usage > 25% then alert
   if cpu usage (user) > 70% then alert
   if cpu usage (system) > 30% then alert
   if cpu usage (wait) > 30% then alert

# local fs system check
check filesystem rootfs with path /
   if space > 90% then alert
   if inodes > 90% then alert

# include config files for specific checks
include /etc/monit/monitrc.d/dnsmasq