Novità
ItaliaNerd

Registrati gratuitamente per diventare un membro della community ItaliaNerd! Una volta effettuato l'accesso, potrai partecipare a questo sito aggiungendo i tuoi argomenti e post, nonché connetterti con altri membri tramite la tua casella di posta privata! Sentiti libero di utilizzare questo portale come meglio credi, per una breve panoramica dai un'occhiata QUI!

Icona risorsa

Guida Verificata Monitorare un server Linux, un'infrastruttura o un datacenter con Netdata

Una guida verificata è stata controllata dallo staff punto per punto e se ne attesta la sua validità.

94492596-72a86b00-019f-11eb-91ab-224e6ac9ea21.png

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 Linux

Questa 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 (lo trovate qui)

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: Get started with Netdata Cloud | Learn Netdata

Installazione​

Come suggerito nella guida ufficiale, per installare Netdata è sufficiente lanciare il comando
Bash:
wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh
Consiglio una rapida lettura della guida ufficiale, in quanto presenta comandi opzionali che posso fare al caso vostro per un'installazione personalizzata.

Inoltre è presente nelle repository ufficiali di mostre distribuzioni, ad esempio su Debian possiamo installarlo anche con
Bash:
sudo apt-get install netdata -y

Una volta installato, verifichiamo se il servizio è già attivo con sudo systemctl status netdata.
Nel caso non lo fosse, lanciamolo noi
Bash:
sudo systemctl start netdata
e poi facciamo partire automaticamente il servizio ad ogni riavvio della macchina
Bash:
sudo systemctl enable netdata

Il servizio è disponibile sulla porta 19999, quindi se usate un firewall dovrete aprire questa porta. Assumendo di avere ufw, eseguite
Bash:
sudo ufw allow 19999
e poi
Bash:
sudo ufw reload

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:
nano /etc/netdata/netdata.conf
e cambiamo la voce bind socket to IP indicando il nostro ip pubblico (se non lo conoscete, lanciate 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:
[global]
    enabled = no
Nel caso il file cloud.conf non esistesse, dobbiamo crearlo manualmente. Per farlo, rechiamoci nella cartella
Bash:
cd /var/lib/netdata/cloud.d
e poi usiamo il comando cat, in questo modo entreremo nel prompt CAT
Bash:
cat > cloud.conf << EOF
Inseriamo il codice sotto, premendo INVIO dopo ogni linea. Alla linea finale EOF, usciremo automaticamente dal prompt una volta premuto INVIO
Codice:
[global]
    enabled = no
    cloud base url = https://app.netdata.cloud
EOF
Ed il file è creato, adesso impostiamo i permessi (supponendo che "netdata" sia l'utente corretto, come da installazione predefinita)
Bash:
sudo chmod 0770 cloud.conf
sudo chown netdata:netdata cloud.conf
E per concludere riavviamo il servizio con 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:
cd /etc/netdata
touch .opt-out-from-anonymous-statistics

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: View active health alarms | Learn Netdata

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 Web
Ci 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:
./edit-config netdata.conf
cerchiamo la voce mode sotto web e modifichiamola così
Codice:
[web]
    mode = none

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:
[web]
    # Allow only localhost connections
    allow connections from = localhost

    # Allow only from management LAN running on `10.X.X.X`
    allow connections from = 10.*

    # Allow connections only from a specific FQDN/hostname
    allow connections from = example*

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:
sudo apt-get install apache2-utils

Il file va creato in una directory privata, come esempio scegliamo la directory di apache2, quindi lanciamo
Bash:
htpasswd -c /etc/apache2/.htpasswd nomeuser
ci verrà chiesto di inserire una password per l'utente nomeuser.

In alternativa, possiamo generare con un tool online 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:
nano /etc/apache2/sites-available/netdata.conf
Inseriamo questo contenuto all'interno
Codice:
<VirtualHost *:80>
    RewriteEngine On
    ProxyRequests Off
    ProxyPreserveHost On
 
    ServerName netdata.domain.tld

    <Proxy *>
        AllowOverride None
        AuthType Basic
        AuthName "Protected site"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Proxy>

    ProxyPass "/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
    ProxyPassReverse "/" "http://localhost:19999/"

    ErrorLog ${APACHE_LOG_DIR}/netdata-error.log
    CustomLog ${APACHE_LOG_DIR}/netdata-access.log combined
</VirtualHost>
Dove abbiamo specificato il nome del sottodominio e la directory dove risiede il file .htpasswd.

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:
<IfModule mod_evasive20.c>
        DOSPageCount        30
    </IfModule>
Salviamo il file, poi abilitiamo l'host virtuale digitando
Bash:
sudo a2ensite netdata.conf && service apache2 reload
Ora collegandoci su netdata.domain.tld ci verrà chiesto user e password, poi potremmo vedere la nostra interfaccia web.

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!
Autore
Anyma
Visite
712
Primo rilascio
Ultimo aggiornamento

Ratings

0.00 stella(e) 0 valutazioni

Più risorse di Anyma

Ultimi aggiornamenti

  1. Aggiornamenti minori

    aggiunta la procedura per effettuare l'opt-out dalla raccolta anonima dei dati statistici da...
Indietro
Alto