GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Monitoraggio del server con Munin e Monit su Ubuntu 16.04 LTS (Xenial Xerus)

Questo tutorial ti mostrerà come monitorare un server Ubuntu 16.04 con Munin e Monit. Munin produce bei grafici su quasi ogni aspetto del tuo server, mentre Monit controlla la disponibilità di servizi come  Apache, MySQL, Postfix e intraprende l'azione appropriata come un riavvio se rileva che un servizio non si comporta come previsto. La combinazione dei due offre un monitoraggio completo:grafica che consente di riconoscere i problemi attuali o imminenti e un watchdog che garantisce la disponibilità dei servizi monitorati. Questo tutorial contiene due capitoli (opzionali) sull'integrazione di Munin e Monit in ISPConfig 3.1.

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.

I seguenti passaggi devono essere eseguiti come utente root. Per diventare utente root sul tuo server, esegui questo comando:

sudo -s

Assicurati che il sistema sia aggiornato prima di iniziare a installare Munin, esegui:

apt-get update
apt-get upgrade

Apache viene utilizzato per mostrare le pagine Munin, il modulo apache fcgid è richiesto per la funzione di zoom del grafico Munin. Installerò apache e il modulo libapache2-mod-fcgid con apt.

apt-get -y install apache2 libcgi-fast-perl libapache2-mod-fcgid

Abilita il modulo fcgid in apache.

a2enmod fcgid

2 Installa e configura Munin

Per installare Munin su Ubuntu 16.04, esegui i comandi seguenti:

apt-get -y install munin munin-node munin-plugins-extra

Quando il server esegue MySQL o MariaDB, abilita alcuni plugin aggiuntivi Munin per monitorare MySQL:

cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/mysql_ mysql_
ln -s /usr/share/munin/plugins/mysql_bytes mysql_bytes
ln -s /usr/share/munin/plugins/mysql_queries mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads mysql_threads

Successivamente, dobbiamo modificare il file di configurazione di Munin /etc/munin/munin.conf. Decommenta le righe dbdir, htmldir, logdir, rundir e tmpldir (i valori predefiniti vanno bene). Vogliamo che Munin utilizzi il nome server1.example.com invece di localhost.localdomain nell'output HTML, quindi sostituiamo localhost.localdomain con server1.example.com nella sezione dell'albero host semplice. Senza i commenti, il file modificato si presenta così:

nano /etc/munin/munin.conf
# Example configuration file for Munin, generated by 'make build'

# The next three variables specifies where the location of the RRD
# databases, the HTML output, logs and the lock/pid files. They all
# must be writable by the user running munin-cron. They are all
# defaulted to the values you see here.
#
dbdir /var/lib/munin
htmldir /var/cache/munin/www
logdir /var/log/munin
rundir /var/run/munin

# Where to look for the HTML templates
#
tmpldir /etc/munin/templates

# Where to look for the static www files
#
#staticdir /etc/munin/static

# temporary cgi files are here. note that it has to be writable by
# the cgi user (usually nobody or httpd).
#
# cgitmpdir /var/lib/munin/cgi-tmp # (Exactly one) directory to include all files from. includedir /etc/munin/munin-conf.d [...] # a simple host tree
[server1.example.com]
address 127.0.0.1
use_node_name yes [...]

Dovremmo trovare il file di configurazione di Apache per Munin /etc/munin/apache.conf - definisce un alias chiamato munin nella directory di output HTML di munin /var/cache/munin/www, il che significa che possiamo accedere a munin da tutti i siti Web su questo server utilizzando il percorso relativo /munin (es. http://www.example.com /munin).

Ora modificheremo il file munin.conf per Apache per consentire l'accesso da indirizzi IP esterni. Crea un backup del file originale:

mv /etc/munin/apache24.conf /etc/munin/apache24.conf_bak

Apri il nuovo file con un editor:

nano /etc/munin/apache24.conf

E incolla il contenuto qui sotto:

Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
# Require local
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
Options None
</Directory>

ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
# Require local
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Location>

Riavvia Apache:

service apache2 restart

Quindi riavvia Munin:

service munin-node restart

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

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

Ora è una buona idea proteggere con password la directory di output di munin a meno che tu non voglia che tutti possano vedere ogni piccola statistica sul tuo server.

Per fare ciò, dobbiamo creare il file della password /etc/munin/munin-htpasswd. Vogliamo accedere con il nome utente admin, quindi facciamo questo:

htpasswd -c /etc/munin/munin-htpasswd admin

Inserisci una password per l'amministratore. Quindi apri di nuovo /etc/munin/apache.conf...

nano /etc/munin/apache24.conf

... commenta "Richiedi tutto concesso e aggiungi le righe che ho segnato in rosso:

Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
# Require local
# Require all granted
AuthUserFile /etc/munin/munin-htpasswd
AuthName "Munin"
AuthType Basic
Require valid-user
Options None
</Directory>

ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
# Require local
# Require all granted
AuthUserFile /etc/munin/munin-htpasswd
AuthName "Munin"
AuthType Basic
Require valid-user
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Location>

Quindi riavvia Apache:

service apache2 restart

4 Abilita moduli aggiuntivi in ​​Munin

Il comando Munin "munin-node-configure --suggest" può essere utilizzato per ottenere consigli per moduli Munin aggiuntivi che possono essere abilitati sul server. Corri:

munin-node-configure --suggest

L'output dovrebbe essere simile a questo:

La colonna "usato" mostra se un modulo è abilitato, la colonna "Suggerimenti" mostra se il server esegue un servizio che può essere monitorato da questo modulo. Crea un collegamento simbolico per il modulo in /etc/munin/plugins per abilitarlo.

Qui abiliterò ad esempio i moduli apache_*:

cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume

Riavvia Munin per caricare la nuova configurazione.

service munin-node restart

5 Configura Munin in ISPConfig (opzionale)

Il pannello di controllo dell'hosting ISPConfig ha un'opzione per mostrare i dati Munin all'interno del modulo ISPConfig Monitor. I dati Munin vengono caricati in un iframe, poiché la maggior parte dei browser blocca il contenuto da caricare da http all'interno di un sito https, dovremo trovare un modo per accedere alle statistiche Munin su SSL. Il modo più semplice è utilizzare il vhost ISPConfig abilitato SSL per questo creando un collegamento simbolico all'interno della directory web di ISPConfig alla directory dei dati di Munin www.

ln -s /var/cache/munin/www /usr/local/ispconfig/interface/web/munin

Ora possiamo accedere a Munin in un browser con https://server1.example.com:8080/munin tramite ISPConfig apache vhost.

Il passaggio successivo consiste nell'aggiungere la configurazione in ISPConfig.

Accedi a ISPConfig come utente amministratore (amministratore) e vai su Sistema> Configurazione server, inserisci l'URL, il nome utente e la password per Munin come mostrato di seguito.

Assicurati di utilizzare https:// e la porta 8080 nell'URL munin.

6 Installa e configura Monit

Per installare Monit, facciamo questo:

apt-get -y install monit

Ora dobbiamo modificare /etc/monit/monitrc. L'impostazione predefinita /etc/monit/monitrc ha molti esempi e puoi trovare altri esempi di configurazione su http://mmonit.com/monit/documentation/. Tuttavia, 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 accedere all'interfaccia web con il nome utente admin e la password howtoforge e voglio che Monit invii avvisi e-mail a [email protected], quindi il mio file ha questo aspetto (ho aggiunto esempi per altri demoni alla configurazione in modo che tu possa adattare il file alle tue esigenze):

cp /etc/monit/monitrc /etc/monit/monitrc_orig
cat /dev/null > /etc/monit/monitrc
nano /etc/monit/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:howtoforge

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

check process apache with pidfile /var/run/apache2/apache2.pid
group www
start program = "/usr/sbin/service apache2 start"
stop program = "/usr/sbin/service apache2 stop"
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

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

#check process proftpd with pidfile /var/run/proftpd.pid
# start program = "/usr/sbin/service proftpd start"
# stop program = "/usr/sbin/service proftpd stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process postfix with pidfile /var/spool/postfix/pid/master.pid
# group mail
# start program = "/usr/sbin/service postfix start"
# stop program = "/usr/sbin/service postfix stop"
# if failed port 25 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process nginx with pidfile /var/run/nginx.pid
# start program = "/usr/sbin/service nginx start"
# stop program = "/usr/sbin/service nginx stop"
# if failed host 127.0.0.1 port 80 then restart
#
#check process memcached with pidfile /var/run/memcached.pid
# start program = "/usr/sbin/service memcached start"
# stop program = "/usr/sbin/service memcached stop"
# if failed host 127.0.0.1 port 11211 then restart
#
#check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid
# start program = "/usr/sbin/service pure-ftpd-mysql start"
# stop program = "/usr/sbin/service pure-ftpd-mysql stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process named with pidfile /var/run/named/named.pid
# start program = "/usr/sbin/service bind9 start"
# stop program = "/usr/sbin/service bind9 stop"
# if failed host 127.0.0.1 port 53 type tcp protocol dns then restart
# if failed host 127.0.0.1 port 53 type udp protocol dns then restart
# if 5 restarts within 5 cycles then timeout
#
#check process ntpd with pidfile /var/run/ntpd.pid
# start program = "/usr/sbin/service ntp start"
# stop program = "/usr/sbin/service ntp stop"
# if failed host 127.0.0.1 port 123 type udp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process mailman with pidfile /var/run/mailman/mailman.pid
# group mail
# start program = "/usr/sbin/service mailman start"
# stop program = "/usr/sbin/service mailman stop"
#
#check process amavisd with pidfile /var/run/amavis/amavisd.pid
# group mail
# start program = "/usr/sbin/service amavis start"
# stop program = "/usr/sbin/service amavis stop"
# if failed port 10024 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap with pidfile /var/run/courier/imapd.pid
# group mail
# start program = "/usr/sbin/service courier-imap start"
# stop program = "/usr/sbin/service courier-imap stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-imap-ssl start"
# stop program = "/usr/sbin/service courier-imap-ssl stop"
# if failed host localhost port 993 type tcpssl sslauto protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3 with pidfile /var/run/courier/pop3d.pid
# group mail
# start program = "/usr/sbin/service courier-pop start"
# stop program = "/usr/sbin/service courier-pop stop"
# if failed host localhost port 110 type tcp protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-pop-ssl start"
# stop program = "/usr/sbin/service courier-pop-ssl stop"
# if failed host localhost port 995 type tcpssl sslauto protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process dovecot with pidfile /var/run/dovecot/master.pid
# group mail
# start program = "/usr/sbin/service dovecot start"
# stop program = "/usr/sbin/service dovecot stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout

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:

mkdir /var/www/html/monit
echo "hello" > /var/www/html/monit/token

Successivamente, creiamo il pem cert (/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 = 2048
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 1024 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 600 /var/certs/monit.pem

Infine, possiamo avviare Monit:

service monit restart

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

(Schermata principale)

(Pagina di stato del sistema)

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

Per ottenere lo stato di Monit sulla shell, esegui il comando "monit status":

monit status

Il comando mostrerà lo stato di tutti i servizi monitorati.

7 Configura Monit in ISPConfig 

Il pannello di controllo del server ISPConfig può mostrare i dati di Monit all'interno del suo modulo Monitor. Per abilitare quella funzione in ISPConfig, accedi a ISPConfig come utente amministratore (amministratore), vai su Sistema> Configurazione server, inserisci l'URL, il nome utente e la password per Monit come mostrato di seguito.

  • munin:http://munin-monitoring.org/
  • monito:http://mmonit.com/monit/

Ubuntu
  1. Come installare Node.js su Ubuntu 16.04 Xenial Xerus Linux server

  2. Passaggi per installare Ubuntu 16.04 LTS (Xenial Xerus) con schermate

  3. Come configurare server e client Kerberos su Ubuntu 18.04 LTS

  4. Panoramica di Ubuntu 16.04 LTS (Xenial Xerus).

  5. Monitoraggio del server con Shinken su Ubuntu 16.04

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 CentOS 7.2

Monitoraggio del server con munin e monit su Fedora 7

Come installare e configurare Monit Monitoring Server su Ubuntu 20.04 LTS