Monitorizador de procesos en ejecución, servicios, demonios, espacios de disco, PIDs, checksums, archivos....
# monit status
# monit -t
# monit -h
# monit quit
# monit start all
# monit sotp ssh
# monit restart all
# monit summary
Configuración:
# nano /etc/monitrc
Las entradas globales empiezan por “set” y los servicios concretos por “check”
Tiempo de actualización de datos, por defecto:
set daemon 60
Especificar el archivo de eventos (logs)
set logfile /var/log/monit.log
Configurar para el envio de notificaciones:
set mailserver localhost
set alert usuario@localhost.localdomain
set mail-format {
from: monit@$HOST
subject: $SERVICE $EVENT
message: $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}
set mailserver mail@mail.com (servidor smtp que envia los correos [localhost para notificación local]).
set alert user@hots.com (cuenta donde enviar los mensajes de alerta). Ejemplo para enviar notificaciones a correo gmail (en negrita los datos a modificar):
set mailserver smtp.gmail.com port 587
username usuario@gmail.com password Tfer7¿-6j
using tlsv1
with timeout 30 seconds
set alert usuario@gmail.com
Cambiar usuario y contraseña (por defecto: admin/monit)
allow usuario:contraseña
Especificar desde donde accederemos. Sólo acceso local [localhost:2812]:
set httpd port 2812 and use address localhost
allow localhost
o si queremos acceso remoto [http://ip_o_host:2812] modificar por:
set httpd port 2812
allow localhost
Tambien podemos especificar: ips, rangos, hosts concretos o usuarios para solo lectura:
allow 192.168.1.14
allow 192.168.1.1/24
allow host.com
allow usuario:contraseña read-only
Modificar el nombre del equipo [tiene que estar en /etc/hosts] y adaptar los porcentajes de consumo de carga del sistema [loadvg] y cpu para que al superar ciertos índices o porcentajes, envie una alerta:
check system tux
if loadavg (1min) > 4 then alert
if memory usage > 75% then alert
if swap usage > 85% then alert
if cpu usage (user) > 70% then alert
if cpu usage (system) > 70% then alert
if cpu usage (wait) > 70% then alert
Configurar el monitoreo de apache (Las rutas a los ficheros pertenecen a una distro arch):
check process apache with pidfile /run/httpd/httpd.pid
start program = "/etc/rc.d/httpd start" with timeout 60 seconds
stop program = "/etc/rc.d/httpd stop"
if cpu > 80% for 5 cycles then restart
if totalmem > 1500.0 MB for 5 cycles then restart
if children > 250 then restart
if cpu usage > 95% for 3 cycles then restart
if failed port 80 protocol http then restart
Configurar monitoreo de ssh
check process ssh with pidfile /run/sshd.pid
start program = "/etc/rc.d/sshd start" with timeout 60 seconds
stop program = "/etc/rc.d/sshd stop"
if cpu > 80% for 5 cycles then restart
if totalmem > 1500.0 MB for 5 cycles then restart
if children > 250 then restart
if cpu usage > 95% for 3 cycles then restart
if failed port 22 protocol ssh then restart
Chequear determinados puertos:
check host localhost with address localhost
if failed icmp type echo count 10 with timeout 15 seconds
then alert
if failed port 22 proto ssh then alert
if failed port 25 proto smtp then alert
if failed port 80 proto http then alert
Monitorear ciertos archivos de configuración [de apache y ssh] para que alerte si modifica el checksum:
check file httpd.conf with path /etc/httpd/conf/httpd.conf
if changed checksum then alert
check file ssh_config with path /etc/ssh/ssh_config
if changed checksum then alert
Monitorizar directorios para que envie una alerta en caso de modificación:
check directory sbin with path /sbin
if changed timestamp then alert
Monitorizar dispositivos /dev/ [discos duros, usb...] para que avise en caso de sobrepasar determinado espacio en disco o lo desmonte al llegar a cierto porcentaje:
check device sda5 with path /dev/sda5
start = “/bin/mount /dev/sda5”
stop = “/bin/umount /dev/sda5”
if space usage > 90% then alert
if space usage > 98% then stop
Si, al pasar algún evento queremos lanzar un script algunos ejemplos para hacerlo son:
1.- Cuando la carga del sistema sobrepasa el indice 5 alertará y si supera el 20 ejecutará el script:
check system dominio.com
if loadavg (1min) > 5 then alert
if loadavg (1min) > 20 then exec "/bin/bash /root/script.sh"
2.- Si falla el servidor ftp [puerto 21], al pasar 20 segundos alertará y ejecutará el script
if failed port 21 protocol ftp with 20 seconds then alert and exec “/ftp/script.sh”