Monit: tool per monitoraggio di server
Pubblicato il 30/07/2013 in BSD, Linux, System Administration • 4 min read
I sistemi di monitoraggio sono i migliori amici dei sistemisti, perché ci permettono di capire cosa sta succedendo, cosa è successo e cosa probabilmente succederà sui nostri server.
In questo primo articolo vediamo come configurare monit, uno dei software di monitoraggio più semplici ed efficaci.
Il monitoraggio dei server
Ogni sistemista coscienzioso utilizza uno o più sistemi di monitoraggio, così da tenere sotto controllo tutti i server che gestisce.
Esistono molti di sistemi di monitoraggio, sia gratuiti che a pagamento, installabili come servizi oppure gestiti da aziende esterne. I più famosi sono sicuramente:
Vediamo come installare e configurare Monit per i controlli e le azioni minime indispensabili.
Caratteristiche principali
Monit è in grado, se opportunamente configurato, di effettuare operazioni di controllo e gestione dei servizi. Ecco le sue caratteristiche principali:
- configurazione semplice
- occupa pochissime risorse
- può controllare lo stato delle risorse del server (CPU, RAM, spazio disco, load average, etc)
- può controllare la raggiungibilità dei servizi attivi
- può riavviare servizi non raggiungibili
- invia mail di segnalazione dei problemi riscontrati
- ha un pannello web con il riepilogo dello stato del server
Monit fa parte di quella categoria di software che una volta installati e configurati non ci si mette più mano perché svolgono egregiamente il proprio lavoro.
Installazione e prima configurazione
Per installare Monit eseguiamo
su FreeBSD:
root@server:~# cd /usr/ports/sysutils/monit
root@server:/usr/ports/sysutils/monit# make install clean
su sistemi Ubuntu / Debian:
root@server:~# apt-get install monit
Il file di configurazione principale è monitrc il cui contenuto è abbastanza semplice:
set daemon 60 # controlla i servizi ogni minuto
set logfile /var/log/monit # imposta /var/log/monit come logfile
set mailserver localhost # utilizza il mail server locale per inviare i messaggi
set mail-format {
from: monitor@$HOST
subject: monit alert -- $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Your faithful employee,
Monit
}
set alert monitor@dominio.tld # destinatario delle e-mail di avviso
set httpd port 2812 and
use address localhost # il demone si mette in ascolto su localhost
allow localhost # permette connssioni solo provenienti da localhost
allow admin:monit # l'autenticazione avviene con l'utente 'admin' con password 'monit'
include /usr/local/etc/monit.d/* # utilizza i file di controllo per i servizi presenti in /usr/local/etc/monit.d
I file di configurazione di sistema e dei servizi
Iniziamo con quello per tenere sotto controllo le risorse, che chiameremo system e che andremo a salvare in /usr/local/etc/monit.d:
- memoria (RAM e SWAP)
- CPU
- File system
check system server
if loadavg (1min) > 16 then alert # x4
if loadavg (5min) > 12 then alert # x3
if loadavg (15min) > 8 then alert # x2
if memory usage > 95% then alert
if swap usage > 40% then alert
if cpu usage (user) > 95% then alert
if cpu usage (system) > 95% then alert
### Filesystem
check device ROOT with path /dev/ad0p3
if space usage > 80% then alert
check device HOME with path /dev/ad0p4
if space usage > 85% then alert
Vediamo i file di configurazione per alcuni servizi, da salvare sempre in /usr/local/etc/monit.d:
SSH
# ssh
check process sshd with pidfile /var/run/sshd.pid
start program = "/etc/rc.d/sshd start"
stop program = "/etc/rc.d/sshd stop"
if failed host 1.2.3.4 port 22 2 times within 2 cycles then restart
if changed pid then alert
if 3 restarts within 8 cycle then alert
NGINX
# nginx
check process nginx with pidfile /var/run/nginx.pid
start program = "/usr/local/etc/rc.d/nginx start"
stop program = "/usr/local/etc/rc.d/nginx stop"
if failed port 80 then restart
if changed pid then alert
if 2 restart within 10 cycle then alert
PHP
# PHP processes
check process php with pidfile /var/run/spawn-fcgi.pid
start program = "/usr/local/etc/rc.d/spawn-fcgi start"
stop program = "/usr/local/etc/rc.d/spawn-fcgi stop"
if failed port 9000 then restart
if changed pid then alert
if 1 restart within 1 cycle then alert
Exim
# Exim
check process exim with pidfile /var/run/exim.pid
start program = "/usr/local/etc/rc.d/exim start"
stop program = "/usr/local/etc/rc.d/exim stop"
if failed port 25 protocol smtp 5 times within 5 cycles then restart
if changed pid then alert
MySQL
# mysql
check process mysql with pidfile /var/db/mysql/server.pid
start program = "/usr/local/etc/rc.d/mysql-server start"
stop program = "/usr/local/etc/rc.d/mysql-server stop"
if failed port 3306 protocol mysql 5 times within 5 cycles then restart
if changed pid then alert
if 5 restart within 5 cycle then alert
Ulteriori esempi di file di configurazione sono presenti nella relativa pagina del wiki di Monit.
L'interfaccia web
Come accennato in precedenza, Monit è dotato anche di un'interfaccia web da cui è possibile avere una visione complessiva dello stato del monitoraggio.
Vediamo come si presenta (clicca sull'immagine per ingrandirla):
Sistema
{.alignnone
.size-large .wp-image-236 width="642"
height="31"}
Filesystem
{.alignnone
.size-large .wp-image-238 width="642"
height="38"}
Servizi
{.alignnone
.size-large .wp-image-237 width="642"
height="60"}
Dettagli di un servizio
{.alignnone
.size-large .wp-image-239 width="642"
height="324"}
Conclusioni
Monit, come abbiamo visto, permette di tenere sotto controllo risorse e servizi, avvisandoci prontamente dei problemi che riscontra.
E' indubbiamente uno di quei tool che un buon sistemista deve sempre installare e configurare sui server che gestisce, perché permette di affrontare e risolvere i problemi prima che ci sia un impatto sui servizi ospitati.