Come fare self-hosting di Grafana nel 2026: dashboard, alert e stato persistente
Esegui Grafana con la porta corretta, storage persistente, TLS, autenticazione e backup. Risolvi i problemi quando le dashboard scompaiono insieme al file SQLite in produzione.
Esistono due versioni di “eseguire Grafana”: esiste un container oppure il servizio completa il suo compito reale. Solo la seconda è importante. In questo caso, la verifica consiste nell'aggiungere una data source in sola lettura, salvare un pannello, valutare una regola di alert e inviare una notifica di test tramite un contact point.
Grafana serve a questo scopo: dashboard e alert su metriche, log e trace. Il deployment deve preservare gli elementi alla base di questo comportamento; una porta, un volume e un certificato sono input, non il risultato.
La configurazione di Grafana in produzione
Il processo HTTP di Grafana ascolta sulla porta 3000; mantieni questa porta nella rete applicativa e pubblica solo la route della piattaforma. Il contratto di rete per Grafana prevede data source raggiungibili e SMTP se è necessaria la consegna degli alert. Mantieni gli endpoint privati sul DNS interno, consenti solo le chiamate in uscita necessarie e assegna a Grafana una credenziale di servizio con ambito limitato.
Metti per iscritto il perimetro in un breve contratto: chi è responsabile del requisito, quale credenziale viene utilizzata, quale timeout è accettabile e come si manifesta un errore. Esegui quindi questa transazione: aggiungi una data source in sola lettura, salva un pannello, valuta una regola di alert e invia una notifica di test tramite un contact point. Durante l'esecuzione osserva il query fan-out, gli intervalli di aggiornamento delle dashboard, la valutazione degli alert e la memoria dei plugin invece delle metriche memorizzate da Grafana, perché questo carico fornisce una dimensione iniziale più utile rispetto a un container inattivo.
Avviare Grafana senza nascondere gli elementi variabili
Avvia Grafana in modo che la route rimanga privata fino al completamento del bootstrap.
docker run -d \
--name grafana \
--restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-v grafana-data:/var/lib/grafana \
-e GF_SECURITY_ADMIN_PASSWORD=replace-with-a-long-random-value \
grafana/grafana:latest
Se il processo entra in un loop, confronta l'utente previsto dall'immagine con il proprietario di ogni percorso montato. Se rimane attivo, verifica localmente la porta 3000 e passa subito al workflow: aggiungi una data source in sola lettura, salva un pannello, valuta una regola di alert e invia una notifica di test tramite un contact point. Fissa la versione dell'immagine solo dopo che questa verifica end-to-end è superata e registra la configurazione esatta accanto al servizio.
Assegnare a Grafana un indirizzo canonico
L'emissione del certificato TLS è solo metà della route di Grafana. Imposta GF_SERVER_ROOT_URL sull'URL HTTPS pubblico. Invia internamente il traffico alla porta 3000 e inoltra lo schema esterno, così gli URL generati e i cookie sicuri rimangono coerenti.
Esegui lo scenario completo di Grafana da una rete pulita, non limitarti alla pagina principale. Un errore 502 o un problema con il certificato può essere isolato con la configurazione automatica del dominio e di TLS. Se il traffico raggiunge il processo e le dashboard scompaiono insieme al file SQLite oppure i callback OAuth utilizzano localhost, analizza la condizione nel punto in cui si verifica invece di sovrapporre redirect.
Progettare il ripristino di Grafana prima del lancio
Il set per un ripristino durevole comprende il database di Grafana, i plugin e la configurazione fornita tramite provisioning. Monta /var/lib/grafana prima del bootstrap, scrivi dati di esempio innocui e sostituisci il container per dimostrare che quel percorso è realmente persistente. Un volume protegge i dati dalla sostituzione del container, ma non dalla perdita dell'host, dalla cancellazione accidentale o dalla corruzione a livello applicativo.
Esegui backup che tengano conto della data source: quando necessario, usa dump logici per i database attivi e copia i file solo da uno stato coerente. Conserva una copia cifrata lontano dall'host di Grafana. Il criterio di accettazione per un ripristino deve essere specifico: utenti, cartelle, dashboard, regole di alert e metadati delle data source devono tornare disponibili e l'alert di test deve essere valutato. La guida ai backup verificati tramite ripristino spiega perché il solo successo del job non è sufficiente.
Chiudere l'accesso temporaneo alla configurazione
Un deployment sicuro di Grafana inizia rimuovendo i privilegi. Evita di lasciare admin/admin o di esporre involontariamente l'accesso anonimo; sostituisci invece la password admin del bootstrap, limita la modifica delle data source e mantieni gli scope dei token degli account di servizio.
Sostituisci immediatamente GF_SECURITY_ADMIN_PASSWORD di esempio, conservala fuori dall'immagine e ruotala come una credenziale amministrativa se viene esposta. Limita le route amministrative, usa il DNS privato per le dipendenze e verifica ogni bind mount. Quando i log vengono inviati centralmente, filtra i secret e i contenuti privati prima che lascino il server.
Eseguire una prova della modifica rischiosa a Grafana
Un container attivo è necessario, ma non sufficiente. L'indicatore a livello di servizio è il completamento corretto di “aggiungere una data source in sola lettura, salvare un pannello, valutare una regola di alert e inviare una notifica di test tramite un contact point”, mentre i segnali di pressione più probabili sono il query fan-out, gli intervalli di aggiornamento delle dashboard, la valutazione degli alert e la memoria dei plugin invece delle metriche memorizzate da Grafana.
Il change control è importante perché le migrazioni del database di Grafana e la compatibilità dei plugin richiedono un upgrade graduale con gli stessi file di provisioning. Conserva la vecchia immagine, verifica le migrazioni su uno stato copiato e documenta se il rollback è supportato dopo lo spostamento dello schema. Se le dashboard scompaiono insieme al file SQLite oppure i callback OAuth utilizzano localhost, analizza il primo confine che differisce dall'ambiente funzionante.
Registrare un deployment di Grafana valido
Per Grafana, definisci una transazione valida prima del lancio: aggiungi una data source in sola lettura, salva un pannello, valuta una regola di alert e invia una notifica di test tramite un contact point. Inserisci i prerequisiti, la risposta prevista e i passaggi di pulizia nel version control, senza valori segreti. Fissa l'immagine utilizzata per stabilire questo riferimento.
Usa la transazione per validare una sostituzione e un ripristino indipendente. Il servizio ripristinato è accettabile solo quando utenti, cartelle, dashboard, regole di alert e metadati delle data source tornano disponibili e l'alert di test viene valutato. Allo stesso tempo, osserva il query fan-out, gli intervalli di aggiornamento delle dashboard, la valutazione degli alert e la memoria dei plugin invece delle metriche memorizzate da Grafana e trasforma il componente più lento o più limitato in un alert a livello di servizio.
Il gate deve includere anche un caso negativo: nega temporaneamente all'identità di test l'accesso alle data source raggiungibili e a SMTP se è necessaria la consegna degli alert. Verifica che Grafana produca un errore utile senza compromettere i dati, ripristina la condizione valida e ripeti la transazione valida. Conservare entrambi i risultati impedisce che un endpoint di health superficiale diventi l'unica prova disponibile in produzione.
Dove Dockup riduce il lavoro per Grafana
Routing, certificati, sostituzione dei servizi e storage collegato sono obiettivi ragionevoli per l'automazione. Dockup li gestisce per Grafana e può fornire il database gestito correlato oppure connettersi ai servizi presenti sul server del cliente.
Ciò che non dovrebbe inventare è la trust policy di Grafana. Dopo il deployment, imposta GF_SERVER_ROOT_URL sull'URL HTTPS pubblico, applica questo perimetro — sostituisci la password admin del bootstrap, limita la modifica delle data source e mantieni gli scope dei token degli account di servizio — e verifica il risultato di questo scenario: aggiungi una data source in sola lettura, salva un pannello, valuta una regola di alert e invia una notifica di test tramite un contact point. Il risultato è un'infrastruttura con un clic e un test di accettazione specifico per l'applicazione.
Domande frequenti
Di cosa ha bisogno Grafana per un deployment in produzione?
Instrada il container Grafana sulla porta 3000 attraverso un'unica origine HTTPS. Il requisito di rete associato è costituito da data source raggiungibili e SMTP se è necessaria la consegna degli alert. Non considerare Grafana pronto finché non puoi aggiungere una data source in sola lettura, salvare un pannello, valutare una regola di alert e inviare una notifica di test tramite un contact point.
Quali dati di Grafana devono essere inclusi in un backup?
Rendi persistente /var/lib/grafana e includi il database di Grafana, i plugin e la configurazione fornita tramite provisioning nello stesso manifest di ripristino. Un ripristino pulito di Grafana è riuscito solo quando utenti, cartelle, dashboard, regole di alert e metadati delle data source tornano disponibili e l'alert di test viene valutato.
Grafana richiede HTTPS dietro un reverse proxy?
Usa HTTPS per l'origine pubblica di Grafana e mantieni la porta 3000 nella route interna. Applica correttamente l'impostazione di Grafana: imposta GF_SERVER_ROOT_URL sull'URL HTTPS pubblico. Per Grafana, HTTPS protegge le credenziali o i contenuti degli utenti durante il transito e mantiene coerente il comportamento del client sensibile all'origine.
Come si deve testare un upgrade di Grafana?
Ripristina lo stato corrente di Grafana in un deployment isolato, applica la versione candidata e ripeti la relativa transazione di accettazione. Presta particolare attenzione perché le migrazioni del database di Grafana e la compatibilità dei plugin richiedono un upgrade graduale con gli stessi file di provisioning. Conserva l'immagine precedente di Grafana finché non avrai compreso i limiti della migrazione dei dati e del rollback.
