Premesso che Monit può essere configurato anche come NMS a tutti gli effetti (sia centralizzato che distribuito, vedi M/Monit), lo scopo di questo post è quello di illustrarne la configurazione come semplice watchdog.
Esso, infatti, si occuperà di riavviare eventuali servizi “in stallo” (nella fattispecie httpd e mysql), riducendo notevolmente i tempi di downtime.
Per prima cosa occorre installare il suddetto applicativo:
[root@server ~]# yum install monit
Una volta installato possiamo editarne la configurazione (/etc/monit.conf) nel modo seguente:
set httpd port 2813 and #2813 è la porta su cui è in ascolto l'interfaccia Web di Monit use address <indirizzo IP> #l'indirizzo IP è quello su cui l'interfaccia Web di Monit è in binding allow 0.0.0.0/0 #semplice ACL per consentire a qualunque IP sorgente di connettersi alla suddetta interfaccia allow username:password # credenziali di accesso all'interfaccia Web di Monit allow @monit allow @users readonly
A questo punto creiamo due file all’interno della directory /etc/monit.d, rispettivamente httpd e mysqld.
Il primo conterrà le seguenti direttive:
check process httpd with pidfile /var/run/httpd.pid group apache start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed host 94.23.68.182 port 80 protocol http then restart if 5 restarts within 5 cycles then timeout
Il secondo, invece, avrà il seguente contenuto:
check process MySQL-Server with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed host localhost port 3306 protocol mysql then restart if 5 restarts within 5 cycles then timeout
Verifichiamo la sintassi delle suddette configurazioni mediante il comando:
[root@server ~]# monit -t
Ora possiamo avviare il nostro watchdog:
[root@server ~]# service monit start
imponendone l’avvio automatico dopo ogni reboot del server:
[root@server ~]# chkconfig monit on
Verifichiamo l’effettiva raggiungibilità dell’interfaccia Web di Monit mediante la URL:
http://IP:2813
ed il gioco è fatto.
E’ tutto. Alla prossima.