In questo tutorial, ti mostreremo come utilizzare Monit, un software di monitoring open-source, per monitorare i servizi in esecuzione sul tuo server GNU/Linux, sia esso un Raspberry Pi, un VPS o un server dedicato.
Monit è un software di monitoraggio altamente configurabile, leggero e facile da configurare, permettendoci di intraprendere automaticamente delle azioni di ripristino dei servizi monitorati (ad esempio un riavvio del servizio in questione, sia esso un server HTTP, un database e quant’altro).
Ad esempio, è possibile monitorare un database MySQL facendo in modo che Monit si connetta ad esso e verifichi che la connessione funzioni e che il sistema non sia sovraccarico. Nel caso in cui riscontrasse problemi, Monit provvederebbe a riavviarlo automaticamente.
È possibile anche far tracciare l’utilizzo di memoria e CPU di un programma e inviare un avviso tramite e-mail o eseguire un’azione particolare.
Monit vanta anche un’interfaccia web semplice ma efficace, che ci permette di verificare al volo lo stato del dispositivo e dei servizi monitorati, con la possibilità di eseguire azioni come riavviare un servizio problematico sul server GNU/Linux in questione.
Requisiti
Per installare Monit non sono richieste cose particolari, basta una qualsiasi distribuzione GNU/Linux. In questa guida, daremo per scontato che stiate utilizzando una distribuzione basata su Debian (come Debian, Ubuntu o Raspberry PI OS).
Ovviamente, per il funzionamento delle notifiche via e-mail, è necessario avere un server SMTP in esecuzione (può essere sia locale che remoto, se state configurando Monit su un server dedicato o su un VPS la cosa sarà più semplice, soprattutto per evitare che le email finiscano in SPAM o non vengano proprio ricevute per via dell’IP, visto che gli indirizzi IP pubblici residenziali solitamente sono visti molto male dai vari provider di email).
Installazione e configurazione di Monit su Linux
1. Prima di poter installare Monit sul nostro sistema GNU/Linux, dobbiamo assicurarci che tutto sia aggiornato.
È possibile aggiornare la cache dell’elenco dei pacchetti e aggiornare eventuali pacchetti obsoleti utilizzando i seguenti due comandi concatenati all’interno del terminale:
sudo apt update && sudo apt upgrade -y
2. Dopodiché basterà eseguire l’installazione di Monit con APT e avremo già concluso la parte di installazione.
Il processo di installazione veramente semplice, grazie alla disponibilità di Monit nei repository ufficiali di Debian e derivate.
sudo apt install monit -y
3. Per configurare Monit, basterà modificare il file di configurazione di Monit utilizzando l’editor di testo nano, eseguendo il comando seguente all’interno del terminale:
sudo nano /etc/monit/monitrc
Abilitazione delle notifiche via e-mail con Monit
Per abilitare le notifiche tramite e-mail che Monit ci invierà sulla base dei vari eventi, basta semplicemente de-commentare rimuovendo i cancelletti (#
) le seguenti righe:
set alert you@yourdomain.com # receive all alerts
In “set alert“, va specificato il nostro indirizzo email, a cui vogliamo inviare tutti gli avvisi. È possibile anche fare configurazioni più complesse, dove ad esempio inviamo determinate notifiche solo a un indirizzo email specifico, ma eviteremo di farlo in questa guida.
Dopodiché, de-commentiamo ed eventualmente configuriamo le seguente righe, che indicano l’indirizzo del server SMTP:
set mailserver 127.0.0.1, # primary mailserver localhost # fallback relay
Questa configurazione funzionerà se abbiamo un server SMTP configurato e attivo in locale, sul nostro server GNU/Linux. Altrimenti, dovremmo specificare l’indirizzo IP, la porta, eventuali credenziali di accesso e se utilizzare la cifratura con TLS o meno per l’invio delle notifiche. Vi rimando alla documentazione di Monit su come configurare questa parte, per esempio qui c’è come utilizzare un indirizzo su GMail con Monit.
Abilitazione dell’interfaccia web di Monit
La prima cosa che probabilmente vorrai fare è abilitare l’interfaccia web di Monit. Questa interfaccia consente di monitorare facilmente le risorse del sistema (CPU e RAM) e qualsiasi processo di cui Monit stia effettuando il monitoring.
All’interno del file di configurazione di Monit, basterà infatti de-commentare rimuovendo i cancelletti (#
) la parte relativa all’httpd, avendo cura di abilitare solo gli indirizzi locali (LAN o localhost) per l’accesso alla dashboard.
Si può anche configurare delle credenziali di accesso, di default ci viene proposto “admin” come nome utente e la password “monit“.
Esempio del blocco di configurazione in questione:
#set httpd port 2812 and
# use address localhost
# allow localhost
# allow admin:monit
Nell’esempio qui sotto, configureremo Monit per abilitare l’accesso da tutti gli indirizzi IP nella nostra LAN. Ma prima, ecco alcune info utili:
- La prima linea definisce su quale porta il server httpd si metterà in ascolto. Di default c’è
2812
e di per sé va già bene così. - La seconda riga definisce l’indirizzo a cui il servizio HTTP dovrebbe associarsi. Utilizzando
0.0.0.0
significa che Monit accetterà richieste da qualsiasi indirizzo sia stato configurato sul server GNU/Linux.Per sicurezza, se vogliamo che Monit risulti accessibile solo da un particolare indirizzo IP nella nostra LAN, come192.168.1.2
, possiamo inserirlo qui. - La terza riga viene utilizzata per consentire a chiunque nella LAN di connettersi a Monit (
192.168.1.0/24
). È possibile sostituirla con0.0.0.0/0.0.0.0
per renderlo accessibile a qualsiasi indirizzo IP pubblico, ma ovviamente è sconsigliato per ragioni di sicurezza. - Infine, se vogliamo che siano richieste delle credenziali per accedere, possiamo specificare l’opzione
allow admin:monit
come ultima riga, per abilitare l’accesso con username “admin” e password “monit“, che ovviamente vi invito a cambiare.
Ovviamente, si è tenuti a configurare opportunamente gli accessi alla dashboard di Monit, poiché chiunque abbia l’accesso potrà potenzialmente interrompere o avviare i servizi configurati all’interno di questo software. Nel caso di questa guida, abbiamo scelto di non utilizzare credenziali di accesso e di abilitare tutta la dashboard a qualsiasi dispositivo collegato alla LAN (192.168.1.0/24). Qualora voleste abilitarle, basterà de-commentare la riga al punto 4 e specificare le credenziali desiderate.
set httpd port 2812 and
use address 0.0.0.0
allow 192.168.1.0/24
# allow admin:monit
Inoltre, ricordati di aprire la porta TCP 2812 sul firewall, se lo hai attivato, per esempio con ufw il comando sarebbe:
ufw allow 2812/tcp
Monitorare un servizio con Monit
Per monitorare i servizi che abbiamo in esecuzione sul nostro server GNU/Linux, fortunatamente, Monit fornisce già alcuni template dei servizi più utilizzati, ad esempio, troviamo già disponibili i file di configurazione per effettuare il monitoring di:
- acpid
- apache2
- at
- cron
- mdadm
- memcached
- mysql
- nginx
- openntpd
- openssh-server
- pdns-recursor
- postfix
- rsyslog
- smartmontools
- snmpd
Per sfruttarli, è sufficiente creare un collegamento simbolico nella cartella /etc/monit/conf-enabled/.
Ad esempio, se volessimo monitorare nginx, basterebbe eseguire:
ln -s /etc/monit/conf-available/nginx /etc/monit/conf-enabled/
Mentre per mysql:
ln -s /etc/monit/conf-available/mysql /etc/monit/conf-enabled/
Attenzione: se state utilizzando MariaDB al posto di MySQL, potete utilizzare lo stesso file di configurazione di mysql per monit, tuttavia consiglio di procedere effettuando una copia del file mysql, chiamandolo “mariadb” e variare alcune stringhe necessarie per riavviare il servizio, conseguentemente procediamo così:
cp /etc/monit/conf-available/mysql /etc/monit/conf-available/mariadb
E dopodiché entriamo in modifica del file appena copiato:
nano /etc/monit/conf-available/mariadb
E sostituiamo “mysql” con “mariadb” sulle righe dove si fa riferimento a “init.d“, in modo da avere il seguente risultato:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid group database group mysql start program = "/etc/init.d/mariadb start" stop program = "/etc/init.d/mariadb stop" if failed host localhost port 3306 protocol mysql with timeout 15 seconds for 3 times within 4 cycles then restart if failed unixsocket /var/run/mysqld/mysqld.sock protocol mysql for 3 times within 4 cycles then restart if 5 restarts with 5 cycles then timeout depend mysql_bin depend mysql_rc check file mysql_bin with path /usr/sbin/mysqld group mysql include /etc/monit/templates/rootbin check file mysql_rc with path /etc/init.d/mariadb group mysql include /etc/monit/templates/rootbin
Quindi, dopo aver salvato il file, creiamo il collegamento simbolico con:
ln -s /etc/monit/conf-available/mariadb /etc/monit/conf-enabled/
Verifichiamo che la configurazione di Monit sia ok, eseguendo il seguente comando:
monit -t
E riavviamo Monit per applicare le modifiche, dopo che abbiamo finito di configurare:
systemctl restart monit
Se avessimo bisogno di fare configurazioni più specifiche per un servizio, a questo indirizzo trovate la documentazione per scrivere la parte di monitoring.
Fix MariaDB/MySQL che loggano messaggi di errore sull’accesso dovuti a Monit
Se su MySQL hai abilitato il logging degli errori, potresti ritrovarti i file di log pieni di avvisi sul fatto che un utente non autenticato sta cercando di collegarsi al servizio MySQL/MariaDB con username “monit”.
Warning] Aborted connection to db: 'unconnected' user: 'unauthenticated' host: 'localhost' (This connection closed normally without authentication)
È possibile risolvere tale errore, variando la configurazione di MariaDB/MySQL e impostando la variabile “log_warnings” a 1. Su MariaDB il file da modificare è:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
E nella sezione “logging” basta aggiungere questa riga:
log_warnings = 1
Riavviando poi il servizio di MariaDB:
systemctl restart mariadb
Accesso all’interfaccia web di Monit
Se hai effettuato le operazioni descritte in questa guida, direttamente sulla macchina in questione, ad esempio un Raspberry PI e non conosci l’IP del dispositivo, puoi reperirlo con:
hostname -I
E dopodiché puoi collegarti con il tuo browser web preferito, all’indirizzo in questione, sostituendolo al posto di <INDIRIZZO-IP>:
http://<INDIRIZZO-IP>:2812
Nel caso in cui tu abbia abilitato le credenziali e quindi il login tramite username e password, ti verrà richiesto di digitarle. Alternativamente, dovresti visualizzare una schermata simile a questa:
Arrivati a questo punto, Monit dovrebbe essere stato installato e configurato con successo!
Questo software ti permette di monitorare il tuo server e i vari servizi che potresti aver installato in maniera semplice e veloce. Come puoi vedere nell’esempio, lo utilizzo per monitorare un database MySQL.
Non esitate a rilasciare un commento qui sotto se hai domande in merito a Monit e se ti va, dai un’occhiata ai nostri altri tutorial per il mondo GNU/Linux!