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.
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
Wir werden folgende Komponenten installieren und konfigurieren:
vim
(du kannst auch nano
oder einen anderen bevorzugten Editor verwenden).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
Aktualisiere die Paketlisten und installiere Grafana:
sudo apt-get update sudo apt-get install -y grafana
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
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
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
Setze die Eigentümerrechte:
sudo chown -R root:root 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
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.
Installiere python3-pip, falls noch nicht vorhanden:
sudo apt install -y python3-pip
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
Wechsle in das Exporter-Verzeichnis und installiere die Python-Abhängigkeiten:
cd /opt/prometheus/fabaccess-exporter/ sudo pip3 install -r requirements.txt
Erstelle einen Systembenutzer für Prometheus:
sudo adduser --system prometheus
Setze die Eigentümerrechte:
sudo chown -R prometheus:root /opt/prometheus/
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
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
Wechsle zum Prometheus-Verzeichnis und klone das Repository:
cd /opt/prometheus/ sudo git clone https://github.com/kpetremann/mqtt-exporter.git cd mqtt-exporter/
Installiere die benötigten Python-Pakete:
sudo pip3 install -r requirements/base.txt
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
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.
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
Damit Prometheus die Daten der Exporter sammelt, musst du die prometheus.yml-Konfigurationsdatei anpassen.
Ö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']
Starte den Prometheus-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl restart prometheus.service
Jetzt kannst du Dashboards erstellen und die von deinen Exportern bereitgestellten Metriken visualisieren.
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