GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So führen Sie Grafana in einem Docker-Container aus

Grafana ist eine führende Observability-Plattform für die Visualisierung von Metriken. Sie können damit maßgeschneiderte Dashboards erstellen, um aussagekräftige Erkenntnisse aus den Echtzeit-Datenströmen Ihrer Anwendung zu gewinnen.

Grafana ist eine Cloud-native Anwendung, die auf beliebten Infrastrukturanbietern gestartet, auf Ihrer eigenen Hardware installiert oder als eigenständiger Container bereitgestellt werden kann. In diesem Leitfaden konzentrieren wir uns auf die letztere Option, indem wir das offizielle Grafana-Image verwenden, um eine Instanz zu starten, die in Docker ausgeführt wird.

Erste Schritte

Die einfachste Grafana-Container-Erstellung sieht so aus:

docker run -d --name=grafana -p 3000:3000 grafana/grafana

Sie haben einen neuen Grafana-Server, auf den über Port 3000 zugegriffen werden kann. Besuchen Sie http://localhost:3000 und melden Sie sich als admin an /admin .

Jetzt können Sie Datenquellen und Dashboards hinzufügen, um Ihre Visualisierungen zu erstellen. Klicken Sie auf der Startseite auf die Schaltfläche „Erste Datenquelle hinzufügen“, um eine neue Quelle zu verbinden; Wählen Sie auf dem folgenden Bildschirm den Anbietertyp aus und geben Sie dann die Details ein, damit Grafana auf Ihre Daten zugreifen kann.

Kehren Sie anschließend zur Startseite zurück und klicken Sie auf „Erstellen Sie Ihr erstes Dashboard“. Wählen Sie Ihren bevorzugten Visualisierungstyp aus und verwenden Sie dann den Abfragebereich, um die entsprechenden Metriken aus Ihren Daten auszuwählen. Sobald Sie fertig sind, wird Ihre neue Visualisierung auf Ihrem Dashboard angezeigt.

Dieses Verfahren zeigt, wie einfach Sie eine verfügbare Grafana-Testinstanz starten können. Der Betrieb eines produktionsbereiten Containers erfordert jedoch etwas mehr Überlegung. Hier ist ein vollständigerer Ansatz, der besser für den langfristigen Einsatz geeignet ist.

Auswählen einer Bildvariante

Grafana verwendet ein Geschäftsmodell mit zwei Lizenzen. Die Open-Source-Edition wird als grafana/grafana veröffentlicht auf Docker Hub, während Enterprise grafana/grafana-enterprise ist . Die folgenden Anweisungen funktionieren mit diesen beiden Varianten der obersten Ebene.

Es sind mehrere Grafana-Versionen verfügbar, jeweils entweder in den Geschmacksrichtungen Alpine oder Ubuntu. Alpine sollte in den meisten Bereitstellungssituationen bevorzugt werden:Es ist schlanker und darauf ausgerichtet, eine Grafana-kompatible Umgebung ohne überflüssige Extras bereitzustellen.

Das Betriebssystem wird ausgewählt, indem sein Name nach der Grafana-Version in einem Image-Tag angehängt wird:

grafana/grafana:8.3.0-ubuntu

Es ist immer am besten, eine bestimmte Version anzuheften, damit Sie nicht versehentlich Breaking Changes erhalten, wenn neue Updates veröffentlicht werden. Weglassen des Betriebssystemnamens (grafana/grafana:8.3.0 ) erhalten Sie die alpine Variante Ihrer ausgewählten Version.

Container erstellen

Grafana hat relativ einfache Bereitstellungsanforderungen. Sie müssen ein Docker-Volume bereitstellen, um Ihre persistenten Daten zu speichern, und einen Host-Port binden, damit Sie auf den Dienst zugreifen können. Einstellungen können bereitgestellt werden, indem eine Konfigurationsdatei in den Container gemountet oder Umgebungsvariablen eingefügt werden.

docker run -d --name grafana -p 9000:3000 
    -v grafana-data:/var/lib/grafana
    grafana/grafana:8.3.0

Dieses Beispiel startet einen neuen Grafana-Container namens grafana das auf Port 9000 auf Ihrem Docker-Host lauscht. Der Port ist im Container an 3000 gebunden, da dies die standardmäßige Abhöradresse von Grafana ist.

Ein Docker-Volume namens grafana-data wird durch -v referenziert Flagge. Es ist unter /var/lib/grafana gemountet innerhalb des Containers, in dem Grafana alle generierten Daten speichert. Der Volume-Mount bedeutet, dass der Inhalt des Verzeichnisses außerhalb des Containers gespeichert wird, wodurch Datenverlust vermieden wird, wenn der Container stoppt oder Ihr Host neu startet.

Injizierende Konfiguration

Sie können die Konfigurationsschlüssel von Grafana überschreiben, indem Sie Umgebungsvariablen festlegen, wenn Sie Ihren Container starten. Sie können jeden der Schlüssel in den Konfigurationsdateien im INI-Format von Grafana ändern, indem Sie den Schlüsselnamen groß schreiben und GF_ voranstellen :

# 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

Stellen Sie sicher, dass Sie den impliziten DEFAULT angeben Abschnittsname, wenn Sie den Wert einer Variable der obersten Ebene in der Konfigurationsdatei ändern.

Wenn Sie herausgefunden haben, welche Werte Sie ändern möchten, geben Sie die richtigen Umgebungsvariablen mit -e an Flags, wenn Sie Ihren Container starten:

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 unterstützt auch die dateibasierte Konfiguration. Mit diesem Mechanismus wird der Wert der Zielumgebungsvariable zum Pfad zu einer im Container verfügbaren Datei. Grafana erhält den tatsächlichen Wert der Einstellung durch Lesen der Datei.

Um diesen Ansatz zu verwenden, ändern Sie jede Umgebungsvariable, indem Sie __FILE anhängen zu seinem regulären Namen:

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

Sie können die Datei mit einem Bind-Mount (-v ./password.txt:/run/secrets/password) zum Container hinzufügen ) oder ein dediziertes Secrets-Management-System wie Docker Secrets. Die dateibasierte Konfiguration bietet eine sicherere Möglichkeit, vertrauliche Werte einzufügen, die Sie lieber nicht als Klartext in CI-Jobprotokollen und im Verlauf Ihrer Shell anzeigen möchten.

Überschreiben der Konfigurationsdatei

Sie können die Konfigurationsdatei von Grafana auf der Festplatte jederzeit überschreiben, wenn Sie zu viele Werte für Umgebungsvariablen ändern, um dies zu erleichtern.

Das Docker-Image findet diese Datei unter /etc/grafana/grafana.ini . Sie können einen Ersatz mithilfe eines Docker-Bind-Mounts am erwarteten Pfad mounten:

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

Die Verwendung einer Konfigurationsdatei erleichtert das Einfügen komplizierterer Einstellungen. Sie können Variablen interpolieren, um dynamische Werte aufzubauen. Konfigurationsdateien unterstützen auch Kommentare, mit denen Sie Ihre Absichten dokumentieren können, um zukünftigen Betreuern zu helfen.

Plugins verwalten

Viele Grafana-Installationen erfordern Plugins, die zusätzliche Datenquellen hinzufügen oder vorgefertigte Dashboard-Panels bereitstellen. Das Docker-Image enthält ein Hilfsprogramm, mit dem Sie Plugins zu einem neuen Container hinzufügen können, indem Sie eine spezielle Umgebungsvariable festlegen.

So fügen Sie ein offizielles Plugin hinzu, das im Grafana-Katalog aufgeführt ist:

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

Die GF_INSTALL_PLUGINS -Variable erwartet eine durch Kommas getrennte Liste von Plug-in-Namen, die installiert werden, wenn der Container zum ersten Mal gestartet wird. Die Namen werden an die grafana-cli plugins install übergeben Befehl. Das bedeutet, dass Sie Versionsausdrücke wie grafana-simple-json-datasource 1.1.0 einschließen können , und verweisen Sie Community-Plug-ins über ihre 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

Erstellen eines benutzerdefinierten Bildes

Grafana-Container manuell aufrufen, wobei die Konfiguration über docker run bereitgestellt wird flags wiederholt sich und ist fehleranfällig. Das Erstellen Ihres eigenen Docker-Images mit Ihren enthaltenen Änderungen spart Zeit und zentralisiert Einstellungen, wenn mehrere Teammitglieder in der Lage sein müssen, eine neue Instanz hochzufahren.

Sie können dies erreichen, indem Sie ein Dockerfile schreiben, das die offizielle grafana/grafana erweitert Bild. Dies gibt Ihnen die Möglichkeit, eine benutzerdefinierte Konfigurationsdatei hineinzukopieren und zusätzliche Umgebungsvariablen festzulegen, die Sie benötigen.

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

Verwenden Sie Ihr Dockerfile, um Ihr neues Grafana-Image zu erstellen:

docker build -t custom-grafana:latest .

Jetzt können Sie eine vorkonfigurierte Containerinstanz aus Ihrem Image starten:

docker run -d --name grafana -p 9000:3000 
    -v grafana-data:/var/lib/grafana
    custom-grafana:latest

Dieser Ansatz ist besonders nützlich, wenn Sie umfangreiche Änderungen an Ihrer Grafana-Umgebung vorgenommen haben. Sie können Ihre Konfiguration jetzt bei jedem Start eines Containers zuverlässig reproduzieren. Dies hilft auch bei Versionsänderungen Ihrer Installation im Laufe der Zeit.

Ein Nachteil ist die Notwendigkeit, Ihr Image neu zu erstellen, wenn Upstream-Grafana-Updates veröffentlicht werden. Sie müssen regelmäßig grafana/grafana abrufen , docker build Ihr Image, pushen Sie es in eine Registrierung und ziehen Sie dann die neue Version auf Ihren Docker-Host. Die letzte Phase besteht darin, Ihre laufenden Container neu zu erstellen, damit sie das aktualisierte Image verwenden.

Zusammenfassung

Docker vereinfacht die Installation und Einrichtung von Grafana, indem es eine isolierte Umgebung bereitstellt, in der Sie Ihre Observability-Plattform hosten können. Sie können schnell neue Grafana-Instanzen starten, indem Sie einen Hostport binden, ein Datenvolume mounten und Konfigurationswerte über Umgebungsvariablen bereitstellen. Später können Sie Ihre Konfiguration in Ihrem eigenen wiederverwendbaren Image verkapseln, das auf der offiziellen Basis aufbaut.

Sobald sie betriebsbereit ist, funktioniert eine Dockerized Grafana-Installation wie eine normale. Sie können Datenquellen verbinden, mit der HTTP-API interagieren und Warnungen konfigurieren, indem Sie auf den Hostport verweisen, den Sie an Ihren Container gebunden haben. Sie können Ihrer Instanz auch einen Domänennamen zuweisen und HTTPS einrichten, indem Sie sie hinter einem Reverse-Proxy wie Apache oder Traefik bereitstellen.


Docker
  1. Wie führe ich ein Programm in einem Docker-Container aus?

  2. So führen Sie MySQL in einem Docker-Container aus

  3. Wie man SSH in einen Docker-Container einfügt

  4. So installieren Sie Vim in einem Docker-Container

  5. So listen Sie Docker-Container auf

So führen Sie den ELK-Stack im Docker-Container aus

Wie man SSH in einen Docker-Container einfügt und Befehle ausführt

So führen Sie eine .NET-App in Docker aus

So führen Sie PHPMyAdmin in einem Docker-Container aus

So richten Sie einen Apache Docker-Container ein

So führen Sie Docker-Container aus