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 è 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:
- None Found
[…] » Linuxaria – Everything about GNU/Linux and Open source Monit – your best employe… :security, tutorialRelated Posts:FreeSSHd & Polipo 操作備忘GnuPG 入門備忘eCryptfs 操作備忘iptables recent module 操作備忘PuTTY – SSH 連線應用備忘 […]