GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come eseguire Grafana in un contenitore Docker

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.


Docker
  1. Come eseguire un programma all'interno di un contenitore Docker?

  2. Come eseguire MySQL in un contenitore Docker

  3. Come eseguire un comando su un contenitore Docker in esecuzione

  4. Come assegnare un IP statico a un contenitore Docker

  5. Come elencare i contenitori Docker

Come eseguire lo stack ELK su Docker Container

Come eseguire SSH in un contenitore Docker ed eseguire comandi

Come eseguire un'app .NET in Docker

Come eseguire PHPMyAdmin in un contenitore Docker

Come configurare un container Docker Apache

Come eseguire i contenitori Docker