Introduzione
Monit è un programma utile che monitora e gestisce automaticamente i programmi server per garantire che non solo rimangano online in modo coerente, ma che le dimensioni del file, il checksum o le autorizzazioni siano sempre corretti.
# yum install monit ( To install monit On RedHat/CentOS/Fedora/ ) # sudo apt-get install monit ( To install monit On Ubuntu/Debian )
Configura il demone Monit
# vi /etc/monit.conf ( Configuration file in RedHat/CentOS/Fedora/ ) # vi /etc/monit/monitrc ( Configuration file in Ubuntu/Debian )
ORA AGGIUNGONO I SERVIZI PER MONITORARE IL FILE DI CONFIGURAZIONE
Apri il file di configurazione, ad esempio
For RedHat/CentOS/Fedora (# vi /etc/monit.conf) For Ubuntu/Debian (# vi /etc/monit/monitrc)
Elimina tutte le righe nel file di configurazione e aggiungi le righe indicate di seguito. (ogni riga è definita brevemente di seguito)
Imposta intervallo demone
Questo è l'intervallo (in secondi) in cui Monit esegue i test. Il valore che scegli dipenderà dal numero di test che definisci. Se cambiamo questo valore, dovrai riavviare Monit.
# check services at 30 seconds of intervals set daemon 30
Imposta file di registro
# set logfile syslog facility log_daemon set logfile /var/log/monit.log
Controlla le impostazioni di utilizzo della memoria e riavvia
##To check the memory usage and restart the services. check system localhost if memory usage > 93% then exec "/usr/local/bin/httpd-start"
Controlla il servizio HTTPD e riavvia
Qui il servizio Httpd è monitorato da monit, ovvero quando il servizio non è in esecuzione o quando il loadavg è maggiore di monit eseguirà il riavvio del servizio httpd
#To check the Httpd service and restart the services. # Httpd check process httpd with pidfile /var/run/httpd/httpd.pid start program = "/usr/local/bin/httpd-start" stop program = "/usr/local/bin/httpd-kill" if loadavg (1min) greater than 10 for 1 cycles then restart
Controlla il servizio mysqld e riavvia
Qui il servizio Mysqld è monitorato da monit, ovvero quando il servizio non è in esecuzione o quando il loadavg è maggiore di monit eseguirà il riavvio del servizio Mysql
#To check the mysql service and restart the services. # mysqld check process mysqld with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if memory usage > 70% for 1 cycles then restart if failed host 127.0.0.1 port 3306 then restart if loadavg (1min) greater than 5 for 1 cycles then restart
Allo stesso modo possiamo aggiungere qualsiasi servizio che deve essere monitorato da monit e riavviare
Una volta aggiunti tutti i servizi nel file di configurazione. il file di configurazione appare come sotto..
# check services at 2-minute intervals set daemon 30 # set logfile syslog facility log_daemon set logfile /var/log/monit.log ##To check the memory usage and restart the services. check system localhost if memory usage > 93% then exec "/usr/local/bin/httpd-start" #To check the Httpd service and restart the services. # Httpd check process httpd with pidfile /var/run/httpd/httpd.pid start program = "/usr/local/bin/httpd-start" stop program = "/usr/local/bin/httpd-kill" if loadavg (1min) greater than 10 for 1 cycles then restart #To check the mysql service and restart the services. # mysqld check process mysqld with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if memory usage > 70% for 1 cycles then restart if failed host 127.0.0.1 port 3306 then restart if loadavg (1min) greater than 5 for 1 cycles then restart
NOTA:poiché abbiamo definito la seguente riga nel file di configurazione
start program =“/usr/local/bin/httpd-start”
stop program =“/usr/local/bin/httpd-kill”
Dobbiamo aggiungere gli script httpd-start, httpd-kill, ad esempio
crea un file con il seguente comando e aggiungi le seguenti righe
vi /usr/local/bin/httpd-start
#!/bin/bash /usr/bin/killall -9 httpd; /usr/bin/killall -9 php-cgi; /usr/bin/ipcs |grep apache | /bin/cut -d" " -f2 | /usr/bin/xargs /usr/bin/ipcrm sem {}; /bin/sleep .5; /usr/sbin/apachectl start #/sbin/swapoff -a #/sbin/swapon -a exit 0;
ora salva ed esci usando il comando
:wq!
Ora lo stesso per lo script httpd-kill
crea un file con il seguente comando e aggiungi le seguenti righe
vi /usr/local/bin/httpd-kill
#!/bin/bash /usr/bin/killall -9 httpd; /usr/bin/ipcs |grep apache | /bin/cut -d" " -f2 | /usr/bin/xargs /usr/bin/ipcrm sem {}; /bin/sleep .5; exit 0;
allo stesso modo dobbiamo definire per gli script Mysqld..
Dopo aver configurato tutti i programmi per il monitoraggio, controlla se ci sono errori nella sintassi di monit. Se vengono rilevati errori, risolverli, non è così difficile capire cosa è andato storto. Usando il comando seguente
# monit -t
Se il file di configurazione monit è corretto, viene visualizzato un messaggio del tipo "Control file syntax OK" o se non vengono visualizzati errori,
Dopo aver corretto tutti i possibili errori, puoi digitare il seguente comando per avviare il servizio di monitoraggio.
# /etc/init.d/monit start
Verifica del servizio Monit
Puoi verificare che il servizio di monitoraggio sia avviato controllando il file di registro.
# tail -f /var/log/monit
L'output del registro di esempio è il seguente
[BDT Apr 3 03:06:04] info : Starting monit HTTP server at [localhost:2812] [BDT Apr 3 03:06:04] info : monit HTTP server started [BDT Apr 3 03:06:04] info : 'e2enetworks.com' Monit started [BDT Apr 3 03:06:04] error : 'nginx' process is not running [BDT Apr 3 03:06:04] info : 'nginx' trying to restart [BDT Apr 3 03:06:04] info : 'nginx' start: /etc/init.d/nginx