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

Monitoraggio del server con Munin e Monit su CentOS 7.2

In questo articolo, descriverò come monitorare il tuo server CentOS 7 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 7.2, ma la configurazione dovrebbe essere applicata anche ad altre distribuzioni come RHEL e Scientific Linux.

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/html.

2 Abilita il repository EPEL

In CentOS 7, Munin e Monit non sono disponibili nei repository CentOS predefiniti. Fortunatamente, possiamo installarli dal repository EPEL. Per abilitare il repository EPEL, eseguiamo:

yum -y install epel-release

Importa la chiave EPEL GPG:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

e quindi esegui:

yum -y update

per garantire che il sistema sia aggiornato e che l'elenco dei pacchetti da EPEL venga caricato prima di iniziare l'installazione di munin.

2 Installa il server web Apache

Munin richiede un server web per servire e visualizzare i suoi file di statistiche. Installerò il server httpd di Apache qui:

yum install httpd

Avvia Apache e abilita l'avvio automatico all'avvio.

systemctl enable httpd
systemctl start httpd

4 Installa e configura Munin

Per installare Munin su CentOS, procediamo come segue:

yum -y install munin munin-node

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

systemctl enable munin-node
systemctl start munin-node

Successivamente, dobbiamo modificare il file di configurazione di Munin /etc/munin/munin.conf.

nano /etc/munin/munin.conf

Vogliamo che munin utilizzi il nome server1.example.com invece di localhost nell'output HTML, quindi sostituiamo localhost con server1.example.com. Senza i commenti, il file modificato si presenta così:

[...]
# a simple host tree
[server1.example.com]
    address 127.0.0.1
    use_node_name yes
[...]

Le statistiche di munin sono protette con un nome utente e una password (Apache basic auth). Nel passaggio successivo aggiungiamo un nuovo utente e una nuova password al file /etc/munin/munin-htpasswd.

htpasswd /etc/munin/munin-htpasswd admin

Il comando aggiungerà un nuovo utente con il nome "admin" e richiederà due volte la nuova password.

Ora attendi qualche minuto in modo che munin possa produrre il primo output delle statistiche, quindi vai su http://server1.example.com/munin/ nel tuo browser e vedrai le prime statistiche.

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

5 Installa e configura Monit

Successivamente, installeremo Monit:

yum -y install monit

Quindi creiamo i collegamenti di avvio del sistema per Monit:

systemctl enable monit
systemctl start monit

Il file di configurazione predefinito di Monit è /etc/monitrc 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 anche a Monit di cerca nella directory /etc/monit.d i file di configurazione.

In questo caso, controllerò:

  • proftpd
  • sshd
  • MariaDB
  • apache
  • postfisso

Inoltre, configurerò queste impostazioni per Monit:

  • Abilita l'interfaccia web di Monit sulla porta 2812.
  • Utilizza HTTPS per l'interfaccia web anziché HTTP.
  • Configura un accesso protetto da password per l'interfaccia web.
  • Monit invierà avvisi via email a [email protetta].

Innanzitutto, configurerò le impostazioni di autenticazione. Apri il file /etc/monitrc

nano /etc/monitrc

E scorri verso il basso fino a trovare questa sezione:

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

Sostituiscilo con le seguenti impostazioni:

set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:test

La parola "test" è la password, sostituirla con una password sicura e potresti anche voler cambiare il nome utente "admin" con un nome che non può essere indovinato facilmente.

Ora aggiungiamo la configurazione per i servizi monitorati. Invece di modificare /etc/monitrc, creiamo un nuovo file di configurazione /etc/monit.d/monitrc.

Il mio file è simile a questo:

nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon

# Send emails trough this mailserver
set mailserver localhost
# Set the From address of the alert emails
set mail-format { from: [email protected] }
# Send alerts to this address
set alert [email protected]
# Monitor the Proftpd service check process proftpd with pidfile /var/run/proftpd/proftpd.pid start program = "/usr/bin/systemctl start proftpd" stop program = "/usr/bin/systemctl stop proftpd" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout
# Monitor the SSH service check process sshd with pidfile /var/run/sshd.pid start program "/usr/bin/systemctl start sshd" stop program "/usr/bin/systemctl stop sshd" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout
# Monitor MariaDB check process mysql with pidfile /var/run/mariadb/mariadb.pid group database start program = "/usr/bin/systemctl start mariadb" stop program = "/usr/bin/systemctl stop mariadb" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
# Monitor the apache webserver check process apache with pidfile /var/run/httpd/httpd.pid group www start program = "/usr/bin/systemctl start httpd" stop program = "/usr/bin/systemctl stop httpd" if failed host localhost 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
# Monitor postfix mailserver check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/usr/bin/systemctl start postfix" stop program = "/usr/bin/systemctl stop postfix" 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 localhost port 80 protocol http
      and request "/monit_token" then restart

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

touch /var/www/html/monit_token

Successivamente, creiamo il certificato SSL (pem) (/var/certs/monit.pem) di cui abbiamo bisogno per l'interfaccia Web Monit con crittografia SSL:

mkdir /var/certs
cd /var/certs

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

nano /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 avviare Monit:

systemctl restart monit

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 Monit. 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 non riescono e invierà email di notifica se gli ID di processo dei servizi cambiano, ecc.

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

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 5.2

Monitoraggio del server con Munin e Monit su CentOS 7

Monitoraggio del server con munin e monit su Fedora 7

Configurazione di un server OpenVPN con CentOS e Viscosity