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:

  1. 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ì.
  2. 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, come 192.168.1.2, possiamo inserirlo qui.
  3. La terza riga viene utilizzata per consentire a chiunque nella LAN di connettersi a Monit (192.168.1.0/24). È possibile sostituirla con 0.0.0.0/0.0.0.0 per renderlo accessibile a qualsiasi indirizzo IP pubblico, ma ovviamente è sconsigliato per ragioni di sicurezza.
  4. 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 sostituiamomysql” 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:

Monit - Dashboard
Monit – Dashboard con MySQL

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!

Rispondi