Installare e Usare Grafana su Ubuntu: Guida Completa
Impostare correttamente Grafana per il monitoraggio e la visualizzazione
Grafana è la piattaforma open-source leader per il monitoraggio e l’osservabilità, trasformando metriche, log e tracce in insight utili attraverso visualizzazioni straordinarie.
Questo è uno screenshot dal sito ufficiale di Grafana.
Cosa è Grafana?
Grafana è un’applicazione web open-source multi-piattaforma per l’analisi e la visualizzazione interattiva. Fornisce grafici, grafici e allarmi per il web quando connesso a fonti di dati supportate. Grafana è ampiamente utilizzato in DevOps per il monitoraggio dell’infrastruttura, delle applicazioni e dei servizi.
Funzionalità principali:
- Dashboard universale Crea belle dashboard dinamiche con templating flessibile
- Multiple Data Sources Connetti a 150+ fonti di dati tra cui Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL e altro
- Allerting Sistema unificato di allerting con canali di notifica (Slack, PagerDuty, email, webhooks)
- Collaborazione di squadra Condividi dashboard, crea squadre e gestisci le autorizzazioni degli utenti
- Ecosistema dei plugin Estendi la funzionalità con pannelli, fonti di dati e app
- Cloud Native Perfetto per Kubernetes, Docker e ambienti cloud
Perché Grafana su Ubuntu?
Le versioni LTS di Ubuntu offrono una base stabile e sicura per ospitare Grafana. Se stai iniziando da zero o hai bisogno di configurare un nuovo ambiente Ubuntu per la tua infrastruttura di monitoraggio, consulta la nostra guida completa su come installare Ubuntu 24.04 con strumenti utili per preparare il tuo sistema.
I vantaggi includono:
- Supporto a lungo termine e aggiornamenti di sicurezza
- Grande comunità e documentazione estesa
- Supporto nativo del repository APT da parte di Grafana Labs
- Eccellente compatibilità con Docker
- Perfetto per ambienti di sviluppo e produzione
Metodi di installazione
Metodo 1: Installa tramite repository APT (Raccomandato)
Questo è il metodo più semplice, che fornisce aggiornamenti automatici tramite il gestore dei pacchetti di Ubuntu. Se sei nuovo nell’utilizzo del terminale Ubuntu o vuoi migliorare la tua produttività, il nostro suggeritore di scorciatoie del tastierino per Ubuntu può aiutarti a navigare nel sistema in modo più efficiente.
Passo 1: Installa i prerequisiti
sudo apt-get install -y apt-transport-https software-properties-common wget
Passo 2: Aggiungi la chiave GPG di Grafana
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
Passo 3: Aggiungi il repository APT di Grafana
Per le versioni stabili:
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Passo 4: Aggiorna e installa Grafana
sudo apt-get update
sudo apt-get install grafana
Passo 5: Avvia e abilita il servizio Grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service
Passo 6: Verifica l’installazione
sudo systemctl status grafana-server
Grafana sarà ora in esecuzione su http://localhost:3000
Metodo 2: Installa utilizzando Docker
Docker fornisce isolamento e gestione più semplice per le distribuzioni containerizzate.
Passo 1: Installa Docker (se non installato)
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Passo 2: Esegui il container Grafana
docker run -d \
--name=grafana \
-p 3000:3000 \
-v grafana-storage:/var/lib/grafana \
grafana/grafana-oss
Per la persistenza con la configurazione:
docker run -d \
--name=grafana \
-p 3000:3000 \
-v grafana-storage:/var/lib/grafana \
-v $(pwd)/grafana.ini:/etc/grafana/grafana.ini \
-e "GF_SERVER_ROOT_URL=http://your-domain.com" \
-e "GF_SECURITY_ADMIN_PASSWORD=your-secure-password" \
grafana/grafana-oss
Metodo 3: Installa utilizzando Docker Compose
Crea un file docker-compose.yml:
version: '3.8'
services:
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
restart: unless-stopped
ports:
- '3000:3000'
volumes:
- grafana-storage:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=your-secure-password
- GF_USERS_ALLOW_SIGN_UP=false
- GF_SERVER_ROOT_URL=http://your-domain.com
volumes:
grafana-storage:
Avvia con:
docker-compose up -d
Configurazione iniziale
Prima login
- Vai a
http://your-server-ip:3000 - Credenziali predefinite:
- Username:
admin - Password:
admin
- Username:
- Ti verrà richiesto di modificare la password immediatamente (altamente raccomandato!)
Configura la prima fonte di dati
Esempio: Aggiungi Prometheus
- Clicca su Configurazione (icona del ingranaggio) → Fonti di dati
- Clicca su Aggiungi fonte di dati
- Seleziona Prometheus
- Configura:
- Nome: Prometheus
- URL:
http://localhost:9090(modifica per la tua istanza di Prometheus) - Accesso: Server (predefinito)
- Clicca su Salva e testa
Esempio: Aggiungi InfluxDB
- Seleziona InfluxDB come fonte di dati
- Configura:
- Linguaggio di query: Flux o InfluxQL
- URL:
http://localhost:8086 - Database: your_database_name
- Utente/Password: le tue credenziali
- Clicca su Salva e testa
Crea la prima dashboard
- Clicca su Crea (+ icona) → Dashboard
- Clicca su Aggiungi nuovo pannello
- Seleziona la tua fonte di dati
- Scrivi la tua query (esempio per Prometheus):
rate(http_requests_total[5m])
- Personalizza la visualizzazione:
- Scegli il tipo di pannello (Grafico, Gauges, Stat, Tabella, ecc.)
- Configura legende, assi, soglie
- Aggiungi trasformazioni se necessario
- Clicca su Applica per salvare il pannello
- Clicca su Salva dashboard (icona del disco)
Configurazione avanzata
Configura le impostazioni di Grafana
Modifica il file di configurazione principale:
sudo nano /etc/grafana/grafana.ini
Impostazioni importanti:
[server]
# Protocollo (http, https, h2, socket)
protocol = http
http_port = 3000
domain = your-domain.com
root_url = http://your-domain.com
[security]
admin_user = admin
admin_password = your-secure-password
secret_key = your-secret-key
[users]
# Disabilita l'iscrizione degli utenti
allow_sign_up = false
allow_org_create = false
[auth.anonymous]
enabled = false
[smtp]
enabled = true
host = smtp.gmail.com:587
user = your-email@gmail.com
password = your-app-password
from_address = your-email@gmail.com
from_name = Grafana
Riavvia dopo le modifiche:
sudo systemctl restart grafana-server
Configurazione del proxy inverso (Nginx)
Installa Nginx:
sudo apt install nginx
Crea la configurazione di Nginx:
sudo nano /etc/nginx/sites-available/grafana
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Abilita e riavvia:
sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Abilita HTTPS con Let’s Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
Configura l’allerting
Passo 1: Configura il canale di notifica
- Vai a Allerting → Punti di contatto
- Clicca su Nuovo punto di contatto
- Scegli il tipo (Email, Slack, PagerDuty, Webhook, ecc.)
- Configura le impostazioni (es. URL webhook di Slack)
- Testa e salva
Passo 2: Crea una regola di allerting
- Modifica un pannello nella tua dashboard
- Clicca sulla scheda Allert
- Configura le condizioni:
- Quando: avg()
- Di: query(A, 5m, now)
- Sopra: 80
- Imposta l’intervallo di valutazione
- Aggiungi un canale di notifica
- Salva
Caso d’uso popolare
Monitoraggio dell’infrastruttura
Stack: Prometheus + Node Exporter + Grafana
Monitora le metriche del sistema:
- CPU, memoria, utilizzo del disco
- Traffico di rete
- Carico del sistema
- I/O del disco
Per il monitoraggio specifico delle GPU NVIDIA, potresti voler esplorare le applicazioni di monitoraggio delle GPU per Linux/Ubuntu che si integrano bene con Grafana.
Importa l’ID della dashboard: 1860 (Node Exporter Full)
Monitoraggio di Kubernetes
Stack: Prometheus + kube-state-metrics + Grafana
Monitora il cluster K8s:
- Metriche dei pod e dei contenitori
- Utilizzo delle risorse del cluster
- Stato dei deployment
- Monitoraggio degli ingressi/servizi
Importa l’ID della dashboard: 15757 (Monitoraggio del cluster Kubernetes)
Monitoraggio delle prestazioni delle applicazioni
Stack: Loki + Promtail + Grafana
Monitora i log e le metriche delle applicazioni:
- Tassi di richieste e latenze
- Tassi di errore
- Aggregazione e filtraggio dei log
- Tracciamento distribuito
Monitoraggio del database
Monitora MySQL, PostgreSQL, MongoDB:
- Prestazioni delle query
- Pools di connessioni
- Query lente
- Stato della replicazione
Linee guida per le dashboard
- Organizza per scopo: Crea dashboard separate per diversi team/servizi
- Utilizza le variabili: Crea dashboard dinamiche con variabili di modello
- Imposta gli intervalli di tempo appropriati: Predefinito a finestre di tempo significative
- Aggiungi annotazioni: Contrassegna i deployment e gli incidenti
- Utilizza le cartelle: Organizza le dashboard in modo logico
- Abilita la versioning: Traccia i cambiamenti delle dashboard
- Imposta gli intervalli di aggiornamento: Bilancia le esigenze in tempo reale con le prestazioni
- Aggiungi la documentazione: Utilizza pannelli di testo per spiegare le metriche
Risoluzione dei problemi comuni
Il servizio Grafana non si avvia
# Controlla i log
sudo journalctl -u grafana-server -f
# Controlla la configurazione
sudo grafana-cli admin reset-admin-password newpassword
Problemi di connessione alla fonte di dati
- Verifica la connettività di rete:
telnet datasource-host port - Controlla le regole del firewall
- Verifica le credenziali
- Controlla i log del servizio della fonte di dati
Problemi di prestazioni
- Riduci gli intervalli di tempo delle query
- Ottimizza le query della fonte di dati
- Aumenta le risorse del server
- Utilizza il caching quando possibile
- Considera il caching dei risultati delle query
La dashboard non si carica
- Pulisci la cache del browser
- Controlla il console del browser per gli errori
- Verifica che il JSON della dashboard non sia danneggiato
- Controlla i log del server Grafana
Backup e manutenzione
Backup del database Grafana
# Ferma Grafana
sudo systemctl stop grafana-server
# Backup del database SQLite
sudo cp /var/lib/grafana/grafana.db /backup/grafana-$(date +%Y%m%d).db
# Backup della configurazione
sudo cp /etc/grafana/grafana.ini /backup/grafana-ini-$(date +%Y%m%d).bak
# Avvia Grafana
sudo systemctl start grafana-server
Script di backup automatico
Ecco uno script bash per automatizzare i backup di Grafana. Se hai bisogno di un riferimento rapido per la sintassi e i comandi dello script bash, consulta il nostro suggeritore di scorciatoie bash per suggerimenti utili e esempi.
#!/bin/bash
BACKUP_DIR="/backup/grafana"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)
# Backup del database
sudo cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana-$DATE.db
# Backup delle dashboard tramite API
curl -H "Authorization: Bearer YOUR_API_KEY" \
http://localhost:3000/api/search?type=dash-db | \
jq -r '.[] | .uid' | \
xargs -I{} curl -H "Authorization: Bearer YOUR_API_KEY" \
http://localhost:3000/api/dashboards/uid/{} > $BACKUP_DIR/dashboards-$DATE.json
# Mantieni solo gli ultimi 30 giorni
find $BACKUP_DIR -mtime +30 -delete
Aggiorna Grafana
# Metodo APT
sudo apt update
sudo apt upgrade grafana
# Metodo Docker
docker pull grafana/grafana-oss:latest
docker-compose down
docker-compose up -d
Rafforzamento della sicurezza
- Cambia le credenziali predefinite immediatamente
- Utilizza HTTPS con certificati validi
- Configura il firewall:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable - Disattiva l’accesso anonimo
- Utilizza l’autenticazione forte (LDAP, OAuth, SAML)
- Aggiornamenti regolari Mantieni Grafana aggiornato
- Limita le autorizzazioni degli utenti Utilizza il controllo degli accessi basato sui ruoli
- Abilita il log di audit
- Utilizza fonti di dati in sola lettura quando possibile
- Implementa il rate limiting
Monitoraggio di Grafana stesso
Monitora l’istanza di Grafana:
- Abilita l’endpoint delle metriche in
grafana.ini:[metrics] enabled = true - Aggiungi Grafana come target di Prometheus
- Importa la dashboard delle metriche di Grafana
Plugin utili
Installa i plugin tramite CLI:
sudo grafana-cli plugins install <plugin-id>
sudo systemctl restart grafana-server
Plugin consigliati:
- grafana-piechart-panel: Grafici a torta migliorati
- grafana-worldmap-panel: Visualizzazione dei dati geografici
- grafana-clock-panel: Visualizza orario e data
- grafana-simple-json-datasource: Connetti a API JSON personalizzate
- alexanderzobnin-zabbix-app: Integrazione con Zabbix
Esempi di integrazione
Grafana + Prometheus + Node Exporter
Configurazione completa dello stack di monitoraggio:
# Installa Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo useradd -rs /bin/false node_exporter
# Crea il servizio systemd
sudo tee /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
Grafana con InfluxDB e Telegraf
Configurazione per il monitoraggio a serie temporali:
# Installa InfluxDB
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update && sudo apt install influxdb
sudo systemctl start influxdb
sudo systemctl enable influxdb
# Installa Telegraf
sudo apt install telegraf
sudo systemctl start telegraf
sudo systemctl enable telegraf
Ottimizzazione delle prestazioni
Ottimizzazione delle query
- Utilizza intervalli di tempo appropriati
- Limita i punti dati restituiti
- Utilizza strategie di caching
- Aggrega i dati alla fonte quando possibile
- Utilizza le regole di registrazione in Prometheus
Ottimizzazione del server
[database]
# Aumenta il numero massimo di connessioni
max_open_conn = 300
max_idle_conn = 100
[dataproxy]
# Impostazioni di timeout
timeout = 30
keep_alive_seconds = 30
[rendering]
# Abilita il limite di rendering concorrente
concurrent_render_limit = 10
Link utili
- Documentazione ufficiale
- Grafana su GitHub
- Documentazione di Prometheus
- Documentazione di InfluxDB
- Come installare Ubuntu 24.04 & strumenti utili
- Applicazioni di monitoraggio delle GPU in Linux / Ubuntu
- Scorciatoie del tastierino per Ubuntu: Scheda completa
- Scheda delle scorciatoie bash
Conclusione
Grafana su Ubuntu fornisce una piattaforma potente e flessibile per il monitoraggio e l’osservabilità. Che tu stia monitorando un singolo server o un grande cluster Kubernetes, le ricche capacità di visualizzazione di Grafana, il vasto supporto per le fonti di dati e la comunità attiva lo rendono un’ottima scelta per le squadre DevOps.
Inizia con un’installazione semplice utilizzando il metodo del repository APT, connetti la tua prima fonte di dati e espandi gradualmente le tue capacità di monitoraggio. Ricorda di prioritizzare la sicurezza, i backup regolari e l’ottimizzazione delle prestazioni man mano che il tuo deployment Grafana cresce.
Con una configurazione corretta e le linee guida migliori, Grafana diventa uno strumento indispensabile nel tuo stack di osservabilità, fornendo insight utili che aiutano a mantenere sistemi affidabili e performanti.