projekte:fabaccess:software:todos:grafana_anbindung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekte:fabaccess:software:todos:grafana_anbindung [2024/11/08 09:51] – André Fiedler | projekte:fabaccess:software:todos:grafana_anbindung [2024/11/19 07:47] (aktuell) – André Fiedler | ||
|---|---|---|---|
| Zeile 7: | Zeile 7: | ||
| 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. | 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 ===== | ===== Umsetzung ===== | ||
| Anleitung zum Aufsetzen des Monitoring mittels Prometheus + Grafana: {{ : | Anleitung zum Aufsetzen des Monitoring mittels Prometheus + Grafana: {{ : | ||
| - | ====== Von ChatGPT aufgehübschte Anleitung aus dem PDF Dokument: ====== | + | Grafana Dashboard auf Basis vom FabAccess Prometheus Exporter und MQTT Exporter: {{ : |
| - | = Übersicht = | + | ==== Von ChatGPT aufgehübschte Anleitung aus dem PDF Dokument: ==== |
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Übersicht | ||
| Wir werden folgende Komponenten installieren und konfigurieren: | 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 = | + | |
| + | ---- | ||
| + | |||
| + | ===== 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 '' | ||
| + | |||
| + | ---- | ||
| - | Ein Raspberry Pi mit einer aktuellen Installation von Raspbian oder einem anderen Debian-basierten Betriebssystem. | + | ===== 1. Installation von Grafana |
| - | Internetzugang für die Installation von Paketen und das Herunterladen von Software. | + | |
| - | Grundlegende Kenntnisse im Umgang mit der Kommandozeile und dem Editor ''' | + | |
| - | = 1. Installation von Grafana = | + | |
| - | == Schritt 1: Hinzufügen des Grafana-Repositorys == | + | ==== 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: | Füge den GPG-Schlüssel und das Repository von Grafana hinzu, um die neueste Version installieren zu können: | ||
| - | <pre> wget -q -O - https:// | + | <code> |
| - | == Schritt 2: Installation von Grafana == | + | wget -q -O - https:// |
| + | echo "deb https:// | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 2: Installation von Grafana | ||
| Aktualisiere die Paketlisten und installiere Grafana: | Aktualisiere die Paketlisten und installiere Grafana: | ||
| - | <pre> sudo apt-get update sudo apt-get install -y grafana </pre> | + | <code> |
| - | == Schritt 3: Starten und Aktivieren des Grafana-Dienstes == | + | sudo apt-get update |
| + | sudo apt-get install -y grafana | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 3: Starten und Aktivieren des Grafana-Dienstes | ||
| Aktiviere den automatischen Start von Grafana beim Systemstart und starte den Dienst: | Aktiviere den automatischen Start von Grafana beim Systemstart und starte den Dienst: | ||
| - | <pre> sudo systemctl enable grafana-server sudo systemctl start grafana-server </pre> | + | <code> |
| - | '' | + | sudo systemctl enable grafana-server |
| + | sudo systemctl start grafana-server | ||
| + | </code> | ||
| - | = 2. Installation von Prometheus = | + | '' |
| - | == Schritt 1: Herunterladen von Prometheus == | ||
| - | Wechsle zum Verzeichnis '''/ | + | ---- |
| - | <pre> cd /opt wget https:// | + | |
| - | == Schritt 2: Entpacken und Einrichten == | + | ===== 2. Installation von Prometheus ===== |
| + | |||
| + | ==== Schritt 1: Herunterladen von Prometheus ==== | ||
| + | |||
| + | Wechsle zum Verzeichnis **/opt** und lade die passende Prometheus-Version für ARM herunter: | ||
| + | |||
| + | <code> | ||
| + | cd /opt | ||
| + | wget https:// | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 2: Entpacken und Einrichten | ||
| Entpacke das Archiv, benenne das Verzeichnis um und bereinige: | Entpacke das Archiv, benenne das Verzeichnis um und bereinige: | ||
| - | <pre> 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 </pre> | + | <code> |
| - | == Schritt 3: Berechtigungen setzen == | + | 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 | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 3: Berechtigungen setzen | ||
| Setze die Eigentümerrechte: | Setze die Eigentümerrechte: | ||
| - | <pre> sudo chown -R root:root prometheus/ </pre> | + | <code> |
| - | == Schritt 4: Erstellen eines Systemd-Dienstes für Prometheus == | + | sudo chown -R root:root prometheus/ |
| + | </code> | ||
| - | Erstelle die Dienstdatei | + | ==== Schritt 4: Erstellen eines Systemd-Dienstes für Prometheus ==== |
| + | |||
| + | Erstelle die Dienstdatei | ||
| + | |||
| + | < | ||
| + | sudo vim / | ||
| + | </ | ||
| - | <pre> sudo vim / | ||
| Füge folgenden Inhalt ein: | Füge folgenden Inhalt ein: | ||
| - | <pre> [Unit] Description=Prometheus Server Documentation=https:// | + | <code> |
| - | == Schritt 5: Dienst einrichten und starten == | + | [Unit] |
| + | Description=Prometheus Server | ||
| + | Documentation=https:// | ||
| + | After=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | User=prometheus | ||
| + | Restart=on-failure | ||
| + | ExecStart=/ | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 5: Dienst einrichten und starten | ||
| Führe folgende Befehle aus, um den Dienst zu laden, zu aktivieren und zu starten: | Führe folgende Befehle aus, um den Dienst zu laden, zu aktivieren und zu starten: | ||
| - | <pre> sudo systemctl daemon-reload sudo systemctl enable prometheus.service sudo systemctl start prometheus.service sudo systemctl status prometheus.service </pre> | + | <code> |
| - | '' | + | sudo systemctl daemon-reload |
| + | sudo systemctl enable prometheus.service | ||
| + | sudo systemctl start prometheus.service | ||
| + | sudo systemctl status prometheus.service | ||
| + | </code> | ||
| - | = 3. Installation des FabAccess | + | '' |
| - | == Schritt 1: Installieren von Python-Paketen == | + | ---- |
| - | Installiere ''' | + | ===== 3. Installation des FabAccess Prometheus Exporters ===== |
| - | <pre> sudo apt install -y python3-pip </pre> | + | ==== Schritt 1: Installieren von Python-Paketen ==== |
| - | == Schritt 2: Herunterladen des Exporters == | + | |
| + | Installiere **python3-pip**, | ||
| + | |||
| + | <code> | ||
| + | sudo apt install -y python3-pip | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 2: Herunterladen des Exporters | ||
| Wechsle zum Prometheus-Verzeichnis und klone das Repository: | Wechsle zum Prometheus-Verzeichnis und klone das Repository: | ||
| - | <pre> cd / | + | <code> |
| - | == Schritt 3: Installieren der Abhängigkeiten == | + | cd / |
| + | sudo git clone https:// | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 3: Installieren der Abhängigkeiten | ||
| Wechsle in das Exporter-Verzeichnis und installiere die Python-Abhängigkeiten: | Wechsle in das Exporter-Verzeichnis und installiere die Python-Abhängigkeiten: | ||
| - | <pre> cd / | + | <code> |
| - | == Schritt 4: Erstellen eines Benutzers für Prometheus == | + | cd / |
| + | sudo pip3 install -r requirements.txt | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 4: Erstellen eines Benutzers für Prometheus | ||
| Erstelle einen Systembenutzer für Prometheus: | Erstelle einen Systembenutzer für Prometheus: | ||
| - | <pre> sudo adduser --system prometheus </pre> | + | <code> |
| + | sudo adduser --system prometheus | ||
| + | </code> | ||
| Setze die Eigentümerrechte: | Setze die Eigentümerrechte: | ||
| - | <pre> sudo chown -R prometheus: | + | <code> |
| - | == Schritt 5: Erstellen des Systemd-Dienstes für den Exporter == | + | sudo chown -R prometheus: |
| + | </code> | ||
| - | Erstelle die Dienstdatei | + | ==== Schritt 5: Erstellen des Systemd-Dienstes für den Exporter ==== |
| + | |||
| + | Erstelle die Dienstdatei | ||
| + | |||
| + | < | ||
| + | sudo vim / | ||
| + | </ | ||
| - | <pre> sudo vim / | ||
| Füge folgenden Inhalt ein (passe die Umgebungsvariablen entsprechend an): | Füge folgenden Inhalt ein (passe die Umgebungsvariablen entsprechend an): | ||
| - | <pre> [Unit] Description=Prometheus FabAccess Exporter Service After=network.target [Service] Type=simple User=prometheus Group=root Environment=" | + | <code> |
| - | == Schritt 6: Dienst einrichten und starten == | + | [Unit] |
| + | Description=Prometheus FabAccess Exporter Service | ||
| + | After=network.target | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | User=prometheus | ||
| + | Group=root | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | WorkingDirectory=/ | ||
| + | ExecStart=/ | ||
| + | Restart=always | ||
| + | RestartSec=5 | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 6: Dienst einrichten und starten | ||
| Lade die Systemd-Daemon neu und starte den Dienst: | Lade die Systemd-Daemon neu und starte den Dienst: | ||
| - | <pre> 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 </pre> | + | <code> |
| - | = 4. Installation des MQTT Exporters = | + | 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 | ||
| + | </code> | ||
| - | == Schritt 1: Herunterladen des MQTT Exporters == | + | ---- |
| + | |||
| + | ===== 4. Installation des MQTT Exporters ===== | ||
| + | |||
| + | ==== Schritt 1: Herunterladen des MQTT Exporters | ||
| Wechsle zum Prometheus-Verzeichnis und klone das Repository: | Wechsle zum Prometheus-Verzeichnis und klone das Repository: | ||
| - | <pre> cd / | + | <code> |
| - | == Schritt 2: Installieren der Abhängigkeiten == | + | cd / |
| + | sudo git clone https:// | ||
| + | cd mqtt-exporter/ | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 2: Installieren der Abhängigkeiten | ||
| Installiere die benötigten Python-Pakete: | Installiere die benötigten Python-Pakete: | ||
| - | <pre> sudo pip3 install -r requirements/ | + | <code> |
| - | == Schritt 3: Testweiser Start des Exporters == | + | sudo pip3 install -r requirements/ |
| + | </code> | ||
| + | |||
| + | ==== Schritt 3: Testweiser Start des Exporters | ||
| Starte den Exporter manuell, um sicherzustellen, | Starte den Exporter manuell, um sicherzustellen, | ||
| - | <pre> 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 </pre> | + | <code> |
| - | == Schritt 4: Erstellen des Systemd-Dienstes für den MQTT Exporter == | + | 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 |
| + | </code> | ||
| + | |||
| + | ==== Schritt 4: Erstellen des Systemd-Dienstes für den MQTT Exporter ==== | ||
| + | |||
| + | Erstelle die Dienstdatei **/ | ||
| - | Erstelle die Dienstdatei ''' | + | < |
| + | sudo vim / | ||
| + | </ | ||
| - | <pre> sudo vim / | ||
| Füge folgenden Inhalt ein: | Füge folgenden Inhalt ein: | ||
| - | <pre> [Unit] Description=Prometheus MQTT Exporter After=network-online.target [Service] User=prometheus Restart=on-failure Environment=" | + | <code> |
| + | [Unit] | ||
| + | Description=Prometheus MQTT Exporter | ||
| + | After=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | User=prometheus | ||
| + | Restart=on-failure | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | Environment=" | ||
| + | WorkingDirectory=/ | ||
| + | ExecStart=/ | ||
| + | Restart=always | ||
| + | RestartSec=5 | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </code> | ||
| '' | '' | ||
| - | == Schritt 5: Dienst einrichten und starten == | + | ==== Schritt 5: Dienst einrichten und starten |
| Aktiviere und starte den Dienst: | Aktiviere und starte den Dienst: | ||
| - | <pre> 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 </pre> | + | <code> |
| + | 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 | ||
| + | </code> | ||
| Überprüfe die Logs, um sicherzustellen, | Überprüfe die Logs, um sicherzustellen, | ||
| - | <pre> journalctl -f -u prometheus-mqtt-exporter.service </pre> | + | <code> |
| - | = 5. Integration in Prometheus = | + | journalctl -f -u prometheus-mqtt-exporter.service |
| + | </code> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 5. Integration in Prometheus ===== | ||
| + | |||
| + | Damit Prometheus die Daten der Exporter sammelt, musst du die **prometheus.yml**-Konfigurationsdatei anpassen. | ||
| - | Damit Prometheus die Daten der Exporter sammelt, musst du die ''' | + | ==== Schritt 1: Bearbeiten |
| - | == Schritt 1: Bearbeiten der Prometheus-Konfiguration == | + | Öffne die Datei **/ |
| - | Öffne die Datei ''' | + | < |
| + | sudo vim / | ||
| + | </ | ||
| - | <pre> sudo vim / | ||
| Füge die neuen Jobs hinzu: | Füge die neuen Jobs hinzu: | ||
| - | <pre> scrape_configs: | + | <code> |
| - | == Schritt 2: Neustarten von Prometheus == | + | scrape_configs: |
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | </code> | ||
| + | |||
| + | ==== Schritt 2: Neustarten von Prometheus | ||
| Starte den Prometheus-Dienst neu, damit die Änderungen wirksam werden: | Starte den Prometheus-Dienst neu, damit die Änderungen wirksam werden: | ||
| - | <pre> sudo systemctl restart prometheus.service </pre> | + | <code> |
| - | = 6. Einrichtung von Grafana = | + | sudo systemctl restart prometheus.service |
| + | </code> | ||
| - | == Schritt 1: Hinzufügen der Prometheus-Datenquelle == | + | ---- |
| - | Öffne Grafana in deinem Browser: | + | ===== 6. Einrichtung von Grafana ===== |
| - | Melde dich mit dem Standardbenutzernamen und -passwort an (''' | + | |
| - | Gehe zu ''' | + | ==== Schritt 1: Hinzufügen der Prometheus-Datenquelle ==== |
| - | Klicke auf ''' | + | |
| - | Gib unter ''' | + | * Öffne Grafana in deinem Browser: |
| - | Klicke auf ''' | + | |
| - | == Schritt 2: Erstellen von Dashboards == | + | |
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | ==== Schritt 2: Erstellen von Dashboards | ||
| Jetzt kannst du Dashboards erstellen und die von deinen Exportern bereitgestellten Metriken visualisieren. | Jetzt kannst du Dashboards erstellen und die von deinen Exportern bereitgestellten Metriken visualisieren. | ||
| - | = Zusätzliche Hinweise = | + | ---- |
| - | ''' | + | ===== 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. |
| - | = Fazit = | + | * **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, | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Fazit ===== | ||
| Du hast nun eine Schritt-für-Schritt-Anleitung, | Du hast nun eine Schritt-für-Schritt-Anleitung, | ||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | |||
| [1] https:// | [1] https:// | ||
projekte/fabaccess/software/todos/grafana_anbindung.1731055910.txt.gz · Zuletzt geändert: von André Fiedler
