Monit - Monitoraggio di processi e servizi per Linux
I servizi su qualsiasi server devono essere attivi e in esecuzione e fare ciò che dovrebbero fare.
Il monitoraggio automatizzato è necessario per garantire e massimizzare il tempo di attività e la disponibilità dei servizi di sistema su un server.
Consente agli amministratori di sistema di ricevere notifiche e risolvere i problemi il prima possibile con interruzioni o tempi di inattività minimi.
In questo post giocheremo con uno strumento chiamato Monit in grado di monitorare servizi e processi su un server e inviare e-mail di avviso quando qualcosa non va.
Lo strumento stesso è abbastanza leggero e consente agli utenti di scrivere "test" utilizzando un linguaggio di script molto semplice.
Installa Monitor
Sui sistemi basati su Debian e Ubuntu Monit è disponibile nei repository predefiniti. Installa usando apt-get
$ sudo apt-get install monit
Dopo l'installazione, monit verrà avviato come servizio in background e può essere verificato con il seguente comando
# service monit status * monit is running
Configura Monitor
La prossima cosa da fare è configurare monit per monitorare cose specifiche. Il file di configurazione per Monit si trova in /etc/monit/monitrc su sistemi basati su Ubuntu e Debian.
You can either add all configurations to this file - /etc/monit/monitrc, or create additional configuration files in the /etc/monit/conf.d/ directory and monit would automatically read and load all of them
Inizia a modificare il file di configurazione per aggiungere i servizi che desideri monitorare.
Monit ha anche un file di registro situato in /var/log/monit.log che conterrebbe informazioni preziose se è necessario correggere qualcosa
Dopo la configurazione, prova la nuova configurazione eseguendo il comando seguente
# sudo monit -t
Ricarica la nuova configurazione senza riavviare tutto di monit
# sudo monit reload
Abilita l'interfaccia web
L'interfaccia web consente di controllare i report di Monit dal browser. Ciò è utile durante l'impostazione e il test di monit. Successivamente, è meglio disabilitarlo per mantenere le cose al sicuro.
Trova la riga "set httpd" nel file di configurazione e decommenta. Se la linea non esiste, creane una.
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
Ora accedi a http://localhost:2812/ e l'interfaccia web di Monit dovrebbe aprirsi.
Imposta avvisi e-mail
L'idea alla base di monit è di essere avvisati ogni volta che si verifica qualcosa di inaspettato. Monit può inviare automaticamente e-mail. Trova la riga "imposta avviso" e specifica l'e-mail in cui desideri che vengano consegnati i rapporti. Specifica anche il server di posta da utilizzare.
set alert [email protected] set mailserver localhost
Assicurati che ci sia un server smtp (MTA) in esecuzione su localhost e che sia in grado di consegnare la posta correttamente. Utilizzare il comando mail per verificare che il sistema sia configurato correttamente per inviare e-mail.
Evita le email non di avviso - Monit per impostazione predefinita invia e-mail per ogni cosa che fa o tutto ciò che accade. Ad esempio quando inizia il monitoraggio. Tuttavia, vogliamo solo le e-mail specifiche dell'avviso. Modifica la configurazione come segue
set alert [email protected] not on {instance}
La configurazione di cui sopra non invia tramite e-mail i rapporti sull'istanza generati all'avvio/arresto del monitoraggio. Per ulteriori informazioni, consulta la documentazione di monitoraggio sui filtri degli eventi per gli avvisi.
Ecco come appare un'e-mail di avviso Monit. Viene generato quando viene eseguito un test dello spazio su disco e non riesce sul server.
Resource limit matched Service server_disk Date: Thu, 11 Jun 2015 15:41:43 Action: alert Host: localhost Description: space usage 61.4% matches resource limit [space usage>50.0%] Your faithful employee, Monit
Monitoraggio di servizi come Apache, Mysql, Postfix
Ora vuoi monitorare il tuo server web, server di database, server di posta e altri demoni per assicurarti che i servizi siano sempre attivi e funzionanti perfettamente. Questo è facile.
Continua ad aggiungere le istruzioni nel file di configurazione di monit per specificare ogni servizio che desideri monitorare e Monit inizierà a farlo immediatamente.
After changing configurations, make sure to run 'sudo monit reload' to bring them in effect. While testing you can manually turn services on/off and check the monit report from the web interface.
Ecco alcuni esempi -
1. Servizio HTTP - porta 80
L'esempio seguente dirà a Monit di verificare se il server http è in servizio sulla porta 80 o meno. In caso contrario, genererebbe un avviso
check host http_server with address localhost if failed port 80 protocol http then alert
Quindi, se c'è qualche problema con il server http (apache o nginx) verrebbe generato un avviso
Allo stesso modo puoi impostare monitor per altre porte come ftp, smtp, imap ecc.
2. Monitora lo stato del sito web
Il solo monitoraggio della porta 80 non è sufficiente per garantire che il sito Web sia attivo e funzionante. Dobbiamo assicurarci che il recupero di una pagina fornisca un codice di risposta http di 200. Ecco la configurazione richiesta
# check that website is working proper check host binarytides with address www.binarytides.com if failed port 80 protocol http request "/" status = 200 then alert
Se una delle opzioni "porta 80" o "server http" o "stato 200 per / url" non riesce, verrà generato un avviso. Questo è un modo efficace per verificare che il tuo sito sia attivo e disponibile per gli utenti.
3. Server Web Apache - Monitoraggio dei processi
I processi vengono monitorati utilizzando file pid specifici. Ad esempio su Debian Apache il server web ha un pid situato in /var/run/apache2/apache2.pid che può essere verificato per assicurarsi che apache sia in esecuzione o meno.
# Monitor Apache and restart if not running, also alert check process apache with pidfile /var/run/apache2/apache2.pid start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop"
Quanto sopra dice a monit di monitorare il processo dal file pid specificato. Da qui, se monit non trova il processo in esecuzione, tenterà di avviarlo utilizzando il comando specificato nel parametro "start program". Per impostazione predefinita, monit genererà anche un avviso (e-mail) al riavvio.
Solo monitor
Se non vuoi che monit riavvii apache e ti informi solo sull'evento, usa un diverso tipo di configurazione
# Alert if apache not running check process apache with pidfile /run/apache2/apache2.pid if does not exist then alert
4. Controlla Mysql sulla porta 3306 - Monitoraggio delle porte
In questo esempio monitoriamo il database mysql non utilizzando il pid ma collegandoci direttamente alla porta del servizio che è 3306.
Per controllare solo il numero di porta con protocollo utilizzare la seguente configurazione -
# check just port 3306 check host localmysql with address localhost if failed port 3306 protocol mysql then alert
La seguente configurazione verificherà il processo MySQL e si riavvierà se non è in esecuzione. Verificherebbe anche il servizio della porta 3306.
check process mysql_server 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 protocol mysql then alert
5. Monitora il server di posta e le porte di Postfix
Ora consente di impostare una configurazione per monitorare il server di posta postfix. La configurazione è identica alle precedenti, solo con un file pid e un numero di porta diversi
check host localpostfix with address localhost if failed port 25 protocol smtp then alert
Per monitorare il processo e riavviare in caso di errore, utilizzare questo -
check process postfix with pidfile /var/spool/postfix/pid/master.pid start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart
And do not forget that while postfix is down, monit might not be able to send any emails (unless there are other mail servers specified). But monit would send them once the mail server is up again.
6. Avvisa ripetutamente
Per impostazione predefinita, Monit genera un avviso solo due volte. Una volta quando un test fallisce e un altro quando ha successo.
Se desideri ricevere avvisi ripetuti per lo stesso test non riuscito (se è troppo importante, ad esempio), utilizza la seguente configurazione.
set alert [email protected] with reminder on 15 cycles
La configurazione di cui sopra è un'impostazione globale, che invia tutti gli avvisi dopo ogni 15 controlli/cicli.
Per ripetere gli avvisi solo per test specifici, specifica la direttiva di avviso all'interno dei criteri di test particolari come questo
check filesystem datafs with path /dev/sda1 alert [email protected] with reminder on 1 cycles if space usage > 80% for 5 times within 5 cycles then alert
Se desideri ricevere un promemoria meno volte ma ripetutamente, utilizza qualcosa come "promemoria su 10 cicli".
Controlla lo stato di monitoraggio
Ciò richiede che il demone http monit sia in esecuzione.
$ sudo monit status The Monit daemon 5.8.1 uptime: 0m Process 'apache' status Running monitoring status Monitored pid 1335 parent pid 1 uid 0 effective uid 0 gid 0 uptime 1h 52m children 7 memory kilobytes 29556 memory kilobytes total 241604 memory percent 0.3% memory percent total 2.9% cpu percent 0.0% cpu percent total 0.0% data collected Fri, 05 Dec 2014 11:11:18 System 'enlightened' status Running monitoring status Monitored load average [0.05] [0.26] [0.35] cpu 3.7%us 0.8%sy 0.0%wa memory usage 3613152 kB [44.2%] swap usage 0 kB [0.0%] data collected Fri, 05 Dec 2014 11:11:18
Oppure controlla l'interfaccia web su http://localhost:2812/ per controllare lo stato di tutto
Conclusione
Gli esempi precedenti mostrano solo esempi molto semplici di impostazione di attività di monitoraggio con Monit.
Monit è in grado di eseguire operazioni molto più complesse come eseguire il ping degli host di rete, eseguire script esterni e testare l'output per un determinato valore.
Controlla la documentazione completa su -
https://mmonit.com/monit/documentation/monit.html
Esempi di configurazione dalla pagina wiki di Monit contiene molti esempi su come configurare i monitor per vari servizi -
http://mmonit.com/wiki/Monit/ConfigurationExamplesSe hai commenti o domande, faccelo sapere nei commenti qui sotto.