Jun 112011
 

monit Se siete responsabili di alcuni servizi probabilmente avete impostato un qualche sistema di monitoraggio per segnalarvi se qualcosa non va (e-mail, sms o un Tweet), e così potete risolvere il problema rapidamente. Ma volete veramente essere sempre disponibili 24×7 tutti i periodi dell’anno?

Io non lo sono di sicuro, quindi guardiamo al programma Monit, un fantastico strumento in grado di gestire alcuni problemi per noi e che vi permetterà di godervi il vostro tempo libero.

monit_features

Monit è un programma gratuito e open source per la gestione e il monitoraggio di processi, file, directory e file system su un sistema UNIX. Monit effettua la manutenzione e la riparazione automatica e può eseguire azioni significative in situazioni di errore.

Cosa può fare Monit

Con Monit è possibile avviare un processo, se non è funzionante, riavviare un processo se non risponde e fermare un processo se utilizza troppe risorse. È possibile utilizzare Monit per monitorare file, directory e file system per le modifiche, come i cambiamenti di timestamp, checksum sulle modifiche o cambiamenti di dimensioni. È inoltre possibile monitorare gli host remoti, con Monit è possibile eseguire il ping un host remoto e può controllare le connessioni sulle porte TCP/IP. Monit è controllato tramite un file di controllo, facile da usare, basato su un formato libero, la sintassi è token-oriented. Monit scrive i propri log su syslog o sul suo file di log dove informa sulle condizioni di errore e di recupero, attraverso alert personalizzabili.

Questo è utile anche per ragioni di sicurezza è possibile monitorare il checksum MD5 dei file che non dovrebbe cambiare.

Installazione

Monit è disponibile in molte distribuzioni, è disponibile per Ubuntu e Debian, nei miei test ho usato una Debian 6.

aptitude install monit

Configurazione

Il file di configurazione principale è situato in /etc/monit/monitrc

1) Impostare Monit per lavorare come Daemon e svegliarlo ogni 5 minuti per fare le sue verifiche:

set daemon 300

2) Imposta syslog on la facility Daemon. Se l’opzione facility è omessa, Monit userà la struttura ‘user’ di default. Se si desidera invece accedere a un file di log standalone, specificare il percorso completo del file di log

set logfile syslog facility log_daemon

3) Imposta il server di posta, il formato delle e-mail e l’indirizzo e-mail per le notifiche:

set mailserver localhost
set mail-format { from: monit@linuxaria.com }
set alert  admin@linuxaria.com

Il server di posta può essere anche Gmail, se lo volete utilizzare mettete queste opzioni:

set mailserver smtp.gmail.com port 587 username "address@hidden"
password "password" using tlsv1 with timeout 30 seconds

mailformat può essere molto più complesso ed è possibile utilizzare alcuni tag, per esempio:

mail-format {
    from: monit@linuxaria.com
    subject: $SERVICE $EVENT at $DATE
    message: Monit $ACTION $SERVICE at $DATE on $HOST,
 
    Yours sincerely,
    Monit.
    }

Salvare il file, dopo di che aggiungerò un file per ogni singolo servizio che voglio mettere sotto il controllo di monit sotto /etc/monit/conf.d/ in modo che sia possibile tenere le cose più organizzate.

4) ssh, file /etc/monit/conf.d/sshd.conf

check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed host 127.0.0.1 port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout

Come si può vedere le opzioni sono veramente leggibili, forse c’e’ solo bisogno di una spiegazione:
if 5 restarts within 5 cycles then Ciò significa che se Monit riesce a far ripartire per 5 volte il demone, va in timeout per evitare un ciclo infinito.

5) mysql, file /etc/monit/conf.d/mysql.conf

check process mysqld with pidfile /var/run/mysqld/mysqld.pid
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

6) nginx , file /etc/monit/conf.d/nginx.conf

check process nginx with pidfile /var/run/nginx.pid
group www-data
start program = "/etc/init.d/nginx start"
stop program = "/etc/init.d/nginx stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout

Al momento sto cercando di trovare un buon setup per php5-fpm.

Dopo aver modificato il file di configurazione si dovrebbe verificare la sintassi per assicurarsi che sia corretta. Per fare ciò eseguire:

#monit -t
Control file syntax OK

Su Debian è inoltre necessario modificare il file /etc/default/monit e impostare l’opzione di startup a 1:

E ora si può far partire Monit e andare in vacanza.

/etc/init.d/monit start

Riferimenti

Monit Site
Configuration examples
Monitor Debian servers with monit
Monitor and restart Apache or lighttpd webserver when daemon is killed

Popular Posts:

flattr this!

  One Response to “Monit – Il vostor miglior impiegato”

  1. [...] » Linuxaria – Everything about GNU/Linux and Open source Monit – your best employe… :security, tutorialRelated Posts:FreeSSHd & Polipo 操作備忘GnuPG 入門備忘eCryptfs 操作備忘iptables recent module 操作備忘PuTTY – SSH 連線應用備忘 [...]

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>