GNU/Linux >> Linux Esercitazione >  >> Cent OS

Monitoraggio del server con munin e monit su CentOS 5.2

In questo articolo descriverò come monitorare il tuo server CentOS 5.2 con munin e monit. munin produce graziosi grafici su quasi ogni aspetto del tuo server (media del carico, utilizzo della memoria, utilizzo della CPU, throughput MySQL, traffico eth0, ecc.) senza molta configurazione, mentre monit controlla la disponibilità di servizi come Apache, MySQL, Postfix e prende l'azione appropriata come un riavvio se rileva che un servizio non si comporta come previsto. La combinazione dei due ti offre un monitoraggio completo:grafica che ti consente di riconoscere problemi attuali o imminenti (come "Abbiamo bisogno presto di un server più grande, la nostra media di carico sta aumentando rapidamente.") e un watchdog che garantisce la disponibilità dei servizi monitorati .

Sebbene munin ti consenta di monitorare più di un server, qui discuteremo solo del monitoraggio del sistema in cui è installato.

Questo tutorial è stato scritto per CentOS 5.2, ma la configurazione dovrebbe essere applicata anche ad altre distribuzioni con piccole modifiche.

Voglio dire in primo luogo che questo non è l'unico modo per impostare un tale sistema. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo in cui prendo. Non garantisco che questo funzionerà per te!

1 Nota preliminare

Il nome host del nostro sistema è server1.example.com e abbiamo un sito Web www.example.com con la radice del documento /var/www/www.example.com/web.

2 Abilita il repository RPMforge

In CentOS 5.2, munin e monit non sono disponibili nei repository CentOS predefiniti. Fortunatamente possiamo installarli dal repository RPMforge. Per abilitare il repository RPMforge, eseguiamo

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.i386.rpm

su host i386 e

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

su host x86_64 (consulta https://rpmrepo.org/RPMforge/Using per le ultime versioni).

3 Installa e configura munin

Per installare munin su CentOS 5.2, procediamo come segue:

yum install munin munin-node

Quindi creiamo i collegamenti di avvio del sistema per munin e lo avviamo:

chkconfig --levels 235 munin-node on
/etc/init.d/munin-node start

Successivamente, dobbiamo modificare il file di configurazione di munin /etc/munin/munin.conf. Vogliamo che munin metta il suo output nella directory /var/www/www.example.com/web/monitoring, quindi cambiamo il valore di htmldir e vogliamo che usi il nome server1.example.com invece di localhost. localdomain nell'output HTML, quindi sostituiamo localhost.localdomain con server1.example.com. Senza i commenti, il file modificato si presenta così:

vi /etc/munin/munin.conf
[...]
dbdir   /var/lib/munin
htmldir /var/www/www.example.com/web/monitoring
logdir  /var/log/munin
rundir  /var/run/munin

# Where to look for the HTML templates
tmpldir /etc/munin/templates
[...]
# a simple host tree
[server1.example.com]
    address 127.0.0.1
    use_node_name yes
[...]

Quindi creiamo la directory /var/www/www.example.com/web/monitoring e cambiamo la sua proprietà nell'utente e nel gruppo munin, altrimenti munin non può posizionare il suo output in quella directory. Quindi riavviamo munin:

mkdir -p /var/www/www.example.com/web/monitoring
chown munin:munin /var/www/www.example.com/web/monitoring
/etc/init.d/munin-node restart

Ora attendi qualche minuto in modo che munin possa produrre il suo primo output, quindi vai su http://www.example.com/monitoring/ nel tuo browser e vedrai le prime statistiche. Dopo qualche giorno potrebbe apparire così:

(Questo è solo un piccolo estratto delle tante grafiche che munin produce...)

4 Protezione con password Directory di output munin (opzionale)

Ora è una buona idea proteggere con password la directory /var/www/www.example.com/web/monitoring a meno che tu non voglia che tutti possano vedere ogni piccola statistica sul tuo server.

Per fare ciò, creiamo un file .htaccess in /var/www/www.example.com/web/monitoring:

vi /var/www/www.example.com/web/monitoring/.htaccess
AuthType Basic
AuthName "Members Only"
AuthUserFile /var/www/www.example.com/.htpasswd
<limit GET PUT POST>
require valid-user
</limit>

Quindi dobbiamo creare il file della password /var/www/www.example.com/.htpasswd. Vogliamo accedere con il nome utente admin, quindi facciamo questo:

htpasswd -c /var/www/www.example.com/.htpasswd admin

Inserisci una password per l'amministratore e il gioco è fatto!

5 Installa e configura monit

Quindi installiamo monit:

yum install monit

Quindi creiamo i collegamenti di avvio del sistema per monit:

chkconfig --levels 235 monit on

il file di configurazione predefinito di monit è /etc/monit.conf dove puoi trovare alcuni esempi di configurazione (puoi trovare altri esempi di configurazione su http://mmonit.com/wiki/Monit/ConfigurationExamples) che sono tutti commentati, ma dice a monit per cercare anche nella directory /etc/monit.d i file di configurazione, quindi invece di modificare /etc/monit.conf, creiamo un nuovo file di configurazione /etc/monit.d/monitrc. Nel mio caso voglio monitorare proftpd, sshd, mysql, apache e postfix, voglio abilitare l'interfaccia web monit sulla porta 2812, voglio un'interfaccia web https, voglio registrare in a l'interfaccia web con il nome utente admin e il test della password e voglio che monit invii avvisi e-mail a [email protetta], quindi il mio file ha questo aspetto:

vi /etc/monit.d/monitrc
set daemon  60
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: [email protected] }
set alert [email protected]
set httpd port 2812 and
     SSL ENABLE
     PEMFILE  /var/certs/monit.pem
     allow admin:test

check process proftpd with pidfile /var/run/proftpd.pid
   start program = "/etc/init.d/proftpd start"
   stop program  = "/etc/init.d/proftpd stop"
   if failed port 21 protocol ftp then restart
   if 5 restarts within 5 cycles then timeout

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

check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/etc/init.d/mysqld start"
   stop program = "/etc/init.d/mysqld stop"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout

check process apache with pidfile /var/run/httpd.pid
   group www
   start program = "/etc/init.d/httpd start"
   stop program  = "/etc/init.d/httpd stop"
   if failed host www.example.com port 80 protocol http
      and request "/monit/token" then restart
   if cpu is greater than 60% for 2 cycles then alert
   if cpu > 80% for 5 cycles then restart
   if totalmem > 500 MB for 5 cycles then restart
   if children > 250 then restart
   if loadavg(5min) greater than 10 for 8 cycles then stop
   if 3 restarts within 5 cycles then timeout

check process postfix with pidfile /var/spool/postfix/pid/master.pid
   group mail
   start program = "/etc/init.d/postfix start"
   stop  program = "/etc/init.d/postfix stop"
   if failed port 25 protocol smtp then restart
   if 5 restarts within 5 cycles then timeout

(Assicurati di controllare solo i processi realmente esistenti sul tuo server, altrimenti monit non si avvierà. Ad esempio, se dici a monit di controllare Postfix, ma Postfix non è installato sul sistema, monit non si avvierà.)

Il file di configurazione è abbastanza autoesplicativo; se non sei sicuro di un'opzione, dai un'occhiata alla documentazione di monit:http://mmonit.com/monit/documentation/monit.html

Nella parte apache della configurazione di monit trovi questo:

   if failed host www.example.com port 80 protocol http
      and request "/monit/token" then restart

il che significa che monit tenta di connettersi a www.example.com sulla porta 80 e tenta di accedere al file /monit/token che è /var/www/www.example.com/web/monit/token perché la radice del documento del nostro sito Web è /var/www/www.example.com/web. Se monit non riesce, significa che Apache non è in esecuzione e monit lo riavvierà. Ora dobbiamo creare il file /var/www/www.example.com/web/monit/token e scriverci una stringa casuale:

mkdir /var/www/www.example.com/web/monit
echo "hello" > /var/www/www.example.com/web/monit/token

Quindi creiamo il pem cert (/var/certs/monit.pem) di cui abbiamo bisogno per l'interfaccia web monit crittografata con SSL:

mkdir /var/certs
cd /var/certs

Abbiamo bisogno di un file di configurazione OpenSSL per creare il nostro certificato. Può assomigliare a questo:

vi /var/certs/monit.cnf
# create RSA certs - Server

RANDFILE = ./openssl.rnd

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type

[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = MO

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Monitoria

localityName                    = Locality Name (eg, city)
localityName_default            = Monittown

organizationName                = Organization Name (eg, company)
organizationName_default        = Monit Inc.

organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Dept. of Monitoring Technologies

commonName                      = Common Name (FQDN of your server)
commonName_default              = server.monit.mo

emailAddress                    = Email Address
emailAddress_default            = [email protected]

[ cert_type ]
nsCertType = server

Ora creiamo il certificato in questo modo:

openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

Infine, possiamo iniziare a monitorare:

/etc/init.d/monit start

Ora punta il tuo browser su https://www.example.com:2812/ (assicurati che la porta 2812 non sia bloccata dal tuo firewall), accedi con admin e prova, e dovresti vedere l'interfaccia web di monitoraggio. Dovrebbe assomigliare a questo:

(Schermata principale)

(Pagina di stato di Apache)

A seconda della tua configurazione in /etc/monit.d/monitrc, monit riavvierà i tuoi servizi se falliscono e invierà e-mail di notifica se gli ID di processo dei servizi cambiano, ecc.

Buon divertimento!

  • munin:http://munin.projects.linpro.no
  • monito:http://mmonit.com/monito
  • CentOS:http://www.centos.org
  • RPMforge:https://rpmrepo.org/RPMforge

Cent OS
  1. Monitoraggio del server con Icinga 2 e Icingaweb 2 su CentOS 7

  2. Configurazione di un server e client NFS su CentOS 7.2

  3. Monitora e gestisci i tuoi servizi con Monit su CentOS 6 / RHEL 6

  4. Come monitorare l'utilizzo delle risorse del tuo server con Munin su CentOS 6

  5. Installa Zenario con Apache, PHP e MariaDB su CentOS 7

Monitoraggio del server con Munin e Monit su Debian 10

Monitoraggio del server con Munin e Monit su Debian 8 (Jessie)

Monitoraggio del server con Munin e Monit su CentOS 7

Monitoraggio del server con Munin e Monit su CentOS 7.2

Monitoraggio del server con munin e monit su Fedora 7

Configurazione di un server OpenVPN con CentOS e Viscosity