Dies ist eine alte Version des Dokuments!
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
Von ChatGPT aufgehübschte Anleitung aus dem PDF Dokument:
Übersicht
Wir werden folgende Komponenten installieren und konfigurieren:
Grafana: Eine Plattform zur Visualisierung von Metriken und Logs. Prometheus: Ein Monitoring-System und Zeitreihendatenbank. FabAccess Prometheus Exporter: Exportiert FabAccess-Daten für Prometheus. MQTT Exporter: Exportiert MQTT-Daten für Prometheus.
Voraussetzungen
Ein Raspberry Pi mit einer aktuellen Installation von Raspbian oder einem anderen Debian-basierten Betriebssystem.
Internetzugang für die Installation von Paketen und das Herunterladen von Software.
Grundlegende Kenntnisse im Umgang mit der Kommandozeile und dem Editor vim
(du kannst auch nano
oder einen anderen bevorzugten Editor verwenden).
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:
bash Code kopieren 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:
bash Code kopieren 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:
bash
Code kopieren
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:
bash
Code kopieren
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:
bash
Code kopieren
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:
bash
Code kopieren
sudo chown -R root:root prometheus/
==== Schritt 4: Erstellen eines Systemd-Dienstes für Prometheus ====
Erstelle die Dienstdatei /etc/systemd/system/prometheus.service:
bash
Code kopieren
sudo vim /etc/systemd/system/prometheus.service
Füge folgenden Inhalt ein:
javascript
Code kopieren
[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:
bash
Code kopieren
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:
bash
Code kopieren
sudo apt install -y python3-pip
==== Schritt 2: Herunterladen des Exporters ====
Wechsle zum Prometheus-Verzeichnis und klone das Repository:
bash
Code kopieren
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:
bash
Code kopieren
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:
bash
Code kopieren
sudo adduser –system prometheus
Setze die Eigentümerrechte:
bash
Code kopieren
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:
bash
Code kopieren
sudo vim /etc/systemd/system/prometheus-fabaccess-exporter.service
Füge folgenden Inhalt ein (passe die Umgebungsvariablen entsprechend an):
makefile
Code kopieren
[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:
bash
Code kopieren
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:
bash
Code kopieren
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:
bash
Code kopieren
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):
bash
Code kopieren
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:
bash
Code kopieren
sudo vim /etc/systemd/system/prometheus-mqtt-exporter.service
Füge folgenden Inhalt ein:
makefile
Code kopieren
[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:
bash
Code kopieren
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:
bash
Code kopieren
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:
bash
Code kopieren
sudo vim /opt/prometheus/prometheus.yml
Füge die neuen Jobs hinzu:
yaml
Code kopieren
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:
bash
Code kopieren
sudo systemctl restart prometheus.service
===== 6. Einrichtung von Grafana =====
==== Schritt 1: Hinzufügen der Prometheus-Datenquelle ====
Öffne Grafana in deinem Browser: http:<deine_raspberry_pi_ip>:3000
Melde dich mit dem Standardbenutzernamen und -passwort an (admin / admin). Ändere das Passwort beim ersten Login.
Gehe zu Configuration (das Zahnradsymbol) und wähle Data Sources.
Klicke auf Add data source und wähle Prometheus.
Gib unter URL http://localhost:9090 ein.
Klicke auf Save & Test, um die Verbindung zu überprüfen.
==== Schritt 2: Erstellen von Dashboards ====
Jetzt kannst du Dashboards erstellen und die von deinen Exportern bereitgestellten Metriken visualisieren.
===== Zusätzliche Hinweise =====
Passwörter und sensible Daten: Stelle sicher, dass du in den Dienstdateien und Umgebungsvariablen die richtigen Benutzer und Passwörter einträgst.
Sicherheit: Wenn du den Zugriff von außerhalb deines Netzwerks erlaubst, überlege dir, wie du die Dienste absicherst (z.B. durch Firewalls oder TLS).
Updates: Überprüfe regelmäßig, ob es Updates für Prometheus, Grafana und die Exporter gibt, um Sicherheitslücken zu schließen und neue Features zu nutzen.
===== 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.
Wenn du weitere Fragen hast oder Hilfe bei bestimmten Schritten benötigst, stehe ich gerne zur Verfügung!
[1] https://wiki.sternenlabor.de/doku.php?id=dienste:start&s[]=grafana