Installare e Usare Grafana su Ubuntu: Guida Completa

Impostare correttamente Grafana per il monitoraggio e la visualizzazione

Indice

Grafana è la piattaforma open-source leader per il monitoraggio e l’osservabilità, trasformando metriche, log e tracce in insight utili attraverso visualizzazioni straordinarie.

grafana 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

  1. Vai a http://your-server-ip:3000
  2. Credenziali predefinite:
    • Username: admin
    • Password: admin
  3. Ti verrà richiesto di modificare la password immediatamente (altamente raccomandato!)

Configura la prima fonte di dati

Esempio: Aggiungi Prometheus

  1. Clicca su Configurazione (icona del ingranaggio) → Fonti di dati
  2. Clicca su Aggiungi fonte di dati
  3. Seleziona Prometheus
  4. Configura:
    • Nome: Prometheus
    • URL: http://localhost:9090 (modifica per la tua istanza di Prometheus)
    • Accesso: Server (predefinito)
  5. Clicca su Salva e testa

Esempio: Aggiungi InfluxDB

  1. Seleziona InfluxDB come fonte di dati
  2. Configura:
    • Linguaggio di query: Flux o InfluxQL
    • URL: http://localhost:8086
    • Database: your_database_name
    • Utente/Password: le tue credenziali
  3. Clicca su Salva e testa

Crea la prima dashboard

  1. Clicca su Crea (+ icona) → Dashboard
  2. Clicca su Aggiungi nuovo pannello
  3. Seleziona la tua fonte di dati
  4. Scrivi la tua query (esempio per Prometheus):
rate(http_requests_total[5m])
  1. Personalizza la visualizzazione:
    • Scegli il tipo di pannello (Grafico, Gauges, Stat, Tabella, ecc.)
    • Configura legende, assi, soglie
    • Aggiungi trasformazioni se necessario
  2. Clicca su Applica per salvare il pannello
  3. 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

  1. Vai a AllertingPunti di contatto
  2. Clicca su Nuovo punto di contatto
  3. Scegli il tipo (Email, Slack, PagerDuty, Webhook, ecc.)
  4. Configura le impostazioni (es. URL webhook di Slack)
  5. Testa e salva

Passo 2: Crea una regola di allerting

  1. Modifica un pannello nella tua dashboard
  2. Clicca sulla scheda Allert
  3. Configura le condizioni:
    • Quando: avg()
    • Di: query(A, 5m, now)
    • Sopra: 80
  4. Imposta l’intervallo di valutazione
  5. Aggiungi un canale di notifica
  6. 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

  1. Organizza per scopo: Crea dashboard separate per diversi team/servizi
  2. Utilizza le variabili: Crea dashboard dinamiche con variabili di modello
  3. Imposta gli intervalli di tempo appropriati: Predefinito a finestre di tempo significative
  4. Aggiungi annotazioni: Contrassegna i deployment e gli incidenti
  5. Utilizza le cartelle: Organizza le dashboard in modo logico
  6. Abilita la versioning: Traccia i cambiamenti delle dashboard
  7. Imposta gli intervalli di aggiornamento: Bilancia le esigenze in tempo reale con le prestazioni
  8. 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

  1. Cambia le credenziali predefinite immediatamente
  2. Utilizza HTTPS con certificati validi
  3. Configura il firewall:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    
  4. Disattiva l’accesso anonimo
  5. Utilizza l’autenticazione forte (LDAP, OAuth, SAML)
  6. Aggiornamenti regolari Mantieni Grafana aggiornato
  7. Limita le autorizzazioni degli utenti Utilizza il controllo degli accessi basato sui ruoli
  8. Abilita il log di audit
  9. Utilizza fonti di dati in sola lettura quando possibile
  10. Implementa il rate limiting

Monitoraggio di Grafana stesso

Monitora l’istanza di Grafana:

  1. Abilita l’endpoint delle metriche in grafana.ini:
    [metrics]
    enabled = true
    
  2. Aggiungi Grafana come target di Prometheus
  3. 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

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.