Grafana-Installations- und Sicherheitsleitfaden
Grafana ist ein Open-Source-Tool zur Datenvisualisierung und Überwachung, das sich mit komplexen Datenquellen wie Prometheus, InfluxDB, Graphite und ElasticSearch integrieren lässt. Mit Grafana können Sie Warnmeldungen, Benachrichtigungen und Ad-hoc-Filter für Ihre Daten erstellen und gleichzeitig die Zusammenarbeit mit Ihrem Team durch integrierte Freigabefunktionen erleichtern.
In diesem Tutorial installieren Sie Grafana und sichern es mit einem SSL-Zertifikat und einem Nginx-Reverse-Proxy. Sobald Sie Grafana eingerichtet haben, haben Sie die Möglichkeit, die Benutzer-Authentifizierung über GitHub zu konfigurieren, um die Berechtigungen Ihres Teams besser zu verwalten.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie:
- Einen Ubuntu 22.04-Server, einschließlich eines Nicht-Root-Benutzers mit sudo-Rechten und einer mit UFW konfigurierten Firewall.
- Einen vollständig registrierten Domainnamen. In diesem Tutorial wird your_domain verwendet. Sie können einen Domainnamen bei Namecheap kaufen, kostenlos bei Freenom registrieren oder einen anderen Domain-Registrar Ihrer Wahl nutzen.
- Die folgenden DNS-Einträge für Ihren Server. li>
- Einen A-Record mit your_domain, der auf die öffentliche IP-Adresse Ihres Servers verweist.
- Einen A-Record mit www.your_domain, der auf die öffentliche IP-Adresse Ihres Servers verweist.
- Eine Nginx-Installation, einschließlich einer Server-Block-Konfiguration für Ihre Domain.
- Einen Nginx-Serverblock mit Let’s Encrypt.
- Optional benötigen Sie ein GitHub-Konto, das mit einer Organisation verknüpft ist, um die GitHub-Authentifizierung einzurichten.
Schritt 1 — Installation von Grafana
In diesem ersten Schritt installieren Sie Grafana auf Ihrem Ubuntu 22.04-Server. Sie können Grafana entweder direkt von der offiziellen Website herunterladen oder über ein APT-Repository installieren. Da ein APT-Repository die Installation und Verwaltung von Updates erleichtert, wird in diesem Tutorial diese Methode verwendet.
Laden Sie den Grafana-GPG-Schlüssel mit wget
herunter und leiten Sie die Ausgabe an gpg
weiter. Dadurch wird der GPG-Schlüssel von base64 in das Binärformat konvertiert. Anschließend speichern Sie den Schlüssel mit tee
in der Datei /usr/share/keyrings/grafana.gpg
.
wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null
In diesem Befehl deaktiviert die Option -q
die Statusmeldungen von wget
, und -O
gibt die heruntergeladene Datei im Terminal aus. Diese Optionen stellen sicher, dass nur der Inhalt der Datei weitergeleitet wird. Die Option > /dev/null
verbirgt die Ausgabe aus Sicherheitsgründen.
Fügen Sie als Nächstes das Grafana-Repository zu Ihren APT-Quellen hinzu:
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Aktualisieren Sie anschließend den APT-Cache, um die Paketlisten zu aktualisieren:
sudo apt update
Jetzt können Sie mit der Installation fortfahren:
sudo apt install grafana
Nach der Installation starten Sie den Grafana-Server mit systemctl
:
sudo systemctl start grafana-server
Überprüfen Sie anschließend, ob Grafana läuft, indem Sie den Status des Dienstes abrufen:
sudo systemctl status grafana-server
Die Ausgabe wird ähnlich wie folgt aussehen:
Output
● grafana-server.service - Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2022-09-27 14:42:15 UTC; 6s ago
Docs: http://docs.grafana.org
Main PID: 4132 (grafana-server)
Tasks: 7 (limit: 515)
...
Diese Ausgabe enthält Informationen über den Grafana-Prozess, einschließlich Status, Hauptprozess-ID (PID) und mehr. active (running)
zeigt an, dass der Prozess ordnungsgemäß läuft.
Zum Abschluss aktivieren Sie den Dienst, sodass Grafana automatisch beim Systemstart gestartet wird:
sudo systemctl enable grafana-server
Sie erhalten folgende Ausgabe:
Output
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.
Diese Ausgabe bestätigt, dass systemd
die erforderlichen symbolischen Links erstellt hat, um Grafana automatisch zu starten.
Grafana ist nun installiert und einsatzbereit. Im nächsten Schritt sichern Sie die Verbindung zu Grafana mit einem Reverse-Proxy und einem SSL-Zertifikat.
Schritt 2 — Einrichten des Reverse Proxy
Die Verwendung eines SSL-Zertifikats stellt sicher, dass Ihre Daten durch Verschlüsselung der Verbindung zu und von Grafana geschützt sind. Um diese Verbindung zu nutzen, müssen Sie jedoch zuerst Nginx als Reverse-Proxy für Grafana konfigurieren.
Öffnen Sie die Nginx-Konfigurationsdatei, die Sie beim Einrichten des Nginx-Serverblocks mit Let’s Encrypt erstellt haben. Sie können einen beliebigen Texteditor verwenden, in diesem Tutorial nutzen wir nano
:
sudo nano /etc/nginx/sites-available/your_domain
Suchen Sie den folgenden Block:
/etc/nginx/sites-available/your_domain
...
location / {
try_files $uri $uri/ =404;
}
...
Da Sie Nginx bereits für die Kommunikation über SSL konfiguriert haben und der gesamte Webverkehr zu Ihrem Server bereits über Nginx läuft, müssen Sie lediglich Nginx anweisen, alle Anfragen an Grafana weiterzuleiten, das standardmäßig auf Port 3000 läuft.
Löschen Sie die vorhandene try_files
-Zeile in diesem Location-Block und ersetzen Sie sie durch die folgenden Optionen:
/etc/nginx/sites-available/your_domain
...
location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
...
Dies ordnet den Proxy dem entsprechenden Port zu und überträgt einen Servernamen in der Kopfzeile.
Damit die Grafana Live-WebSocket-Verbindungen korrekt funktionieren, fügen Sie den folgenden Abschnitt außerhalb des server
-Blocks hinzu:
/etc/nginx/sites-available/your_domain
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
...
Fügen Sie anschließend den folgenden location
-Abschnitt in den server
-Block ein:
/etc/nginx/sites-available/your_domain
server {
...
location /api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
...
Die Header Upgrade
und Connection
werden nicht vom Client an den Proxy-Server gesendet. Damit der Proxy-Server über die Absicht des Clients informiert ist, das Protokoll auf WebSocket umzustellen, müssen diese Header explizit übermittelt werden.
Die endgültige Konfiguration sieht folgendermaßen aus:
/etc/nginx/sites-available/your_domain
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
...
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
location /api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
...
}
Hinweis: Falls Sie das Certbot-Tool zur Einrichtung von Let’s Encrypt SSL-Zertifikaten verwendet haben, kann Ihre Konfigurationsdatei zusätzliche Zeilen und Serverblöcke enthalten, die von Certbot hinzugefügt wurden.
Speichern und schließen Sie die Datei mit CTRL+X
, Y
und ENTER
, wenn Sie nano
verwenden.
Testen Sie nun die neuen Einstellungen, um sicherzustellen, dass alles korrekt konfiguriert wurde:
sudo nginx -t
Die folgende Ausgabe wird angezeigt:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Abschließend aktivieren Sie die Änderungen, indem Sie Nginx neu laden:
sudo systemctl reload nginx
Sie können nun auf den Standard-Anmeldebildschirm von Grafana zugreifen, indem Sie in Ihrem Webbrowser https://your_domain
aufrufen. Falls Sie Grafana nicht erreichen können, überprüfen Sie, ob Ihre Firewall den Datenverkehr auf Port 443 zulässt, und gehen Sie die vorherigen Schritte erneut durch.
Nachdem die Verbindung zu Grafana nun verschlüsselt ist, können Sie weitere Sicherheitsmaßnahmen implementieren, beginnend mit der Änderung der standardmäßigen administrativen Anmeldeinformationen von Grafana.
Schritt 3 — Aktualisieren der Anmeldeinformationen
Da jede Grafana-Installation standardmäßig dieselben administrativen Anmeldeinformationen verwendet, ist es eine bewährte Praxis, diese so schnell wie möglich zu ändern. In diesem Schritt aktualisieren Sie die Zugangsdaten, um die Sicherheit zu verbessern.
Öffnen Sie in Ihrem Webbrowser die Adresse https://your_domain
. Dadurch gelangen Sie zum Standard-Anmeldebildschirm von Grafana, auf dem Sie das Grafana-Logo, ein Formular zur Eingabe von E-Mail oder Benutzername und Passwort, eine Schaltfläche Log in sowie den Link Forgot your password? sehen.
Geben Sie in beide Felder für Email oder Benutzername und Passwort admin
ein und klicken Sie anschließend auf die Schaltfläche Log in.
Auf dem nächsten Bildschirm werden Sie aufgefordert, Ihr Konto durch Ändern des Standardpassworts sicherer zu machen:
Geben Sie das Passwort, das Sie zukünftig verwenden möchten, in die Felder Neues Passwort und Neues Passwort bestätigen ein.
Hier können Sie entweder auf Submit klicken, um die neuen Anmeldeinformationen zu speichern, oder Skip wählen, um diesen Schritt zu überspringen. Falls Sie überspringen, werden Sie beim nächsten Login erneut aufgefordert, das Passwort zu ändern.
Um die Sicherheit Ihrer Grafana-Installation zu erhöhen, klicken Sie auf Submit. Sie werden anschließend zum Dashboard Welcome to Grafana weitergeleitet.
Sie haben nun Ihr Konto durch Ändern der Standard-Anmeldeinformationen gesichert. Im nächsten Schritt nehmen Sie Änderungen an der Grafana-Konfiguration vor, sodass niemand ohne Ihre Genehmigung ein neues Grafana-Konto erstellen kann.
Schritt 4 — Deaktivieren der Grafana-Registrierungen und des anonymen Zugriffs
Grafana bietet Optionen, die es Besuchern ermöglichen, eigene Benutzerkonten zu erstellen und Dashboards ohne Registrierung anzusehen. Falls Grafana nicht über das Internet zugänglich ist oder mit öffentlich verfügbaren Daten wie Service-Statusmeldungen arbeitet, können diese Funktionen nützlich sein. Wenn Sie Grafana jedoch online für sensible Daten nutzen, kann anonymer Zugriff ein Sicherheitsproblem darstellen. Um dieses Problem zu beheben, nehmen Sie einige Änderungen an der Grafana-Konfiguration vor.
Öffnen Sie zunächst die Hauptkonfigurationsdatei von Grafana zur Bearbeitung:
sudo nano /etc/grafana/grafana.ini
Suchen Sie die folgende allow_sign_up
-Direktive unter der Überschrift [users]
:
/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
;allow_sign_up = true
...
Wenn diese Option auf true
gesetzt ist, wird eine Sign Up-Schaltfläche auf dem Anmeldebildschirm angezeigt, sodass sich Benutzer selbst registrieren und auf Grafana zugreifen können.
Das Deaktivieren dieser Option durch Setzen auf false
entfernt die Sign Up-Schaltfläche und erhöht die Sicherheit sowie den Datenschutz von Grafana.
Kommentieren Sie diese Direktive aus, indem Sie das ;
am Anfang der Zeile entfernen und die Option auf false
setzen:
/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
allow_sign_up = false
...
Suchen Sie als Nächstes die folgende enabled
-Direktive unter der Überschrift [auth.anonymous]
:
/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...
Wenn diese Option auf true
gesetzt ist, können nicht registrierte Benutzer auf Ihre Dashboards zugreifen. Durch das Setzen auf false
wird der Zugriff auf registrierte Benutzer beschränkt.
Kommentieren Sie diese Direktive aus, indem Sie das ;
am Anfang der Zeile entfernen und die Option auf false
setzen:
/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
enabled = false
...
Speichern Sie die Datei und schließen Sie den Texteditor.
Um die Änderungen zu aktivieren, starten Sie Grafana neu:
sudo systemctl restart grafana-server
Überprüfen Sie, ob alles ordnungsgemäß funktioniert, indem Sie den Status des Grafana-Dienstes abrufen:
sudo systemctl status grafana-server
Wie zuvor wird die Ausgabe anzeigen, dass Grafana active (running)
ist.
Öffnen Sie nun in Ihrem Webbrowser die Adresse https://your_domain
. Um zum Sign Up-Bildschirm zurückzukehren, bewegen Sie den Mauszeiger auf Ihr Avatar-Symbol unten links auf dem Bildschirm und klicken Sie auf die Option Sign out, die neben Ihrem Namen erscheint.
Nachdem Sie sich abgemeldet haben, überprüfen Sie, ob die Sign Up-Schaltfläche nicht mehr vorhanden ist und dass Sie sich nicht ohne Anmeldeinformationen einloggen können.
Zu diesem Zeitpunkt ist Grafana vollständig konfiguriert und einsatzbereit. Im nächsten Schritt können Sie den Anmeldeprozess für Ihr Unternehmen vereinfachen, indem Sie die Authentifizierung über GitHub aktivieren.
(Optional) Schritt 5 — Einrichten einer GitHub OAuth-App
Als alternative Methode zur Anmeldung können Sie Grafana so konfigurieren, dass es sich über GitHub authentifiziert. Dadurch erhalten alle Mitglieder autorisierter GitHub-Organisationen Zugriff. Dies kann besonders nützlich sein, wenn mehrere Entwickler zusammenarbeiten und auf Metriken zugreifen sollen, ohne separate Grafana-Zugangsdaten erstellen zu müssen.
Melden Sie sich zunächst bei einem GitHub-Konto an, das mit Ihrer Organisation verknüpft ist, und navigieren Sie zu Ihrer GitHub-Profilseite.
Wechseln Sie die Einstellungen, indem Sie oben auf dem Bildschirm auf den Link Switch to another account klicken und anschließend in der Dropdown-Liste Ihre Organisation auswählen. Dadurch wechseln Sie vom Bereich Personal settings zu den Organization settings.
Auf dem nächsten Bildschirm sehen Sie Ihr Organisationsprofil, in dem Sie Einstellungen wie den Namen der Organisation, die Organisations-E-Mail und die URL der Organisation ändern können.
Da Grafana OAuth verwendet—einen offenen Standard zur Bereitstellung von Zugriff für Dritte auf lokale Ressourcen—müssen Sie eine neue OAuth-Anwendung innerhalb von GitHub erstellen.
Klicken Sie auf den Link OAuth Apps unter Developer settings im unteren linken Bereich des Bildschirms.
Falls Ihrer Organisation auf GitHub noch keine OAuth-Anwendungen zugeordnet sind, wird die Meldung No Organization Owned Applications angezeigt. Andernfalls sehen Sie eine Liste der bereits mit Ihrem Konto verknüpften OAuth-Anwendungen.
Klicken Sie auf die Schaltfläche Register an application, um fortzufahren.
Auf dem nächsten Bildschirm geben Sie die folgenden Informationen zu Ihrer Grafana-Installation ein:
- Anwendungsname: Dies hilft Ihnen, Ihre verschiedenen OAuth-Anwendungen voneinander zu unterscheiden.
- Homepage-URL: Dies gibt GitHub an, wo Grafana zu finden ist. Geben Sie
https://your_domain
in dieses Feld ein und ersetzen Sieyour_domain
mit Ihrer tatsächlichen Domain. - Anwendungsbeschreibung: Dies beschreibt den Zweck Ihrer OAuth-Anwendung.
- Application Callback URL: Dies ist die Adresse, an die Benutzer weitergeleitet werden, nachdem sie sich erfolgreich authentifiziert haben. Für Grafana muss dieses Feld auf
https://your_domain/login/github
gesetzt werden.
Beachten Sie, dass Grafana-Benutzer, die sich über GitHub anmelden, die in den ersten drei Feldern eingegebenen Werte sehen werden. Achten Sie daher darauf, eine aussagekräftige und angemessene Beschreibung zu verwenden.
Nachdem Sie das Formular ausgefüllt haben, wird es wie folgt aussehen:
Klicken Sie auf die Schaltfläche Register application.
Sie werden nun zu einer Seite weitergeleitet, die allgemeine Informationen über Ihre neue OAuth-Anwendung enthält, einschließlich der Client-ID. Klicken Sie anschließend auf die Schaltfläche Generate a new client secret, um ein neues Client Secret zu erhalten. Notieren Sie sich beide Werte, da Sie sie zur Konfiguration von Grafana benötigen.
Warnung: Bewahren Sie Ihre Client-ID und Ihr Client Secret an einem sicheren und nicht öffentlichen Ort auf, da sie sonst für Angriffe missbraucht werden könnten.
Nachdem Sie Ihre GitHub OAuth-Anwendung erstellt haben, können Sie nun Grafana so konfigurieren, dass die Authentifizierung über GitHub erfolgt.
(Optional) Schritt 6 — Grafana als GitHub OAuth App konfigurieren
Um die GitHub-Authentifizierung für Ihre Grafana-Installation abzuschließen, müssen Sie nun einige Änderungen an den Grafana-Konfigurationsdateien vornehmen.
Öffnen Sie zunächst die Hauptkonfigurationsdatei von Grafana:
sudo nano /etc/grafana/grafana.ini
Suchen Sie die Überschrift [auth.github]
und heben Sie die Kommentierung dieses Abschnitts auf, indem Sie das ;
am Anfang jeder Zeile entfernen, mit Ausnahme der folgenden Zeilen, die in diesem Tutorial nicht geändert werden:
;allowed_domains =
;team_ids =
;role_attribute_path =
;role_attribute_strict = false
;allow_assign_grafana_admin = false
Nehmen Sie nun die folgenden Änderungen vor:
- Setzen Sie
enabled
undallow_sign_up
auftrue
. Dadurch wird die GitHub-Authentifizierung aktiviert und Mitgliedern der zugelassenen Organisation erlaubt, selbst Konten zu erstellen. - Setzen Sie
client_id
undclient_secret
auf die Werte, die Sie bei der Erstellung Ihrer GitHub OAuth-Anwendung erhalten haben. - Setzen Sie
allowed_organizations
auf den Namen Ihrer Organisation, um sicherzustellen, dass nur Mitglieder Ihrer Organisation sich anmelden und Grafana nutzen können.
Die vollständige Konfiguration sieht dann wie folgt aus:
/etc/grafana/grafana.ini
...
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name
;role_attribute_path =
;role_attribute_strict = false
;allow_assign_grafana_admin = false
...
Um die Einrichtung abzuschließen, müssen Sie Weiterleitungen hinter einem Reverse Proxy aktivieren. Dies geschieht durch das Setzen eines root_url
-Wertes unter der [server]
-Sektion.
/etc/grafana/grafana.ini
...
[server]
root_url = https://your_domain
...
Speichern Sie Ihre Konfiguration und schließen Sie die Datei.
Starten Sie dann Grafana neu, um die Änderungen zu übernehmen:
sudo systemctl restart grafana-server
Überprüfen Sie abschließend, ob der Dienst läuft:
sudo systemctl status grafana-server
Wie zuvor wird der Status active (running)
anzeigen.
Zu diesem Zeitpunkt haben Sie Grafana vollständig konfiguriert, sodass Mitglieder Ihrer GitHub-Organisation sich registrieren und Ihr Grafana nutzen können.
Fazit
In diesem Tutorial haben Sie Grafana installiert, konfiguriert und abgesichert. Außerdem haben Sie gelernt, wie Sie Mitgliedern Ihrer Organisation erlauben, sich über GitHub zu authentifizieren.
Um Ihre aktuelle Grafana-Installation zu erweitern, sehen Sie sich die Liste der offiziellen und von der Community erstellten Dashboards und Plugins an. Weitere Informationen zur Verwendung von Grafana finden Sie in der offiziellen Grafana-Dokumentation.