Tempo fa vi avevo parlato di Munin, un tool per il monitoraggio dei vostri server, oggi voglio parlarvi di un suo amico: Monit.
Monit è un utility open source per amministrare e monitorare processi, programmi, files, directory e filesystems su un sistema Unix/Linux. Monit è in grado di eseguire delle azioni di manutenzione e ripristino e di determinare operazioni in caso di errori.
Monit può avviare un processo se non è un esecuzione, riavviare un processo che non risponde e fermare un processo che utilizza troppe risorse. Possiamo inoltre utilizzare Monit per monitorare files, directories e filesystems se avvengono determinati cambiamenti, ad esempio cambi nei checksum dei file, cambi nelle dimensioni dei files e modifiche ai timestamp. Possiamo inoltre monitorare porte remote via TPC/IP, server protocol e ping. Monit mantiene i suoi log e ci avvisa in casi si verifichi una situazione critica o un ripristino.
1- Installare Monit
Per quanto riguarda l’installazione su sistemi RHEL/CentOS, bisogna aggiungere i repository EPEL che non tratto in questa guida (google is your friend!). Per installare Monit procediamo quindi così:
su RedHat/CentOS/Fedora/
# yum install monit
su Ubuntu/Debian/Linux Mint
# sudo apt-get install monit
2- Configurare Monit
Monit è molto semplice da configurare, infatti è tutto contenuto all’interno di un unico file di configurazione. È stato progettato per monitorare i servizi ogni 2 minuti e mantenere i file di log in “/var/log/monit“.
Il programma ha una sua interfaccia web, che si mette in ascolto sulla porta 2812. Per abilitare l’interfaccia web è necessario apportare delle modifiche ai file di configurazione. Il file principale si trova in /etc/monit.conf sotto RedHat/CentOS/Fedora/ ed in /etc/monit/monitrc se siamo su Ubuntu/Debian/Linux Mint. Editiamo il file con il nostro editor preferito, a seconda della versione:
su RedHat/CentOS/Fedora/
# nano /etc/monit.conf
su Ubuntu/Debian/Linux Mint
# nano /etc/monit/monitrc
Seccessivamente decommentiamo le righe seguenti
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
Una volta salvato il file, riavviamo il servizio
su RedHat/CentOS/Fedora/
# /etc/init.d/monit start
su Ubuntu/Debian/Linux Mint
$ sudo /etc/init.d/monit start
Ora potrete accedere alla parte web del sistema collegandovi sulla porta http://X.X.X.X:2812
3- Aggiungere servizi da monitorare
Per aggiungere dei programmi da monitorare basta inserirli nel file di configurazione di cui sopra e, una volta modificato il file, riavviare il servizio.
Apache
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 127.0.0.1 port 80 protocol http then restart if 5 restarts within 5 cycles then timeout
Apache2
check process apache with pidfile /run/apache2.pid start program = "/etc/init.d/apache2 start" with timeout 60 seconds stop program = "/etc/init.d/apache2 stop"
Nginx
check process nginx with pidfile /var/run/nginx.pid start program = "/etc/init.d/nginx start" stop program = "/etc/init.d/nginx stop"
MySQL
check process mysqld with pidfile /var/run/mysqld/mysqld.pid group mysql start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
SSHD
check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/sshd start" stop program "/etc/init.d/sshd stop" if failed host 127.0.0.1 port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout
Il seguente comando vi permette di controllare la sintassi del file di configurazione
# monit -t
Quando riavviate il servizio, controllate che non ci siano errori, dovreste ottenere o una stringa del tipo “Control file syntax OK” oppure niente. Se ci sono errori fixateli.
Potete controllare che Monit stia lavorando con il comando
# tail -f /var/log/monit
Esempio di log
[BDT Apr 3 03:06:04] info : Starting monit HTTP server at [localhost:2812] [BDT Apr 3 03:06:04] info : monit HTTP server started [BDT Apr 3 03:06:04] info : 'tecmint.com' Monit started [BDT Apr 3 03:06:04] error : 'nginx' process is not running [BDT Apr 3 03:06:04] info : 'nginx' trying to restart [BDT Apr 3 03:06:04] info : 'nginx' start: /etc/init.d/nginx Vi riporto di seguito alcuni screenshot di esempio. Divertitevi!![]()
![]()