Monitoraggio Server · 5 min read · Oct 17, 2025

Monitoraggio del server con Munin e Monit su CentOS 7 - Pagina 2

5 Installa e Configura Monit

Successivamente installeremo Monit:

yum install monit

Poi 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 ulteriori esempi di configurazione su http://mmonit.com/wiki/Monit/ConfigurationExamples) che sono tutti commentati, ma indica a monit di cercare anche nella directory /etc/monit.d per i file di configurazione.

In questo caso voglio monitorare:

  • proftpd
  • sshd
  • mysql
  • apache
  • postfix

Inoltre, configurerò queste impostazioni per Monit:

  • Abilitare l’interfaccia web di Monit sulla porta 2812.
  • Utilizzare HTTPS per l’interfaccia web invece di HTTP.
  • Configurare un accesso protetto da password per l’interfaccia web.
  • Monit deve inviare avvisi via email a root@localhost

Per prima cosa configurerò le impostazioni di autenticazione. Apri il file /etc/monit.d/monitrc

nano /etc/monit.d/monitrc

E scorri verso il basso fino a trovare questa sezione:

set httpd port 2812 and  
   use address localhost # accetta solo connessioni da localhost  
   allow localhost # consenti a localhost di connettersi al server e  
   allow admin:monit # richiedi utente 'admin' con password 'monit'  
   allow @monit # consenti agli utenti del gruppo 'monit' di connettersi (rw)  
   allow @users readonly # consenti agli utenti del gruppo 'users' di connettersi in sola lettura

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, per favore sostituiscila con una password sicura e potresti anche voler cambiare il nome utente “admin” con un nome che non può essere facilmente indovinato.

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 appare così:

nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon
  
# Invia email tramite questo server di posta  
set mailserver localhost
  
# Imposta l'indirizzo Da delle email di avviso  
set mail-format { from: [email protected] }
  
# Invia avvisi a questo indirizzo  
set alert root@localhost
  
# Monitora il servizio Proftpd
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
  
# Monitora il servizio SSH
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
  
# Monitora MySQL
check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/usr/bin/systemctl start mysqld"
   stop program = "/usr/bin/systemctl stop mysqld"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout
  
# Monitora il server web apache
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
  
# Monitora il server di posta postfix
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 che esistono realmente 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 è piuttosto autoesplicativo; se non sei sicuro riguardo a 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

che significa che monit cerca di connettersi a localhost sulla porta 80 e cerca 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 scrivere una stringa casuale al suo interno:

touch /var/www/html/monit_token

Successivamente creiamo il certificato pem ( /var/certs/monit.pem) di cui abbiamo bisogno per l’interfaccia web Monit crittografata SSL:

mkdir /var/certs  
cd /var/certs

Abbiamo bisogno di un file di configurazione OpenSSL per creare il nostro certificato. Può apparire così:

nano /var/certs/monit.cnf
# crea certificati RSA - Server

RANDFILE = ./openssl.rnd

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

[ req_dn ]
countryName = Nome del Paese (codice a 2 lettere)
countryName_default = MO

stateOrProvinceName             = Nome dello Stato o della Provincia (nome completo)
stateOrProvinceName_default     = Monitoria

localityName                    = Nome della Località (ad es. città)
localityName_default            = Monittown

organizationName                = Nome dell'Organizzazione (ad es. azienda)
organizationName_default        = Monit Inc.

organizationalUnitName          = Nome dell'Unità Organizzativa (ad es. sezione)
organizationalUnitName_default  = Dip. delle Tecnologie di Monitoraggio

commonName                      = Nome Comune (FQDN del tuo server)
commonName_default              = server.monit.mo

emailAddress                    = Indirizzo Email
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 test, e dovresti vedere l’interfaccia web di Monit. Dovrebbe apparire così:

Schermata principale di Monit.

(Schermata principale)

Dettagli apache di Monit.

(Pagina di stato di Apache)

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

6 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.