Introduzione
Se possedete un server, piccolo o grande che sia, vi sarete chiesti almeno una volta come monitorarne l'andamento, il carico, i servizi e perché no, valutare se la potenza è o meno sufficiente per il suo caso d'uso specifico, magari in vista di un upgrade o un downgrade.Molti provider di hosting, specie con le VPS, forniscono spesso un sistema di monitoring proprio, talvolta a pagamento, talvolta fornito gratuitamente, che però quasi mai è in grado di darvi una panoramica completa, limitandosi a visualizzare il carico approssimativo sulla CPU e sulla Ram.
Ma se volessimo sapere di più? Ad esempio quanto un particolare programma sta incidendo sulla CPU? O analizzare il traffico ipv4 e ipv6?
In rete si trovano molti software specifici, usati sia a livello professionale che privato. Molto dipende dal sistema operativo installato sul server (o l'infrastruttura) in questione.
Fra questi, non possiamo non citarne alcuni, come Sematext Monitoring, l'usatissima combo Prometheus e Grafana, Nagios, Pingdom Synthetic Monitoring, Zabbix, Netdata e molti altri!
In questa guida ci concentreremo su Netdata, ovvero un sistema di monitoring open-source, web-based. Questo software può essere installato praticamente su qualsiasi distro Linux, in qualsiasi ambiente, che sia un server, multi-server, docker o il proprio computer domestico. Con una granularità al secondo, un esiguo uso delle risorse e un livello di dettaglio elevatissimo, è uno strumento ottimo e soprattutto la sua installazione è semplicissima!
Indice
- Preparazione
- Installazione
- Come proteggere l'interfaccia web di Netdata
Preparazione
Prima di continuare, suggerisco una lettura della guida: Guida Verificata - [Server] Come proteggere il tuo server LinuxQuesta guida può essere utilizzata su qualsiasi distro con i dovuti accorgimenti. Per comodità, seguiremo la sintassi del sistema debian.
Netdata dispone di molti tutorial ufficiali su come installarlo e configurarlo, è presente su github e gli sviluppatori rispondono spesso a dubbi o domande degli utenti (
Accedi o Registrati per vedere questo link.
)IMPORTANTE: Netdata può essere consultato sia direttamente, connettendosi a
http://il-tuo-ip:19999
, sia tramite Netdata Cloud, che raccoglie i dati in streaming trasmessi dalla tua installazione ai server di Netdata. L'agente può essere disattivato sia in fase di installazione che post-installazione, in questo caso sarete in grado di monitorare il server solo connettendovi direttamente. In questa guida installeremo normalmente netdata e poi disabiliteremo l'agente post-installazione. Per maggiori informazioni:
Accedi o Registrati per vedere questo link.
Installazione
Come suggerito nella
Accedi o Registrati per vedere questo link.
, per installare Netdata è sufficiente lanciare il comando
Bash:
Accedi o Registrati per vedere questo contenuto.
Inoltre è presente nelle repository ufficiali di mostre distribuzioni, ad esempio su Debian possiamo installarlo anche con
Bash:
Accedi o Registrati per vedere questo contenuto.
Una volta installato, verifichiamo se il servizio è già attivo con
sudo systemctl status netdata
.Nel caso non lo fosse, lanciamolo noi
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Il servizio è disponibile sulla porta 19999, quindi se usate un firewall dovrete aprire questa porta. Assumendo di avere ufw, eseguite
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Se Netdata è stato installato localmente, non dovete fare altro, altrimenti è necessario indicare il proprio IP. Per farlo, apriamo con un editor di testo il file di configurazione principale
Bash:
Accedi o Registrati per vedere questo contenuto.
ip addr
)Se volete disattivare l'agente che permette di connette il vostro server (nodo) a Netdata Cloud, modifichiamo il file
/var/lib/netdata/cloud.d/cloud.conf
in questo modo
Codice:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Codice:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
sudo systemctl restart netdata
Netdata raccoglie anonimamente alcune informazioni statistiche per aiutare a migliorare il servizio. Nel caso volessimo negare questo consenso, basta creare un file nella directory /etc/netdata.
Bash:
Accedi o Registrati per vedere questo contenuto.
FINE! Il servizio è già attivo e per consultarlo basterà connettervi su
http://il-tuo-ip:19999
.MA, c'è sempre un ma.. netdata permette di fare molto altro, come inviare una mail (o addirittura un sms, messaggio su discord, telegram e molto altro) nel caso qualcosa non torna, come ad esempio un livello di CPU elevato. Molti avvisi sono preconfigurati e basta semplicemente indicare COME essere avvisati. Poiché questo dipende esclusivamente da voi e le differenti esigenze portano a molte configurazioni diverse, vi invito ad affidarvi alla guida ufficiale per quanto riguarda la gestione degli avvisi:
Accedi o Registrati per vedere questo link.
Inoltre, anche se l'interfaccia web è sicura, nel senso che l'accesso è in sola lettura, espone comunque importanti informazioni sulla macchina in uso (nel caso il servizio giri su ip pubblico).
Come proteggere l'interfaccia web di Netdata
Disattivare l'interfaccia WebCi sono diversi modi per proteggere l'accesso all'interfaccia web di netdata, il più semplice è disabilitare interamente l'interfaccia e monitorare il tutto SOLO attraverso Netdata Cloud. Naturalmente questo metodo funziona solo se avete scelto di collegare l'agent a Netdata Cloud.
Per disattivare l'interfaccia, apriamo il file di configurazione
Bash:
Accedi o Registrati per vedere questo contenuto.
Codice:
Accedi o Registrati per vedere questo contenuto.
Limitare l'accesso all'interfaccia Web
Possiamo decidere di consentire l'accesso SOLO a determinati indirizzi IP o FQDN, seguendo la guida ufficiale, riportiamo gli esempi che sfruttano il comando allow connections from.
Codice:
Accedi o Registrati per vedere questo contenuto.
ATTENZIONE: Questa seconda parte della guida è indicata a utenti con una conoscenza media della rete. Inoltre molto dipenderà dalla configurazione della vostra macchina.
Usare un reverse proxy
Essendo questa tecnica molto specifica, la procedura cambia in base al server web che state usando (apache, nginx etc..). Quanto segue prende come esempio l'uso di Apache e un dominio da voi posseduto.
Il nostro obiettivo è rendere disponibile Netdata su un host virtuale e proteggere il tutto con un sistema di autenticazione.
Devono essere installati i pacchetti mod_proxy e mod_proxy_http, solitamente presenti all'interno del pacchetto apache2.
Intanto, rendiamo disponibile Netdata solo in locale, quindi nel file di configurazione, alla voce bind socket to IP lasciamo pure localhost o 127.0.0.1
Usando Apache, possiamo sfruttare il funzionamento del file .htpasswd, quindi dobbiamo creare il file e specificare user e password da utilizzare per connettersi all'interfaccia.
Per prima cosa installiamo il pacchetto che ci permetterà di generare il file
Bash:
Accedi o Registrati per vedere questo contenuto.
Il file va creato in una directory privata, come esempio scegliamo la directory di apache2, quindi lanciamo
Bash:
Accedi o Registrati per vedere questo contenuto.
In alternativa, possiamo generare con un
Accedi o Registrati per vedere questo link.
il contenuto da inserire nel file .htpasswd, che a quel punto dovremmo creare manualmente nella directory da noi scelta.Ora, dobbiamo creare un sottodominio per la nostra interfaccia web, ad esempio netdata.domain.tld. Quindi creiamo un A Record che punta all'IP della nostra macchina. Naturalmente questo passaggio va fatto attraverso il vostro provider DNS.
Creiamo l'host virtuale aggiungendo un nuovo sito
Bash:
Accedi o Registrati per vedere questo contenuto.
Codice:
Accedi o Registrati per vedere questo contenuto.
In aggiunta, per prevenire il rischio di sovraccarichi o attacchi DDoS, possiamo utilizzare il modulo mod_evasive se è già nel sistema. Per farlo, inseriamo al codice sopra questa linea, prima del tag di chiusura </VirtualHost>
Codice:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Nel caso usassimo un pannello tipo Plesk, il contenuto dell'host virtuale può essere aggiunto manualmente come direttiva apache, stando attenti a non sovrascrivere il contenuto già presente.
Siamo giunti alla fine, spero questa guida vi sia stata utile e magari vi abbia fatto risparmiare qualche soldo in costosi strumenti di monitoraggio.
Fatemi sapere cosa ne pensate!