Grafana è una piattaforma di osservabilità leader per la visualizzazione delle metriche. Ti consente di creare dashboard su misura per far emergere informazioni significative dai flussi di dati in tempo reale della tua applicazione.
Grafana è un'applicazione nativa per il cloud pronta per essere lanciata su provider di infrastrutture popolari, installata sul proprio hardware o distribuita come contenitore autonomo. In questa guida ci concentreremo su quest'ultima scelta utilizzando l'immagine ufficiale di Grafana per avviare un'istanza che viene eseguita in Docker.
Per iniziare
La creazione del contenitore Grafana più semplice si presenta così:
docker run -d --name=grafana -p 3000:3000 grafana/grafana
Avrai un nuovo server Grafana accessibile sulla porta 3000. Visita http://localhost:3000
e accedi come admin
/admin
.
Ora puoi iniziare ad aggiungere origini dati e dashboard per creare le tue visualizzazioni. Premi il pulsante "Aggiungi la tua prima fonte di dati" sulla home page per collegare una nuova fonte; seleziona il tipo di provider nella schermata seguente, quindi inserisci i dettagli in modo che Grafana possa accedere ai tuoi dati.
Quindi torna alla home page e fai clic su "Crea la tua prima dashboard". Scegli il tipo di visualizzazione preferito, quindi utilizza il riquadro delle query per selezionare le metriche appropriate dai tuoi dati. Al termine, la nuova visualizzazione verrà mostrata sulla dashboard.
Questa procedura mostra la facilità con cui è possibile avviare un'istanza di test Grafana usa e getta. L'esecuzione di un container pronto per la produzione richiede però un po' più di riflessione. Ecco un approccio più completo che è meglio attrezzato per l'uso a lungo termine.
Selezione di una variante di immagine
Grafana utilizza un modello di business a doppia licenza. L'edizione open-source è pubblicata come grafana/grafana
su Docker Hub mentre Enterprise è grafana/grafana-enterprise
. Le seguenti istruzioni funzioneranno con entrambe queste varianti di primo livello.
Sono disponibili più versioni di Grafana, ciascuna nelle versioni Alpine o Ubuntu. Alpine dovrebbe essere preferito nella maggior parte delle situazioni di distribuzione:è più snello e mirato a fornire un ambiente compatibile con Grafana senza extra superflui.
Il sistema operativo viene selezionato aggiungendo il suo nome dopo la versione Grafana in un tag immagine:
grafana/grafana:8.3.0-ubuntu
È sempre meglio aggiungere a una versione specifica in modo da non ricevere involontariamente modifiche sostanziali quando vengono pubblicati nuovi aggiornamenti. Omissione del nome del sistema operativo (grafana/grafana:8.3.0
) ti darà la variante Alpine della versione selezionata.
Creazione di un container
Grafana ha requisiti di distribuzione relativamente semplici. È necessario montare un volume Docker per archiviare i dati persistenti e associare una porta host in modo da poter accedere al servizio. Le impostazioni possono essere fornite montando un file di configurazione nel contenitore o iniettando variabili di ambiente.
docker run -d --name grafana -p 9000:3000 -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0
Questo esempio avvia un nuovo contenitore Grafana chiamato grafana
che è in ascolto sulla porta 9000 sul tuo host Docker. La porta è vincolata a 3000 nel container poiché questo è l'indirizzo di ascolto predefinito di Grafana.
Un volume Docker chiamato grafana-data
è referenziato da -v
bandiera. È montato su /var/lib/grafana
all'interno del contenitore, dove Grafana memorizza tutti i dati generati. Il montaggio del volume significa che i contenuti della directory verranno archiviati all'esterno del contenitore, evitando la perdita di dati quando il contenitore si arresta o l'host si riavvia.
Inietta configurazione
Puoi sovrascrivere le chiavi di configurazione di Grafana impostando le variabili di ambiente quando avvii il tuo container. Puoi modificare qualsiasi chiave nei file di configurazione in formato INI di Grafana mettendo in maiuscolo il nome della chiave e anteponendo GF_
:
# INI file instance_name = my-grafana [security] admin_user = demo admin_password = grafana --- # Corresponding environment variables GF_DEFAULT_INSTANCE_NAME=my-grafana GF_SECURITY_ADMIN_USER=demo GF_SECURITY_ADMIN_PASSWORD=grafana
Assicurati di includere il DEFAULT
implicito nome della sezione quando modifichi il valore di una variabile di primo livello nel file di configurazione.
Una volta individuati i valori che desideri modificare, fornisci le variabili di ambiente corrette con -e
flag quando avvii il tuo container:
docker run -d --name grafana -p 9000:3000 -e GF_DEFAULT_INSTANCE_NAME=my-grafana -e GF_SECURITY_ADMIN_USER=demo -e GF_SECURITY_ADMIN_PASSWORD=grafana -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0
Grafana supporta anche la configurazione basata su file. Con questo meccanismo il valore della variabile d'ambiente di destinazione diventa il percorso di un file disponibile all'interno del contenitore. Grafana otterrà il valore reale dell'impostazione leggendo il file.
Per utilizzare questo approccio, modifica qualsiasi variabile di ambiente inserendo il suffisso __FILE
al suo nome normale:
docker run -d --name grafana -p 9000:3000 -e GF_DEFAULT_INSTANCE_NAME=my-grafana -e GF_SECURITY_ADMIN_USER=demo -e GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/password -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0
Puoi aggiungere il file al contenitore utilizzando un montaggio vincolato (-v ./password.txt:/run/secrets/password
) o un sistema di gestione dei segreti dedicato come Docker Secrets. La configurazione basata su file fornisce un modo più sicuro per inserire valori sensibili che preferiresti non esporre come testo normale nei registri dei lavori CI e nella cronologia della shell.
Sostituzione del file di configurazione
Puoi sempre sovrascrivere il file di configurazione su disco di Grafana se stai modificando troppi valori per rendere convenienti le variabili di ambiente.
L'immagine Docker individua questo file in /etc/grafana/grafana.ini
. Puoi montare una sostituzione nel percorso previsto utilizzando un montaggio di collegamento Docker:
docker run -d --name grafana -p 9000:3000 -v ./grafana.ini:/etc/grafana/grafana.ini -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0
L'uso di un file di configurazione facilita l'inserimento di impostazioni più complicate. È possibile interpolare le variabili per creare valori dinamici. I file di configurazione supportano anche i commenti che ti consentono di documentare le tue intenzioni per aiutare i futuri manutentori.
Gestione dei plug-in
Molte installazioni di Grafana richiedono plug-in che aggiungono origini dati aggiuntive o forniscono pannelli dashboard predefiniti. L'immagine Docker include un'utilità di supporto che ti consente di aggiungere plug-in a un nuovo contenitore impostando una variabile di ambiente speciale.
Ecco come aggiungere un plugin ufficiale elencato nel catalogo Grafana:
docker run -d --name grafana -p 9000:3000 -e GF_INSTALL_PLUGINS=grafana-simple-json-datasource -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0
Il GF_INSTALL_PLUGINS
La variabile prevede un elenco di nomi di plug-in separati da virgole da installare al primo avvio del contenitore. I nomi verranno passati all'grafana-cli plugins install
comando. Ciò significa che puoi includere espressioni di versione, come grafana-simple-json-datasource 1.1.0
e fai riferimento ai plug-in della community tramite il loro URL:
docker run -d --name grafana -p 9000:3000 -e GF_INSTALL_PLUGINS=https://example.com/grafana-plugin.zip -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0
Creazione di un'immagine personalizzata
Visualizzazione manuale dei contenitori Grafana con la configurazione fornita tramite docker run
flags è ripetitivo e soggetto a errori. La creazione della tua immagine Docker con le modifiche incluse consente di risparmiare tempo e centralizza le impostazioni quando più membri del team devono essere in grado di avviare una nuova istanza.
Puoi ottenerlo scrivendo un Dockerfile che estenda il grafana/grafana
ufficiale Immagine. Questo ti dà l'opportunità di copiare in un file di configurazione personalizzato e impostare qualsiasi variabile di ambiente aggiuntiva di cui hai bisogno.
FROM grafana/grafana:8.3.0 # Add plugins ENV GF_INSTALL_PLUGINS=grafana-simple-json-datasource # Copy a config file from your working directory COPY grafana.ini /etc/grafana/grafana.ini
Usa il tuo Dockerfile per costruire la tua nuova immagine Grafana:
docker build -t custom-grafana:latest .
Ora puoi avviare un'istanza del contenitore preconfigurata dalla tua immagine:
docker run -d --name grafana -p 9000:3000 -v grafana-data:/var/lib/grafana custom-grafana:latest
Questo approccio è particolarmente utile quando hai apportato modifiche estese al tuo ambiente Grafana. Ora puoi riprodurre in modo affidabile la tua configurazione ogni volta che avvii un container. Questo aiuta anche a modificare la versione della tua installazione nel tempo.
Uno svantaggio è la necessità di ricostruire l'immagine quando vengono pubblicati gli aggiornamenti Grafana a monte. Dovrai estrarre periodicamente grafana/grafana
, docker build
l'immagine, esegui il push in un registro, quindi esegui il pull della nuova versione sul tuo host Docker. La fase finale consiste nel ricreare i contenitori in esecuzione in modo che utilizzino l'immagine aggiornata.
Riepilogo
Docker semplifica l'installazione e la configurazione di Grafana fornendo un ambiente isolato in cui è possibile ospitare la piattaforma di osservabilità. Puoi avviare rapidamente nuove istanze Grafana collegando una porta host, montando un volume di dati e fornendo valori di configurazione tramite variabili di ambiente. Successivamente puoi incapsulare la tua configurazione nella tua immagine riutilizzabile che si basa sulla base ufficiale.
Una volta avviata e funzionante, un'installazione Dockerized Grafana funziona come una normale. Puoi connettere origini dati, interagire con l'API HTTP e configurare avvisi puntando alla porta host associata al tuo container. Puoi anche assegnare alla tua istanza un nome di dominio e configurare HTTPS servendolo dietro un proxy inverso come Apache o Traefik.