Sovente accade di voler monitorare degli host. Certo, esistono sistemi estremamente completi come Zabbix, ma spesso sovradimensionati rispetto ad un monitoraggio semplice e rapido. Ho, quindi, creato un semplice script Linux che ci consente di monitorare degli host in maniera semplice effettuando, a scelta, uno dei seguenti controlli:
- ICMP Request (ping)
- Verifica che una porta sia attiva (ad esempio la 25 per un mailserver)
- Verifica la presenza di una stringa all'interno di una pagina web (per accertarsi che essa sia realmente reperibile)
- Verifica la presenza di un file html con all'interno la dicitura "iocisono" (per minimizzare la richiesta di banda in monitoraggi particolarmente massivi)
Il progetto, scritto in bash per linux, è liberamente reperibile qui: https://github.com/cl4x/bashmonitoring e si compone di 3 file visibili nel progetto:
- monitoring.sh (il programma vero e proprio, ricordate di dare i permessi +x, che ometto in questo articolo in quanto si compone di circa 300 righe)
- monitoring.conf (il file di configurazione)
Il file di configurazione ha i seguenti parametri:
SLEEPTIME (si riferisce al tempo di sleep tra un controllo e quello dopo - il primo ciclo viene fatto integralmente senza sleep time)
SLEEPPRPOC (si riferisce al tempo di sleep tra un ciclo completo e l'altro, ovvero da quando finisce di controllare tutti gli host a quando riprende dall'inizio)
RETRY (indica il numero di tentativi, separati da un secondo, prima di dichiarare down l'host)
LOGENABLE 1|0 (abilita o disabilita i log)
LOGPATH (ovviamente dove scrivere i log che, per semplicità, non utilizzano syslogd)
- monitoring.hosts (qui andremo a definire gli host e che tipo di controllo effettuare)
Il ogni riga è un controllo su un host, è diviso da ; ed è strutturato in questa maniera:
tipo di controllo;descrizione;host;eventuale opzione
ecco alcuni esempi:
ping;CloudFlare DNS;1.1.1.1
effettua un semplice ping
porta;Https su Repubblica;www.repubblica.it;443
verifica che la porta 443 sia aperta sul sito repubblica.it
porta;SMTP Gmail;gmail-smtp-in.l.google.com;25
verifica che la porta 25 su questo server sia aperta
porta;TestDown;11.22.33.44;11111
un esempio di come verrà evidenziato un host down
strhtml;Mozilla IT;https://www.mozilla.org/it/;Newsletter-mozilla-and-you
verifica che su questo sito la pagina web mostri la stringa "Newsletter-mozilla-and-you"
Ecco il risultato finale:
A breve integrerò, tempo permettendo, l'invio di email e anche una chiamata voip.
NB: deve essere installato nmap e curl, banalmente su debian/ubuntu basta dare
sudo apt install nmap curl
Discaimer: Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.