Tenere i servizi sotto controllo con Monit

monit banner

monit bannerIn questi giorni mi è capitato di dover risolvere un problema per un mio cliente il quale, utilizzando un sistema di monitoraggio remoto, doveva assicurarsi che un servizio fosse sempre attivo.

Poiché su questo sistema avevo messo una Debian mi son detto: chissà se c’è già qualcosa di pronto… detto-fatto ho usato il solito:

$ apt-cache search monitoring daemons

ed è spuntato:

monit – A utility for monitoring and managing daemons or similar programs

In questo articolo vi farò vedere, brevemente, come lo si può utilizzare su di un server di rete.

Innanzi tutto installiamo monit. Sulla mia Ubuntu ho dato:

$ sudo aptitude install monit

The following NEW packages will be installed:
  monit
0 packages upgraded, 1 newly installed, 0 to remove and 10 not upgraded.
Need to get 524 kB of archives. After unpacking 950 kB will be used.
Get:1 http://ftp.us.debian.org/debian/ squeeze/main monit amd64 1:5.1.1-1 [524 kB]
Fetched 524 kB in 1s (418 kB/s)
Selecting previously deselected package monit.
(Reading database … 83577 files and directories currently installed.)
Unpacking monit (from …/monit_1%3a5.1.1-1_amd64.deb) …
Processing triggers for man-db …
Setting up monit (1:5.1.1-1) …
Starting daemon monitor: monit won’t be started/stopped
    unless it it’s configured
    please configure monit and then edit /etc/default/monit
    and set the “startup” variable to 1 in order to allow
    monit to start

Come si vede dal messaggio, per default, monit non parte fintantoché non lo si abilita specificatamente, questo perché prima va configurato correttamente!

Il file di configurazione principale si trova in /etc/monit/monitrc, mentre nella directory /etc/monit/conf.d è possibile aggiungere altri file di configurazione specifici che verranno letti allo start up del demone. Io ho deciso di ulizzare un file diverso per ogni servizio che voglio controllare con monit.

Prima però impostiamo i settaggi di default. Ho settato prima l’intervallo di esecuzione del demone a 2 minuti con ritardo iniziale di 4:

set daemon  120           # check services at 2-minute intervals
    with start delay 240  # optional: delay the first check by 4-minutes (by
                          # default Monit check immediately after Monit start)

Poi ho abilitato il logging:

set logfile syslog facility log_daemon

Ho impostato il mailserver (che nel mio caso è l’host su cui gira monit):

set mailserver localhost

Quindi ho abilitato la coda di salvataggio dei messaggi e-mail (a 100 slot) nel caso il servizio di posta non fosse disponibile:

set eventqueue
    basedir /var/monit  # set the base directory where events will be stored
    slots 100           # optionally limit the queue size

Ed, in fine, ho impostato l’indirizzo e-mail a cui inviare i messaggi di allerta:

set alert monit@consulenti-ict.it

Benissimo, ora posso aggiungere i file di configurazione per i vari servizi che voglio tenere sotto controllo!

Prima di tutto definisco delle impostazioni di sistema:

# cat > /etc/monit/conf.d/system.conf
check system localhost
  if loadavg (5min) > 3 then alert
  if memory usage > 85% then alert
  if cpu usage (user) > 70% then alert
  if cpu usage (system) > 40% then alert
  if cpu usage (wait) > 30% then alert

In questo modo dico a monit di controllare i parametri di sistema più classici: carico medio, utilizzo della memoria, ecc.. Credo che il file si commenti da solo… :)

Poi ho aggiunto un file di configurazione per controllare che MySQL sia sempre attivo:

ict:~# cat /etc/monit/conf.d/mysql.conf  
# Monitoring Mysql Service

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

Anche in questo caso direi che non c’è molto da spiegare… praticamente il file si legge da solo: controlla il processo mysql con PID file in /var/run/mysqld/mysqld.pid, gruppo database, per avviare e fermare il demone usa i comandi /etc/init.d/mysql start e /etc/init.d/mysql stop; quindi tieni sotto controllo la porta TCP 3306 all’indirizzo 127.0.0.1 e se fallisce riavvia il demone e se fai 5 riavvii all’inetrno di 5 cicli (di esecuzione di monit) vai in timeout e segnala l’evento all’amministratore. Facile no?

Quindi, aggiungendo altri file di configurazione posso tenere sotto controllo più servizi di sistema (invito il lettore curioso a leggere la documentazione di monit).

A questo punto per verificare che il file di configurazione non contenga errori uso:

# monit -t
Control file syntax OK

e quindi per attivare il demone edito il file /etc/default/monit mettendo la variabile startup=1 ed abilitando la variabile STATEFILE quindi do il comando:

# /etc/init.d/monit start
Starting daemon monitor: monit.

e nel file di log vedo:

# grep monit /var/log/syslog
Jan 13 12:13:03 ict monit[6046]: Starting monit daemon
Jan 13 12:13:03 ict monit[6046]: Monit start delay set — pause for 240s

Perfetto! Il sistema è partito e, da ora in poi, posso stare tranquillo che tutti i servizi controllati da monit saranno sempre attivi! O, almeno, verrò avvisato…

Su Rodolfo Giometti

Ingegnere informatico libero professionista ed esperto GNU/Linux offre supporto per: - device drivers; - sistemi embedded; - sviluppo applicazioni industriali per controllo automatico e monitoraggio remoto; - corsi di formazione dedicati. Manutentore del progetto LinuxPPS (il sottosistema Pulse Per Second di Linux) contribuisce attivamente allo sviluppo del kernel Linux con diverse patch riguardanti varie applicazioni del kernel e dispositivi (switch, fisici di rete, RTC, USB, I2C, network, ecc.). Nei 15+ anni di esperienza su Linux ha lavorato con le piattaforme x86, ARM, MIPS & PowerPC.

Lascia un commento

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi