Inhaltsverzeichnis

Grafana Anbindung

Hintergrund

FabAccess (BFFH) schreibt alle Stati-Änderungen in eine Log-Datei, welche sehr unübersichtlich und unzugänglich ist. Um Verbrauchsmaterialien und Wartungsarbeiten besser abschätzen zu können und um Beschädigungen durch falsche Benutzung an Geräten besser nachvollziehen zu können, müssten diese Daten in ein System zur Strukturierung und Analyse geschrieben werden.

Es gibt wohl bereits eine Beschreibung für eine Grafana Anbindung. Da wir Grafana [1] auch bereits an anderen Stellen einsetzen, sollte dies hier auch zum Einsatz kommen.

Umsetzung

Anleitung zum Aufsetzen des Monitoring mittels Prometheus + Grafana: monitoring-prometheus-grafana.pdf

Grafana Dashboard auf Basis vom FabAccess Prometheus Exporter und MQTT Exporter: fabaccess-grafana-prometheus.json.zip

Von ChatGPT aufgehübschte Anleitung aus dem PDF Dokument:


Übersicht

Wir werden folgende Komponenten installieren und konfigurieren:


Voraussetzungen


1. Installation von Grafana

Schritt 1: Hinzufügen des Grafana-Repositorys

Füge den GPG-Schlüssel und das Repository von Grafana hinzu, um die neueste Version installieren zu können:

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

Schritt 2: Installation von Grafana

Aktualisiere die Paketlisten und installiere Grafana:

sudo apt-get update
sudo apt-get install -y grafana

Schritt 3: Starten und Aktivieren des Grafana-Dienstes

Aktiviere den automatischen Start von Grafana beim Systemstart und starte den Dienst:

sudo systemctl enable grafana-server
sudo systemctl start grafana-server

Grafana sollte jetzt auf Port 3000 laufen. Du kannst darauf zugreifen, indem du in deinem Browser http://deine_raspberry_pi_ip:3000 eingibst


2. Installation von Prometheus

Schritt 1: Herunterladen von Prometheus

Wechsle zum Verzeichnis /opt und lade die passende Prometheus-Version für ARM herunter:

cd /opt
wget https://github.com/prometheus/prometheus/releases/download/v2.22.0/prometheus-2.22.0.linux-armv7.tar.gz

Schritt 2: Entpacken und Einrichten

Entpacke das Archiv, benenne das Verzeichnis um und bereinige:

tar xfz prometheus-2.22.0.linux-armv7.tar.gz
mv prometheus-2.22.0.linux-armv7 prometheus
rm prometheus-2.22.0.linux-armv7.tar.gz

Schritt 3: Berechtigungen setzen

Setze die Eigentümerrechte:

sudo chown -R root:root prometheus/

Schritt 4: Erstellen eines Systemd-Dienstes für Prometheus

Erstelle die Dienstdatei /etc/systemd/system/prometheus.service:

sudo vim /etc/systemd/system/prometheus.service

Füge folgenden Inhalt ein:

[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data

[Install]
WantedBy=multi-user.target

Schritt 5: Dienst einrichten und starten

Führe folgende Befehle aus, um den Dienst zu laden, zu aktivieren und zu starten:

sudo systemctl daemon-reload
sudo systemctl enable prometheus.service
sudo systemctl start prometheus.service
sudo systemctl status prometheus.service

Prometheus sollte jetzt laufen und auf seinem Standardport (9090) hören.


3. Installation des FabAccess Prometheus Exporters

Schritt 1: Installieren von Python-Paketen

Installiere python3-pip, falls noch nicht vorhanden:

sudo apt install -y python3-pip

Schritt 2: Herunterladen des Exporters

Wechsle zum Prometheus-Verzeichnis und klone das Repository:

cd /opt/prometheus/
sudo git clone https://gitlab.com/fabinfra/fabaccess/prometheus-exporter.git fabaccess-exporter --recursive

Schritt 3: Installieren der Abhängigkeiten

Wechsle in das Exporter-Verzeichnis und installiere die Python-Abhängigkeiten:

cd /opt/prometheus/fabaccess-exporter/
sudo pip3 install -r requirements.txt

Schritt 4: Erstellen eines Benutzers für Prometheus

Erstelle einen Systembenutzer für Prometheus:

sudo adduser --system prometheus

Setze die Eigentümerrechte:

sudo chown -R prometheus:root /opt/prometheus/

Schritt 5: Erstellen des Systemd-Dienstes für den Exporter

Erstelle die Dienstdatei /etc/systemd/system/prometheus-fabaccess-exporter.service:

sudo vim /etc/systemd/system/prometheus-fabaccess-exporter.service

Füge folgenden Inhalt ein (passe die Umgebungsvariablen entsprechend an):

[Unit]
Description=Prometheus FabAccess Exporter Service
After=network.target

[Service]
Type=simple
User=prometheus
Group=root
Environment="EXPORTER_PORT=9000"
Environment="BFFH_HOST=fabaccess.stadtfabrikanten.org"
Environment="BFFH_PORT=5961"
Environment="BFFH_USER=fabaccess-prometheus-exporter"
Environment="BFFH_PASSWORD=DEIN_PASSWORT"
Environment="POLLING_INTERVAL_SECONDS=5"
WorkingDirectory=/opt/prometheus/fabaccess-exporter
ExecStart=/usr/bin/python3 main.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Schritt 6: Dienst einrichten und starten

Lade die Systemd-Daemon neu und starte den Dienst:

sudo systemctl daemon-reload
sudo systemctl enable prometheus-fabaccess-exporter.service
sudo systemctl start prometheus-fabaccess-exporter.service
sudo systemctl status prometheus-fabaccess-exporter.service

4. Installation des MQTT Exporters

Schritt 1: Herunterladen des MQTT Exporters

Wechsle zum Prometheus-Verzeichnis und klone das Repository:

cd /opt/prometheus/
sudo git clone https://github.com/kpetremann/mqtt-exporter.git
cd mqtt-exporter/

Schritt 2: Installieren der Abhängigkeiten

Installiere die benötigten Python-Pakete:

sudo pip3 install -r requirements/base.txt

Schritt 3: Testweiser Start des Exporters

Starte den Exporter manuell, um sicherzustellen, dass er funktioniert (ersetze die Umgebungsvariablen durch deine eigenen Werte):

MQTT_ADDRESS=127.0.0.1 MQTT_PORT=1883 MQTT_USERNAME=DEIN_MQTT_BENUTZER MQTT_PASSWORD=DEIN_MQTT_PASSWORT PROMETHEUS_PORT=9001 python3 exporter.py

Schritt 4: Erstellen des Systemd-Dienstes für den MQTT Exporter

Erstelle die Dienstdatei /etc/systemd/system/prometheus-mqtt-exporter.service:

sudo vim /etc/systemd/system/prometheus-mqtt-exporter.service

Füge folgenden Inhalt ein:

[Unit]
Description=Prometheus MQTT Exporter
After=network-online.target

[Service]
User=prometheus
Restart=on-failure
Environment="MQTT_ADDRESS=127.0.0.1"
Environment="MQTT_PORT=1883"
Environment="MQTT_USERNAME=DEIN_MQTT_BENUTZER"
Environment="MQTT_PASSWORD=DEIN_MQTT_PASSWORT"
Environment="PROMETHEUS_PORT=9001"
WorkingDirectory=/opt/prometheus/mqtt-exporter
ExecStart=/usr/bin/python3 exporter.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Hinweis: Wenn du TLS verwenden möchtest, musst du die entsprechenden Umgebungsvariablen hinzufügen und sicherstellen, dass der MQTT Exporter TLS unterstützt.

Schritt 5: Dienst einrichten und starten

Aktiviere und starte den Dienst:

sudo systemctl daemon-reload
sudo systemctl enable prometheus-mqtt-exporter.service
sudo systemctl start prometheus-mqtt-exporter.service
sudo systemctl status prometheus-mqtt-exporter.service

Überprüfe die Logs, um sicherzustellen, dass der Exporter korrekt läuft:

journalctl -f -u prometheus-mqtt-exporter.service

5. Integration in Prometheus

Damit Prometheus die Daten der Exporter sammelt, musst du die prometheus.yml-Konfigurationsdatei anpassen.

Schritt 1: Bearbeiten der Prometheus-Konfiguration

Öffne die Datei /opt/prometheus/prometheus.yml:

sudo vim /opt/prometheus/prometheus.yml

Füge die neuen Jobs hinzu:

scrape_configs:
  - job_name: 'fabaccess_exporter'
    static_configs:
      - targets: ['localhost:9000']

  - job_name: 'mqtt_exporter'
    static_configs:
      - targets: ['localhost:9001']

Schritt 2: Neustarten von Prometheus

Starte den Prometheus-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart prometheus.service

6. Einrichtung von Grafana

Schritt 1: Hinzufügen der Prometheus-Datenquelle

Schritt 2: Erstellen von Dashboards

Jetzt kannst du Dashboards erstellen und die von deinen Exportern bereitgestellten Metriken visualisieren.


Zusätzliche Hinweise


Fazit

Du hast nun eine Schritt-für-Schritt-Anleitung, um Prometheus und Grafana auf deinem Raspberry Pi zu installieren und zu konfigurieren, einschließlich der Einrichtung von FabAccess und MQTT Exportern. Damit kannst du Daten sammeln und in Grafana visualisieren, um Einblicke in dein System zu erhalten.


[1] https://wiki.sternenlabor.de/doku.php?id=dienste:start&s[]=grafana