Grafana Installation

Ein kurzer Beitrag über die Einrichtung und Konfiguration von Grafana. Optional wird auch die Einrichtung des Reverse Proxy mithilfe von nginx beschrieben.

Grafana Installation

Einleitung

Grafana ist die führende OpenSource Anwendung, wenn es darum geht verschiedene Datenquellen wie InfluxDB, MySQL, PostgreSQL, Prometheus und Graphite grafisch darzustellen.

Aktuell nutze ich verschiedene Dashboards um beispielsweise Temperaturen, die aktuelle Internetauslastung der Fritzbox, sowie meine Server zu überwachen.

Installation

Bevor es losgeht, muss noch sichergestellt werden, dass alle Grundvoraussetzungen für Grafana vollständig erfüllt sind, dafür werden folgende Pakete benötigt, sowie der Key zum Repository von Grafana selbst:

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
Vorbereitung

Für die aktuellen Stable Releases werden anschließend diese Paketquellen hinzugefügt:

echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

!! möglicherweise unstable !!
Wenn Beta Versionenn gewünscht sind, fügt ihr diese Paketquellen hinzu:

echo "deb https://packages.grafana.com/oss/deb beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Nachdem die neuen Quellen hinzugefügt wurden, können wir unsere Systemquellen aktualisieren und im Anschluss Grafana via Apt Paketmanager beziehen, die beiden Commands sehen wie folgt aus:

sudo apt-get update
sudo apt-get install grafana

Konfiguration

Nachdem Grafana installiert ist, muss es noch aktiviert werden, zunächst wird jedoch der systemctl Daemon neu geladen, hierbei liest er auch die eben neu hinzugekommene Grafana Datei ein, welche wir anschließend aktivieren werden. Mit dem letzten Command wird anschließend überprüft ob der Grafana Server wie gewünscht läuft.

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server

Anschließend läuft Grafana auf <IP-eures-Servers>:3000 .

Die Standard Login Daten sind admin:admin und sollten nach dem ersten Login abgeändert werden.

Optional: Setup des Reverse Proxy

nginx

Mithilfe von nginx als Reverse Proxy soll noch etwas Sicherheit in das Grafana Konstrukt gebracht werden, hierzu wird nginx sowie SSL Zertifikate benötigt, letztere habe ich via ACME.sh via LetsEncrypt bezogen und installiert.

In diesem Schritt wird Grafana noch auf eine (lokale) Domain umgeleitet, beispielsweise:

grafana.domain.tld

Hierfür würde die minimale Config Datei für nginx als Reverse Proxy folgendermaßen aussehen:

sudo nano /etc/nginx/conf.d/grafana.conf
Konfigurationsdatei für Grafana
server {
    listen                  443 ssl http2;
    server_name             grafana.domain.tld;

    # SSL ECC
    ssl_certificate /etc/letsencrypt/grafana.domain.tld/ecc/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/grafana.domain.tld/ecc/key.pem;
    ssl_trusted_certificate /etc/letsencrypt/grafana.domain.tld/ecc/ca.pem;

    # logging
    access_log              /var/log/nginx/grafana.domain.tld.access.log;
    error_log               /var/log/nginx/grafana.domain.tld.error.log warn;

    # index.php
    index                   index.php;

    # reverse proxy
    location / {
        proxy_pass http://127.0.0.1:3000;
        
		# Proxy timeouts
		proxy_connect_timeout              60s;
		proxy_send_timeout                 60s;
		proxy_read_timeout                 60s;
    }
}

# HTTP redirect
server {
    listen      80;
    server_name .grafana.domain.tld;

    location / {
        return 301 https://grafana.domain.tld$request_uri;
    }
}
Inhalt der Konfigurationsdatei

Nach erfolgreichem Edit der neuen Konfiguratiosndatei wird noch auf etwaige enthaltene Fehler geprüft, danach nginx neu gestartet:

nginx -t
sudo systemctl restart nginx

Nacharbeit in der grafana.ini

Danach muss noch innerhalb der Grafana Konfigurationsdatei etwas Nacharbeit geleistet werden:

nano /etc/grafana/grafana.ini
Grafana Konfiguration bearbeiten
[server]
# Protocol (http, https, h2, socket)
;protocol = https

# The ip address to bind to, empty will bind to all interfaces
;http_addr = 192.168.178.13

[...]

# The public facing domain name used to access grafana from a browser
;domain = grafana.domain.tld

# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
;enforce_domain = true
Änderungen innerhalb der grafana.ini Datei

Danach sollte Grafana noch einmal neu gestartet werden, bevor die Änderungen wirksam werden:

sudo systemctl restart grafana-server
Neustart des Grafana Server

Geschafft, der Grafana Server ist ab jetzt via HTTPS erreichbar und liefert eure Dashboards künftig auch über einen verschlüsselten Kanal aus.