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 monitPoi creiamo i collegamenti di avvio del sistema per monit:
systemctl enable monit
systemctl start monitIl 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/monitrcE 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 letturaSostituiscilo con le seguenti impostazioni:
set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:testLa 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/monitrcset 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 restartche 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_tokenSuccessivamente creiamo il certificato pem ( /var/certs/monit.pem) di cui abbiamo bisogno per l’interfaccia web Monit crittografata SSL:
mkdir /var/certs
cd /var/certsAbbiamo 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 = serverOra 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.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pemInfine, possiamo avviare monit:
systemctl restart monitOra 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)

(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
- munin: http://munin.projects.linpro.no
- monit: http://mmonit.com/monit
- CentOS: http://www.centos.org
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.