Monitoraggio · 29 min read · Nov 22, 2025
Come installare e monitorare i servizi utilizzando lo strumento di monitoraggio Netdata su Debian 12

Netdata è un sistema di monitoraggio open-source per sistemi operativi basati su Linux. Fornisce prestazioni e monitoraggio in tempo reale utilizzando dashboard belle e dettagliate. Offre centinaia di strumenti per monitorare server, CPU, utilizzo della memoria, processi di sistema, utilizzo del disco, reti IPv4 e IPv6, firewall di sistema e applicazioni come Nginx, MySQL, MongoDB, Redis, ElasticSearch, PostgreSQL, PHP-FPM, ecc. Si integra con altri strumenti di monitoraggio come Prometheus, Graphite, Kafka, Grafana e altro.
Questo tutorial ti mostrerà come installare e monitorare vari servizi utilizzando Netdata su un server Debian 12. Lo utilizzerai anche per tracciare le metriche di uno stack LEMP e del motore Docker.
Prerequisiti
- Un server che esegue Debian 12.
- Un utente non root con privilegi sudo.
- Un Nome di Dominio Completo (FQDN) come
netdata.example.comche punta al tuo server. - Un account SMTP con un servizio email come Amazon SES o Mailgun.
- Assicurati che tutto sia aggiornato.
$ sudo apt update $ sudo apt upgrade - Alcuni pacchetti di cui il tuo sistema ha bisogno.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -yAlcuni di questi pacchetti potrebbero già essere installati sul tuo sistema.
Passo 1 - Configurare il Firewall
Il primo passo è configurare il firewall. Debian viene fornito con ufw (Uncomplicated Firewall) per impostazione predefinita.
Controlla se il firewall è attivo.
$ sudo ufw status
Otterrai il seguente output.
Status: inactive
Consenti la porta SSH in modo che il firewall non interrompa la connessione attuale al momento dell’attivazione.
$ sudo ufw allow OpenSSH
Consenti anche le porte HTTP e HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Abilita il Firewall
$ sudo ufw enable
Il comando potrebbe interrompere le connessioni ssh esistenti. Procedere con l'operazione (y|n)? y
Il firewall è attivo e abilitato all'avvio del sistema
Controlla di nuovo lo stato del firewall.
$ sudo ufw status
Dovresti vedere un output simile.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Passo 2 - Installare NetData
Netdata viene fornito con uno script di installazione che può funzionare su qualsiasi distribuzione Linux. Esegui il seguente comando per scaricare lo script di installazione.
$ wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh
Esegui lo script di installazione utilizzando il seguente comando.
$ sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
Il flag --stable-channel installa la versione stabile di Netdata. Il flag --disable-telemetry impedisce a Netdata di inviare statistiche anonime al loro server. Ci sono altri flag che puoi utilizzare per personalizzare il tuo installatore.
Inserisci Y per confermare l’aggiunta del repository di Netdata e installarlo sul tuo server. Dovresti ricevere il seguente output in caso di installazione riuscita.
Successfully installed the Netdata Agent.
La documentazione ufficiale può essere trovata online su https://learn.netdata.cloud/docs/.
Vuoi monitorare tutta la tua infrastruttura con Netdata? Dai un'occhiata a Netdata Cloud su https://app.netdata.cloud.
Unisciti alla nostra comunità e connettiti con noi su:
- GitHub: https://github.com/netdata/netdata/discussions
- Discord: https://discord.gg/5ygS846fR6
- I nostri forum comunitari: https://community.netdata.cloud/
[/root]# rm -rf /tmp/netdata-kickstart-wH4pebXveT
OK
L’installer di Netdata abilita e avvia automaticamente il servizio. Controlla lo stato del servizio.
$ sudo systemctl status netdata
? netdata.service - Monitoraggio delle prestazioni in tempo reale
Loaded: loaded (/lib/systemd/system/netdata.service; enabled; preset: enabled)
Active: active (running) since Thu 2023-08-24 10:26:56 UTC; 42s ago
Main PID: 2811 (netdata)
Tasks: 82 (limit: 1107)
Memory: 108.2M
CPU: 4.271s
CGroup: /system.slice/netdata.service
??2811 /usr/sbin/netdata -D -P /var/run/netdata/netdata.pid
??2822 /usr/sbin/netdata --special-spawn-server
??3127 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
??3137 /usr/libexec/netdata/plugins.d/go.d.plugin 1
??3142 /usr/libexec/netdata/plugins.d/ebpf.plugin 1
??3145 /usr/libexec/netdata/plugins.d/nfacct.plugin 1
??3149 /usr/libexec/netdata/plugins.d/systemd-journal.plugin 1
??3155 /usr/libexec/netdata/plugins.d/debugfs.plugin 1
??3159 /usr/libexec/netdata/plugins.d/apps.plugin 1
Aug 24 10:26:58 netdata ebpf.plugin[3142]: set name of thread 3188 to EBPF SOFTIRQ
.......
Se il tuo servizio non è avviato o abilitato, puoi farlo utilizzando il seguente comando.
$ sudo systemctl enable netdata --now
Esegui il seguente comando per controllare le porte aperte e il processo che le utilizza.
$ sudo ss -plnt | grep netdata
Dovresti ottenere un output simile. Netdata utilizza la porta 19999 per la sua dashboard, come visto nell’output qui sotto. Netdata utilizza la porta 8125 per ricevere statistiche da altre applicazioni.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 0.0.0.0:19999 0.0.0.0:* users:(("netdata",pid=2811,fd=8))
LISTEN 0 4096 127.0.0.1:8125 0.0.0.0:* users:(("netdata",pid=2811,fd=47))
LISTEN 0 4096 [::1]:8125 [::]:* users:(("netdata",pid=2811,fd=46))
LISTEN 0 4096 [::]:19999 [::]:* users:(("netdata",pid=2811,fd=9))
Passo 3 - Installare Nginx
Debian 12 viene fornito con una versione più vecchia di Nginx. Per installare l’ultima versione, devi scaricare il repository ufficiale di Nginx.
Importa la chiave di firma di Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Aggiungi il repository per la versione stabile di Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Aggiorna i repository di sistema.
$ sudo apt update
Installa Nginx e le utility di Apache. Il pacchetto delle utility di Apache è necessario per l’utilità htpasswd.
$ sudo apt install nginx apache2-utils
Verifica l’installazione. Nei sistemi Debian, il seguente comando funzionerà solo con sudo.
$ sudo nginx -v
nginx version: nginx/1.24.0
Avvia il server Nginx.
$ sudo systemctl start nginx
Controlla lo stato del servizio.
$ sudo systemctl status nginx
? nginx.service - nginx - server web ad alte prestazioni
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Thu 2023-08-24 11:36:34 UTC; 4s ago
Docs: https://nginx.org/en/docs/
Process: 3657 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 3658 (nginx)
Tasks: 2 (limit: 1107)
Memory: 1.8M
CPU: 12ms
CGroup: /system.slice/nginx.service
??3658 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??3659 "nginx: worker process"
Passo 4 - Installare SSL
Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot utilizzando il repository di Debian o scaricare l’ultima versione utilizzando lo strumento Snapd. Utilizzeremo la versione Snapd.
Debian 12 non viene fornito con Snapd installato. Installa il pacchetto Snapd.
$ sudo apt install snapd
Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata.
$ sudo snap install core && sudo snap refresh core
Installa Certbot.
$ sudo snap install --classic certbot
Utilizza il seguente comando per assicurarti che il comando Certbot possa essere eseguito creando un collegamento simbolico nella directory /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifica se Certbot funziona correttamente.
$ certbot --version
certbot 2.6.0
Genera il certificato SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d netdata.example.com
Il comando sopra scaricherà un certificato nella directory /etc/letsencrypt/live/netdata.example.com sul tuo server.
Genera un certificato Diffie-Hellman group.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Controlla il servizio di pianificazione del rinnovo di Certbot.
$ sudo systemctl list-timers
Troverai snap.certbot.renew.service come uno dei servizi programmati per l’esecuzione.
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Thu 2023-08-24 13:40:00 UTC 1h 59min left - - snap.certbot.renew.timer snap.certbot.renew.service
Thu 2023-08-24 18:47:23 UTC 7h left Thu 2023-08-24 09:30:41 UTC 2h 9min ago apt-daily.timer apt-daily.service
Fri 2023-08-25 00:00:00 UTC 12h left - - dpkg-db-backup.timer dpkg-db-backup.service
Fai un tentativo di prova del processo per controllare se il rinnovo SSL funziona correttamente.
$ sudo certbot renew --dry-run
Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.
Passo 5 - Configurare Nginx
Crea e apri il file /etc/nginx/conf.d/netdata.conf per la modifica.
$ sudo nano /etc/nginx/conf.d/netdata.conf
Incolla il seguente codice al suo interno.
# Definisci l'upstream di netdata
upstream netdata {
server 127.0.0.1:19999;
keepalive 64;
}
# Reindirizza tutto il non criptato a criptato
server {
listen 80;
listen [::]:80;
server_name netdata.example.com;
return 301 https://netdata.example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name netdata.example.com;
ssl_certificate /etc/letsencrypt/live/netdata.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/netdata.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/netdata.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
access_log /var/log/nginx/netdata.example.com.access.log main;
error_log /var/log/nginx/netdata.example.com.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_pass http://netdata;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
auth_basic "NetData Private Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Apri il file /etc/nginx/nginx.conf per la modifica.
$ sudo nano /etc/nginx/nginx.conf
Aggiungi la seguente riga prima della riga include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Esegui il seguente comando per generare un file di password per abilitare l’autenticazione HTTP.
$ sudo htpasswd -c /etc/nginx/.htpasswd netadmin
Nuova password:
Re-inserisci la nuova password:
Aggiunta della password per l'utente netadmin
Verifica la sintassi del file di configurazione di Nginx.
$ sudo nginx -t
nginx: il file di configurazione /etc/nginx/nginx.conf ha una sintassi corretta
nginx: il test del file di configurazione /etc/nginx/nginx.conf ha avuto successo
Riavvia il servizio Nginx per abilitare la nuova configurazione.
$ sudo systemctl restart nginx
Passo 6 - Accedere e utilizzare il dashboard di Netdata
Dovresti essere in grado di accedere a Netdata tramite l’URL https://netdata.example.com. La prima volta che vi accedi, ti verrà chiesto di inserire i dettagli di autenticazione HTTP.

Otterrai il seguente dashboard.

Puoi mettere in pausa, fermare e avviare il monitoraggio in qualsiasi momento utilizzando il pulsante Play sulla dashboard.

Puoi accedere a varie dashboard facendo clic sulle opzioni nella barra laterale destra.
Netdata per impostazione predefinita può tracciare correttamente il tuo fuso orario. Se non lo fa, fai clic sul timer e seleziona il fuso orario corretto nel popup per cambiarlo.

Passo 7 - Configurare NetData
Netdata memorizza la sua configurazione principale nel file /etc/netdata/netdata.conf. Puoi visualizzare queste impostazioni visitando l’URL https://netdata.example.com/netdata.conf nel tuo browser.

Il file è suddiviso in varie sezioni, come [global], [db], [web], [registry] e altro. La configurazione predefinita è sufficiente per iniziare. Netdata raccoglie dati utilizzando due tipi di plugin:
- plugin interni sono scritti in linguaggio C e vengono eseguiti come thread all’interno del demone
netdata. - plugin esterni sono scritti in vari linguaggi, tra cui Python, Go, ecc., e vengono avviati come processi indipendenti a lungo termine dal demone
netdata. Comunicano con il demone Netdata utilizzandopipes.
Configurare l’uso della memoria di NetData
L’uso della RAM di NetData è deciso in base al tempo che desideri mantenere i dati del grafico registrati prima che vengano persi.
- 3600 secondi o 1 ora di retention dei dati del grafico utilizza 15 MB di RAM.
- 7200 secondi o 2 ore di retention dei dati del grafico utilizza 30 MB di RAM.
- 14400 secondi o 4 ore di retention dei dati del grafico utilizza 60 MB di RAM.
Ogni volta che raddoppi il tempo di retention dei dati del grafico, il requisito di RAM raddoppia anche. Questi requisiti di RAM si basano sul numero di grafici utilizzati dalla dashboard predefinita. Aggiungere più grafici e applicazioni cambierà queste stime.
Apri il file di configurazione di Netdata.
$ sudo nano /etc/netdata/netdata.conf
Inserisci la riga history = 14400 sotto la sezione [global].
[global]
run as user = netdata
# dimensione predefinita dello storage - aumenta per una retention dei dati più lunga
page cache size = 32
dbengine multihost disk space = 256
history = 14400
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Disattivare la Telemetria
Per impostazione predefinita, Netdata raccoglie informazioni anonime sull’uso utilizzando una piattaforma di analisi dei prodotti, Posthog. Ogni volta che il demone Netdata viene avviato o arrestato, Netdata utilizza lo script delle statistiche anonime per raccogliere le seguenti informazioni di sistema e inviarle a se stesso.
- Versione di Netdata
- Nome del sistema operativo, versione, id, id_like
- Nome del kernel, versione, architettura
- Tecnologia di virtualizzazione
- Tecnologia di containerizzazione
- Ulteriori informazioni sui guasti del client Netdata.
Abbiamo disattivato la Telemetria durante l’installazione, ma se non lo hai fatto, puoi farlo ora. Crea un file vuoto chiamato .opt-out-from-anonymous-statistics nella directory di Netdata.
$ sudo touch /etc/netdata/.opt-out-from-anonymous-statistics
Riavvia Netdata per abilitare la modifica.
$ sudo systemctl restart netdata
Archiviazione a lungo termine
Netdata utilizza la RAM e il disco del tuo sistema per memorizzare i dati storici per impostazione predefinita. Il processo predefinito di Netdata raccoglie circa 2000 metriche al secondo, il che significa che la configurazione predefinita memorizzerà circa due giorni di metriche sulla RAM e sul disco.
Per memorizzare più metriche, hai le seguenti due opzioni:
- Configurare Netdata per utilizzare più RAM e spazio su disco
- Archiviare le metriche in un database esterno
Discuteremo solo la prima opzione in questo tutorial. Per la seconda opzione, dovresti fare riferimento alla documentazione ufficiale di Netdata.
Configurare Netdata per utilizzare più RAM e spazio su disco
Apri il file /etc/netdata/netdata.conf per la modifica.
$ sudo nano /etc/netdata/netdata.conf
Configura le seguenti righe sotto la sezione [global].
[global]
...
page cache size = 32
dbengine multihost disk space = 256
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
La dimensione della cache della pagina determina la quantità di RAM utilizzata, e la variabile dbengine multihost disk space determina l’uso del disco. Per impostazione predefinita, Netdata utilizza 32 MB di RAM e 256 MB di spazio su disco. Puoi cambiare uno dei due valori a tuo piacimento.
Puoi utilizzare il calcolatore delle metriche di storage di Netdata per decidere quanta RAM e spazio su disco hai bisogno.
Ridurre la Frequenza di Raccolta
Puoi ottimizzare le prestazioni di Netdata aumentando il tempo tra la raccolta delle metriche. Per impostazione predefinita, Netdata raccoglie metriche ogni secondo.
Per cambiare ciò, apri il file di configurazione di Netdata per la modifica.
$ sudo nano /etc/netdata/netdata.conf
Inserisci la seguente riga sotto la sezione [global]. Questo aumenta la frequenza a 5 secondi.
[global]
...
update every = 5
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Passo 8 - Configurare le Notifiche Slack
Il primo passo è creare un’app Slack e collegarla a un canale specifico nel tuo spazio di lavoro per configurare le notifiche Slack.
Visita la pagina API di Slack e fai clic sul pulsante Crea App per iniziare a creare un’applicazione.

Fai clic sul link From Scratch per creare l’app.

Seleziona un nome per la tua app e scegli lo spazio di lavoro in cui desideri che la tua App appaia. Se non vuoi associare la tua app allo spazio di lavoro esistente, puoi crearne un’altra e tornare a questo passaggio.

Apri la pagina Incoming Webhook selezionando l’opzione nel menu Features dalla barra laterale sinistra, e poi attiva il webhook.

Fai clic sul pulsante Aggiungi Nuovo Webhook al Workspace in fondo alla pagina e seleziona il tuo spazio di lavoro e il canale target per le notifiche.

Fai clic sul pulsante Consenti per procedere. Torna alla pagina Incoming Webhooks e copia l’URL del Webhook.

Torna al terminale e passa alla directory /etc/netdata.
$ cd /etc/netdata
Netdata fornisce uno script edit-config per modificare e creare file di configurazione di Netdata. Esegui il seguente file per creare e aprire il file health_alarm_notify.conf utilizzando l’editor predefinito del tuo sistema.
$ sudo ./edit-config health_alarm_notify.conf
Scorri verso il basso fino alla seguente sezione.
# Abilita la notifica slack
SEND_SLACK="YES"
# Seleziona il webhook slack
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxx/xxxxxx/xxxxxxxxxxxxx"
# Canale predefinito per la notifica
DEFAULT_RECIPIENT_SLACK="notifications"
Assicurati che la variabile SEND_SLACK sia impostata su yes. Incolla l’URL del webhook copiato nella variabile SLACK_WEBHOOK_URL. Inserisci il nome del tuo canale per la variabile DEFAULT_RECIPIENT_SLACK.
Se il tuo editor è Vim, premi il tasto Escape per uscire dalla modifica, digita :x e premi il tasto Enter per salvare il file ed uscire dall’editor.
Se il tuo editor è Nano, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia Netdata per applicare le modifiche.
$ sudo systemctl restart netdata
Passo 9 - Configurare le Notifiche Email
Netdata utilizza sendmail per impostazione predefinita per inviare notifiche email, ma gestire un server email non è un compito facile. Netdata non supporta SMTP, ma puoi installare un pacchetto chiamato msmtp client. Ti consente di inviare email a un server SMTP.
Installa msmtp.
$ sudo apt install msmtp
Crea e apri il file di configurazione per msmtp.
$ sudo nano /etc/msmtprc
Incolla il seguente codice al suo interno.
# Imposta valori predefiniti per tutti i seguenti account.
defaults
# Usa la porta di invio email 587 invece della porta SMTP 25.
port 587
# Usa sempre TLS.
tls on
# Il server SMTP del tuo ISP
account ses
host email-smtp..amazonaws.com
from [email protected]
auth on
user
password
# Imposta l'account predefinito su isp
account default: ses
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Netdata fornisce uno script edit-config per modificare e creare file di configurazione di Netdata. Esegui il seguente file per creare e aprire il file health_alarm_notify.conf utilizzando l’editor predefinito del tuo sistema.
$ sudo /etc/netdata/edit-config health_alarm_notify.conf
Scorri verso il basso fino alla seguente sezione e inserisci il percorso per msmtp.
# comandi esterni
# Il percorso completo al comando sendmail.
# Se vuoto, il sistema $PATH verrà cercato per esso.
# Se non trovato, le notifiche email saranno disabilitate (silenziosamente).
sendmail="/usr/bin/msmtp"
Trova la seguente sezione e inserisci i dettagli del mittente e del destinatario e assicurati che l’invio delle email sia abilitato.
# opzioni globali di notifica email
# più destinatari possono essere forniti in questo modo:
# "[email protected] [email protected] ..."
# l'indirizzo email che invia notifiche email
# il predefinito è l'utente di sistema con cui viene eseguito netdata (di solito: netdata)
# I seguenti formati sono supportati:
# EMAIL_SENDER="user@domain"
# EMAIL_SENDER="User Name "
# EMAIL_SENDER="'User Name' "
# EMAIL_SENDER="\"User Name\" "
EMAIL_SENDER="Server Admin <[email protected]>"
# abilitare/disabilitare l'invio di email
SEND_EMAIL="YES"
# se un destinatario di ruolo non è configurato, verrà inviata un'email a:
DEFAULT_RECIPIENT_EMAIL="[email protected]"
# per ricevere solo allarmi critici, impostalo su "root|critical"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia Netdata per applicare le modifiche.
$ sudo systemctl restart netdata
Passo 10 - Testare i Canali di Notifica
Facciamo un test per vedere se le notifiche email funzionano. Accedi come l’utente di sistema netdata creato durante l’installazione.
$ sudo su -s /bin/bash netdata
Esegui lo script di notifica degli allarmi per inviare una notifica di test.
$ /usr/libexec/netdata/plugins.d/alarm-notify.sh test
Riceverai il seguente output.
# INVIO NOTIFICA DI ALLERTA DI TEST A RUOLO: sysadmin
2023-08-24 12:56:00: alarm-notify.sh: INFO: inviata notifica email per: netdata test.chart.test_alarm è WARNING a '[email protected]'
# OK
# INVIO NOTIFICA DI ALLERTA CRITICA DI TEST A RUOLO: sysadmin
2023-08-24 12:56:03: alarm-notify.sh: INFO: inviata notifica email per: netdata test.chart.test_alarm è CRITICAL a '[email protected]'
# OK
# INVIO NOTIFICA DI ALLERTA CHIARA DI TEST A RUOLO: sysadmin
2023-08-24 12:56:06: alarm-notify.sh: INFO: inviata notifica email per: netdata test.chart.test_alarm è CLEAR a '[email protected]'
# OK
Esci dall’utente.
$ exit.
Apri la tua applicazione Slack e dovresti aver ricevuto i seguenti avvisi.

Dovresti anche ricevere tre email riguardanti i test di avviso.

Passo 11 - Configurare il Monitoraggio del Sistema
Ora che abbiamo configurato e testato le notifiche, configuriamo e testiamo le notifiche per il sistema, come l’uso della CPU.
Esegui i seguenti comandi per creare e aprire il file di configurazione della CPU.
$ sudo /etc/netdata/edit-config health.d/cpu.conf
Cambia i valori delle opzioni warn e crit sotto 10min_cpu_usage come mostrato di seguito.
warn: $this > (($status >= $WARNING) ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))
Cambia la riga to:silent in to:sysadmin come mostrato.
template: 10min_cpu_usage
on: system.cpu
class: Utilization
type: System
component: CPU
os: linux
hosts: *
lookup: average -10m unaligned of user,system,softirq,irq,guest
units: %
every: 1m
warn: $this > (($status >= $WARNING) ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))
delay: down 15m multiplier 1.5 max 1h
info: average CPU utilization over the last 10 minutes (excluding iowait, nice and steal)
to: sysadmin
Salva il file ed esci dall’editor.
L’impostazione to:silent silenzia le notifiche e quindi per ricevere le notifiche, devi cambiare il valore del monitor in to:sysadmin per quei monitor.
L’impostazione sopra invierà un avviso se l’uso della CPU rientra tra il 60 e il 70% e un avviso critico quando l’uso della CPU rientra tra il 75 e l’85%.
Riavvia il servizio Netdata.
$ sudo systemctl restart netdata
Facciamo un test dell’impostazione installando l’applicazione Stress.
$ sudo apt install stress
Esegui il seguente comando per aumentare l’uso della CPU del tuo server.
$ stress --cpu 2
Lascia il comando in esecuzione per 5-10 minuti e riceverai messaggi di alta utilizzo della CPU. Una volta ricevuti quei messaggi, torna al terminale ed esci dal comando premendo Ctrl + Z.
Dopo aver fermato il servizio, riceverai una notifica di recupero della CPU su Slack.

Riceverai i seguenti messaggi email per lo stesso.

Passo 12 - Configurare il Monitoraggio di Nginx
Una delle applicazioni più comunemente monitorate utilizzando Netdata è il server e i pacchetti SQL. Monitoriamo il server Nginx utilizzando Netdata.
Per abilitare il monitoraggio del server Nginx, dobbiamo utilizzare il ngx_http_stub_status_module. Di solito viene preinstallato con Nginx. Puoi controllare se il modulo è presente. Il sudo è richiesto sul comando sul sistema Debian.
$ sudo nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module
Se non ricevi risposta, significa che la tua installazione di Nginx non supporta la funzionalità. In tal caso, dovrai compilare Nginx.
Apri il file di configurazione predefinito di Nginx /etc/nginx/conf.d/default.conf per la modifica. La posizione del file è diversa perché abbiamo installato Nginx dal suo repository ufficiale. Se stai installando Nginx dal repository del sistema operativo, allora la posizione del file sarà /etc/nginx/nginx.conf.
$ sudo nano /etc/nginx/conf.d/default.conf
Inserisci il seguente codice all’interno del blocco server prima dell’ultima parentesi graffa di chiusura.
# Abilita il modulo stub_status
location /stub_status {
stub_status;
allow 127.0.0.1; # consenti solo richieste da localhost
deny all; # nega tutti gli altri host
}
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Verifica la configurazione di Nginx.
$ sudo nginx -t
nginx: il file di configurazione /etc/nginx/nginx.conf ha una sintassi corretta
nginx: il test del file di configurazione /etc/nginx/nginx.conf ha avuto successo
Riavvia il server Nginx.
$ sudo systemctl restart nginx
Riavvia il servizio Netdata.
$ sudo systemctl restart netdata
Dovresti vedere i dettagli delle connessioni di Nginx nel tuo dashboard di Netdata.

Monitorare i Log di Nginx
Netdata può anche monitorare i log di accesso di Nginx. Per farlo, passa alla directory di Netdata.
$ cd /etc/netdata
Esegui il seguente comando per generare un file di configurazione per monitorare i log di accesso.
$ sudo ./edit-config go.d/web_log.conf
Scorri fino in fondo al file e trova la seguente sezione.
# -------------------------------------------
# log di nginx su varie distribuzioni
# debian, arch
nginx_log:
name: 'nginx'
path: '/var/log/nginx/access.log'
# gentoo
nginx_log2:
name: 'nginx_site'
path: '/var/log/nginx/localhost.access_log'
Cambia il percorso per monitorare i rispettivi file di log. Puoi aggiungere quante più sezioni per monitorare quanti più host e i loro file di log di accesso. Il nostro file di configurazione appare come segue.
# -------------------------------------------
# log di nginx su varie distribuzioni
# debian, arch
nginx_log:
name: 'nginx'
path: '/var/log/nginx/access.log'
nginx_log2:
name: 'nginx_site1'
path: '/var/log/nginx/site1.access_log'
nginx_log3:
name: 'nginx_site2'
path: '/var/log/nginx/site2.access_log'
nginx_log4:
name: 'nginx_site3'
path: '/var/log/nginx/site3.access_log'
Salva ed esci dall’editor.
Per accedere ai file di log, Netdata ha bisogno di permessi per accedere alla directory. Per impostazione predefinita, il gruppo di sistema adm ha permessi per accedere ai file di log. Per dare accesso a Netdata, dobbiamo aggiungere l’utente netdata al gruppo adm.
$ sudo usermod -aG adm netdata
Riavvia Nginx e il servizio Netdata.
$ sudo systemctl restart nginx netdata
Ricarica il dashboard di Netdata per visualizzare i dati del tuo file di log.

Passo 13 - Configurare il Monitoraggio di MySQL/MariaDB
Installeremo MariaDB per il nostro tutorial. Utilizzeremo il repository di MariaDB per questo scopo.
Importa la chiave GPG di MariaDB.
$ sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
Crea e apri il file del repository di MariaDB.
$ sudo nano /etc/apt/sources.list.d/mariadb.sources
Incolla il seguente codice al suo interno.
# Elenco dei repository di MariaDB 10.11 - creato 2023-09-05 11:18 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org è un mirror dinamico se il tuo mirror preferito va offline. Vedi https://mariadb.org/mirrorbits/ per dettagli.
# URIs: https://deb.mariadb.org/10.11/debian
URIs: https://mirrors.aliyun.com/mariadb/repo/10.11/debian
Suites: bookworm
Components: main
Signed-By: /usr/share/keyrings/mariadb-keyring.pgp
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Aggiorna l’elenco dei repository di sistema.
$ sudo apt update
Installa il server MariaDB.
$ sudo apt install mariadb-server
MariaDB è abilitato e in esecuzione. Controlla lo stato del servizio.
$ sudo systemctl status mariadb
? mariadb.service - Server di database MariaDB 10.11.5
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/mariadb.service.d
??migrated-from-my.cnf-settings.conf
Active: active (running) since Tue 2023-09-05 11:44:17 UTC; 20s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 9396 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Process: 9397 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 9399 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR >
Process: 9440 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 9442 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Main PID: 9428 (mariadbd)
Status: "Ora sto ricevendo le tue richieste SQL..."
Tasks: 13 (limit: 1107)
Memory: 111.8M
CPU: 663ms
CGroup: /system.slice/mariadb.service
??9428 /usr/sbin/mariadbd
Avvia lo script di installazione sicura di MySQL. Il nome del file è diverso nel caso di MariaDB.
$ sudo mariadb-secure-installation
....
Inserisci la password attuale per root (premi Invio per nessuna): (Premi Invio)
....
Passa all'autenticazione unix_socket [Y/n] Y (Digita Y e premi Invio)
....
Cambia la password di root? [Y/n] Y (Digita Y e premi Invio)
Nuova password:
Re-inserisci la nuova password:
Password aggiornata con successo!
....
Rimuovi utenti anonimi? [Y/n] Y (Digita Y e premi Invio)
....
Disabilita l'accesso remoto per root? [Y/n] Y (Digita Y e premi Invio)
....
Rimuovi il database di test e l'accesso ad esso? [Y/n] Y (Digita Y e premi Invio)
....
Ricarica le tabelle di autorizzazione ora? [Y/n] Y (Digita Y e premi Invio)
....
Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MariaDB dovrebbe ora essere sicura.
Grazie per aver utilizzato MariaDB!
Apri il file /etc/mysql/mariadb.conf.d/50-server.cnf per la modifica.
$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Trova la sezione [mariadb] nel file e incolla la seguente riga come mostrato di seguito per abilitare il plugin Userstats. Questa impostazione funziona solo su MariaDB e non sul server MySQL.
[mariadb]
userstat = 1
Accedi alla shell di MySQL.
$ sudo mysql
Esegui i seguenti comandi per creare un utente SQL per Netdata e dargli privilegi per tracciare le statistiche di MySQL.
MariaDB> create user 'netdata'@'localhost';
MariaDB> GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit
Crea il file di configurazione di MySQL per Netdata.
$ sudo /etc/netdata/edit-config go.d/mysql.conf
Si aprirà un file che mostra tutte le possibili opzioni. Se sei soddisfatto, salva e chiudi il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il server MariaDB.
$ sudo systemctl restart mariadb
Riavvia il servizio Netdata.
$ sudo systemctl restart netdata
Il dashboard di MariaDB/MySQL dovrebbe iniziare ad apparire nel dashboard di Netdata.

Passo 14 - Configurare il Monitoraggio di PHP-FPM
Puoi monitorare una o più istanze di PHP-FPM utilizzando Netdata. Per il nostro tutorial, installeremo PHP 8.2 e poi abiliteremo il suo monitoraggio.
Debian 12 viene fornito con PHP 8.2 per impostazione predefinita. Ma per rimanere sempre sull’ultima versione di PHP utilizzeremo il repository PHP di Ondrej.
Prima, importa la chiave GPG del repository di Sury PHP.
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Aggiungi il repository PHP di Ondrej Sury.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Aggiorna l’elenco dei repository di sistema.
$ sudo apt update
Ora puoi installare qualsiasi versione di PHP.
$ sudo apt install php8.2-fpm php8.2-cli php8.2-mbstring
Verifica l’installazione.
$ php --version
PHP 8.2.10 (cli) (built: Sep 4 2023 08:12:29) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies
Configurare PHP
Apri il file /etc/php/8.2/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Dobbiamo impostare l’utente/gruppo Unix dei processi PHP su nginx. Trova le righe user=www-data e group=www-data nel file e cambiale in nginx.
....
; Utente/gruppo Unix dei processi figlio. Questo può essere utilizzato solo se l'utente del processo master è root. Viene impostato dopo che il processo figlio è stato creato.
; L'utente e il gruppo possono essere specificati sia dal loro nome che dai loro ID numerici.
; Nota: Se l'utente è root, l'eseguibile deve essere avviato con
; l'opzione --allow-to-run-as-root per funzionare.
; Valori predefiniti: L'utente è impostato sull'utente del processo master per impostazione predefinita.
; Se il gruppo non è impostato, viene utilizzato il gruppo dell'utente.
user = nginx
group = nginx
....
Inoltre, trova le righe listen.owner=www-data e listen.group=www-data nel file e cambiale in nginx.
listen.owner = nginx
listen.group = nginx
Scorri verso il basso nel file per individuare l’opzione ;pm.status_path = /status. Rimuovi il punto e virgola davanti ad essa per decommentare la riga, come mostrato di seguito.
....
; Nota: È disponibile una pagina web di monitoraggio dello stato FPM in tempo reale
; È disponibile in: /usr/share/php/8.2/fpm/status.html
;
; Nota: Il valore deve iniziare con una barra iniziale (/). Il valore può essere
; qualsiasi cosa, ma potrebbe non essere una buona idea utilizzare l'estensione .php o
; potrebbe entrare in conflitto con un vero file PHP.
; Valore predefinito: non impostato
pm.status_path = /status
....
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il processo PHP-fpm.
$ sudo systemctl restart php8.2-fpm
Aggiungere le Impostazioni PHP a Nginx
Apri il file di configurazione predefinito di Nginx /etc/nginx/conf.d/default.conf per la modifica.
$ sudo nano /etc/nginx/conf.d/default.conf
Inserisci il seguente codice all’interno del blocco server prima dell’ultima parentesi graffa di chiusura.
# definire il monitoraggio PHP-FPM
location ~ ^/(status|ping)$ {
allow 127.0.0.1;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Dipende dalla versione di PHP e dalla distribuzione OS
}
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Verifica la configurazione di Nginx.
$ sudo nginx -t
nginx: il file di configurazione /etc/nginx/nginx.conf ha una sintassi corretta
nginx: il test del file di configurazione /etc/nginx/nginx.conf ha avuto successo
Riavvia il server Nginx.
$ sudo systemctl restart nginx
Riavvia il servizio Netdata.
$ sudo systemctl restart netdata
Ricarica il dashboard di Netdata e dovresti vedere le statistiche di PHP-FPM.

Passo 15 - Configurare il Monitoraggio del Motore Docker e dei Container
Netdata può monitorare sia il motore Docker che i container Docker. Può anche monitorare le app in esecuzione all’interno di questi container, ma non tratteremo questo aspetto in questo tutorial.
Iniziamo installando Docker.
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
Il servizio Docker è abilitato e avviato. Puoi controllare lo stato del servizio.
$ sudo systemctl status docker
Per monitorare il motore Docker, devi abilitare la funzionalità delle metriche di Docker.
Crea e apri il file /etc/docker/daemon.json per la modifica.
$ sudo nano /etc/docker/daemon.json
Incolla il seguente codice al suo interno.
{
"metrics-addr" : "127.0.0.1:9323",
"experimental" : true
}
Salva il file premendo Ctrl + X e inserendo Y quando richiesto. Questo URL è utilizzato da Prometheus per tracciare le statistiche del motore Docker.
Crea un file di configurazione per il collector Docker.
$ sudo /etc/netdata/edit-config go.d/docker.conf
Crea un altro file di configurazione per il motore Docker per Prometheus.
$ sudo /etc/netdata/edit-config go.d/docker_engine.conf
Riavvia i servizi Netdata e Docker.
$ sudo systemctl restart docker netdata
Ricarica il dashboard di Netdata e puoi vedere le statistiche di Docker.

Vedrai un’altra voce chiamata Prometheus Metrics nel tuo dashboard perché l’opzione delle metriche è stata creata per il dashboard di Prometheus.

Il passo successivo è monitorare il container Docker. Netdata utilizza i gruppi di controllo, noti come cgroups, per monitorare i container Docker. I gruppi di controllo sono una funzionalità di Linux che limita e traccia l’uso delle risorse di un insieme di processi, in questo caso, i container. Se hai container Docker in esecuzione quando installi Netdata, vengono monitorati automaticamente. Tuttavia, se esegui un container dopo aver installato Netdata, devi riavviarlo.
Esegui un container di test.
$ docker container run -d nginx
Controlla lo stato del container.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d6cde479224 nginx "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 80/tcp zealous_knuth
Il nome del container è zealous_knuth come mostrato. Poiché il container è stato avviato dopo aver installato Netdata, riavvia il servizio.
$ sudo systemctl restart netdata
Carica il Dashboard e dovresti essere in grado di vedere le statistiche del Container. Puoi vedere l’ID del container nelle statistiche.

Conclusione
Questo conclude il nostro tutorial sull’installazione e l’uso del sistema di monitoraggio Netdata per monitorare varie app come Nginx, MySQL, PHP-FPM e Docker su un server Debian 12. Se hai domande, postale nei commenti qui sotto.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.