Homee Verlaufsdaten visualisieren

Hallo Zusammen,

das Thema war ja schon ein paar mal hier im Forum unterwegs mit unterschiedlichen Meinungen und Fortschritten. Und, naja, ich hatte ein bisschen Zeit und hab mich mal an das o.g. gesetzt.

Das ganze System basiert auf Docker und drei Container, die die Daten auslesen, speichern und visualisieren.

tl;dr

Auf Github habe ich ein docker-compose.yml hinterlegt. Die Profis können damit alle Services sofort starten. Lediglich die lokalen Pfade für die Volumes müssen ergänzt werden.

Was ist Docker?
Gaaaanz vereinfacht gesagt: Eine Möglichkeit Dienste inklusive deren Installationsdateien und abhängigen Programmen in einer geschützen - also vom System (fast) abekoppelten - Umgebung (Container) laufen zu lassen.
Vorteil ist, dass man hierbei das zu Grunde liegende Host-System (z.B. ein NAS) nicht mit zusätzlichen Installationen belastet, sondern einfach nur den Docker Container startet und dieser all das, was zum laufen des Dienstes benötigt wird, schon enthält. Des Weiteren laufen die Container auf fast allem, was es gibt - auch Windows und MAC.

Nachteil: Wenn man den Container stoppt ist alles wech (kann auch ein Vorteil sein :wink: ).

Aus dem Grund werden für diese Container ein paar zusätzliche Schritte notwendig sein, sodass die Daten, die schon eingelesen sind, auch da bleiben wo sie sind.

Resourcen

Github
Docker Container

Verwendete Technologien

  • Einlesen der csv Dateien: Logstash (LS)
  • Speichern der Daten: InfluxDB (INDB)
  • Visualisieren der Daten: Grafana (GRF)

Natürlich kann man jetzt darüber diskutieren, wieso, weshalb, warum ich diese ausgewählt habe. Der Grund ist simple: Ich hab mit zwei von drei geschäftlich zu tun und fand die cool. :wink:

Voraussetzungen
Für die Verwendung werden vier Ordner auf dem Hostsystem (z.B. NAS) benötigt.

  • Verlaufsdaten --> das ist der Ordner in dem homee die csv Dateien speichert
  • Logstash --> hier speichert LS die schon verarbeiteten Dateien in einer sincedb
  • InfluxDB --> hier wird die Datenbank gespeichert
  • Grafana --> hier speichert Grafana eure Dashboards und Einstellungen

Ihr könnt auch einen Pfad verwenden. Ich habe das geteilt, aber jeder wie er/sie mag.

Docker Installation
Um die Container zu verwenden, einfach die Docker CE Engine installieren. Diese ist für diverse Linux OS verfügbar.
Docker für Windows
Docker für Mac

Container starten
Dann könnt ihr die Container mit folgenden Kommandos starten:

!Achtung! Das Kursive muss auf die lokalen Pfade geändert werden.

LS:
docker run --name homee_ls --network homee -v /pfad/zu/csv/dateien:/var/opt/logs -v /pfad/zu/logstash/ordner:/var/log/logstash -p 9600:9600 drmxxxxx/homee:LS-latest

INDB:
docker run --name homee_indb --network homee --hostname influxdb -v /pfad/zu/indb/ordner:/var/lib/influxdb -p 8086:8086 drmxxxxx/homee:INDB-latest

GRF:
docker run --name homee_grf --network homee -v /pfad/zu/grf/ordner:/var/lib/grafana -p 3000:3000 drmxxxxx/homee:GRF-latest

Mit Docker compose könnt ihr die auf Github verfügbare docker-compose.yml herunterladen und alle Dienste einfach starten. Bitte beachten, dass ihr die lokalen Pfade noch hinzufügen müsst.

Grafana Dashboards

Default:
User: admin
Password: admin

Jetzt könnt ihr mit http://{ip-adresse hostsystem}:3000 auf Grafana zugreifen und Dashboards erstellen oder das u.g. importieren.

Die Datasource „InfluxDB“ sollte schon als Default eingebunden sein.

Ich habe hier noch ein Beispiel für ein Grafana Dashboard. Das kann über die Importfunktion importiert werden (eigentlich wollte ich es auf Grafana.com legen. Das funzt aber grad net :frowning: ).

Anleitung wird noch erweitert. :slight_smile:

Viel Spaß!

Wie gewünscht ein paar Screenshots:

Synology Docker Installationsanleitung

Es gibt NAS-Systeme von Synology, die ebenfalls mit Docker umgehen können und hierfür ein schönes vorgefertigtes Paket zur Installation anbieten. Das it z.B. die DS718 (2-bay und genug bums). Bitte beachtet hierbei, dass jedwede zusätzliche Anwendung (lies: Docker Container) auch CPU und RAM benötigen. Also schaut vorher mal nach, ob denn das so passt. Wenn Fragen hierzu sind, einfach hier posten.

Nun die Schritt-für-Schritt Anleitung für die homee Verlaufsdatenvisualisierung für Synology.

Ich setze jetzt mal voraus, dass jeder weiß, wie er sich an seiner Synology anmeldet und die Oberfläche kennt.

Ordnerstruktur anlegen
Den Dateimanager öffnen und drei Ordner anlegen:
Logstash
InfluxDB
Grafana

Wo diese Ordner sind spielt eigentlich keine Rolle. Der Docker Dienst sollte allerdings Lese- und Schreibrechte haben (hat er eigentlich, weil er als root gestartet wird, aber ich wills nochmal erwähnen).

Beispiel (in homee-ftp liegen die Verlaufsdaten):

Docker Paket herunterladen
Hierzu im Paketzentrum nach Docker suchen und das Paket einfach installieren. Es sollte automatisch starten.


(hier ist Docker schon installiert)

Docker Manager starten
Dazu öffnet ihr im DSM den Docker Manager (das Ding im roten Kreis… :wink: ).

Docker Container Image herunterladen
Jetzt geht es darum die drei Images herunterzuladen, mit denen dann die Container gestartet werden.

Hierzu im Dockermanager auf Registry gehen und nach drmxxxxx suchen, auswählen und auf Download klicken. Ihr bekommt ein Pop-up mit der Auswahl der Tags. Alle (GRF, INDB und LS) werden benötigt. Also jeden mit Select bestätigen.

Wenns geklappt hat, sieht das so in Image aus:

Container starten
Jetzt wird’s wild! :smiley:

Um die Container zu starten, müssen ein paar Einstellungen vorgenommen werden, damit ihr z.B. auf die Grafana Webseite zugreifen könnt und die Daten dauerhaft gespeichert werden (also nicht wech sind, wenn der Container neu gestartet wird.).

Achtung Ihr solltet den InfluxDB Container als erstes starten, da wir einen Link von beiden anderen zum InfluxDB Container erstellen müssen.

InfluxDB

Image INDB-latest auswählen und oben links auf Launch. Dann kommt ein Pop-up.

Als nächstes geht ihr in Advanced Settings (wir sind ja schließlich Profis) und stellt folgendes ein:
Volume
Add folder (hier wählt ihr dann den zuvor erstellten Ordner aus) --> /var/lib/influxdb
Port
Local Port --> 8086

Auf Apply und der Container startet.

Logstash
Image LS-latest auswählen und oben links auf Launch.

Auch hier in die Advanced Settings:
Volume wichtig nicht verwechseln
Add folder (hier wählt ihr dann den zuvor erstellten Ordner aus) --> /var/log/logstash
Add folder (hier wählt ihr den Ordner mit den Verlaufsdaten aus) --> /var/opt/logs
Port
Local Port --> 5044
Local Port --> 9600
Link
Den InfluxDB Container auswählen und den Alias influxdb (alles klein) vergeben.

Auf Apply und der Container startet. Logstash braucht einen Moment zum starten, aber er sollte dann auch schon anfangen die CSV Dateien einzulesen. Das erkennt ihr an der CPU-Auslastung :wink:

Grafana
Image GRF-latest auswählen und oben links auf Launch.

Auch hier in die Advanced Settings:
Volume
Add folder (hier wählt ihr dann den zuvor erstellten Ordner aus) --> /var/lib/grafana
Port
Local Port --> 3000
Link
Den InfluxDB Container auswählen und den Alias influxdb (alles klein) vergeben.

Auf Apply und der Container startet.

Wenn alles super duper ist, dann sollte es im Overview im Docker so aussehen:


(Ihr seht die Logstash CPU …)

Und in Container so:

Hier könnt ihr auch die Container starten und stoppen und euch über Details mehr anzeigen lassen bzw. auch auf die Konsole des Containers.

Viel Spass beim Dockern! :slight_smile:

25 „Gefällt mir“

Sehr schön - Screenshot hier zum anfixen wäre noch nett

2 „Gefällt mir“

done… :slight_smile:

Eine Anleitung für Synology mit Bildle mach ich morgen…

5 „Gefällt mir“

Eine Anleitung für die Diskstation wäre der Hammer. Hab es mit der Anleitung aus dem ersten Beitrag nicht hinbekommen. Der Grafana Container startet einfach nicht!

Danke @DrMxxxxx für deine Mühe!

1 „Gefällt mir“

Moin,

die Anleitung kann ich heute abend machen - hoffe ich.

Was sagt denn der gute Grafana container denn? Die anderen laufen?

Moin,

erst einmal vielen Dank! Sehr coole Visualisierung!

Hier nur mal (m)eine Vermutung bzgl. des Problems anhand des grafana Dockerfiles:
Die beiden Zeilen, in denen der User und die Gruppe „grafana“ erstellt werden, sind auskommentiert. Später wird jedoch auf eben jenen User gewechselt.
a) ist das Absicht?
b) könnte das das Problem sein?

Viele Grüße, Andy

Hi,

good find. Aber daran liegt es nicht, denn ich konnte den Container (drmxxxxx/GRF-latest) ohne Probleme lokal auf meinem Windows Docker Desktop starten.

Ich hab die Parameter jetzt trotzdem mal aktiviert. Docker wird jetzt ein neues Image erstellen (dank der Integration mit GitHub). Danach teste ich dann nochmal. :slight_smile:

Edit: Jetzt baut er das Image nicht, weil Error 127… Deswegen hatte ich es auskommentiert. :smiley:

Sollte eigentlich gaaaaanz einfach werden das ganze … ahahahaha :confused:

Moin,

super Projekt und sieht auch superklasse aus.

Ich finde es nur schade, dass man für eine einfache Anzeige (für mich als Anwender ist es nur eine Visualisierung, deswegen einfach) so viele zusätzliche Technologien und Geräte benötigt, in die man sich zusätzlich einarbeiten muss. Schade das es nicht eine Lösung gibt, die man einfach am PC starten kann…

Viele Grüße
JayJay

Du kannst doch auch auf dem PC/Mac mit VBOX eine virtuelle Maschine im Hintergrund laufen lassen und dort das Ganze drin installieren.
Bei mir läuft z.B. iobroker/node-red auf meinem MacMini im Hintergrund (nicht mal in einer VM).
Dafür muss der Rechner nur ständig an sein.

Hi,

deswegen versuche ich das alles so einfach wie Möglich in Docker zu packen. Denn die Container kannst auch lokal auf ner Windows Maschine starten. Habe ich gerade gemacht. :slight_smile:

Die Doku wird noch erweitert - gestern war aber „Grand Tour“ stärker als homee … :wink:

VG
M

1 „Gefällt mir“

Ja, für jemanden der sich damit auseinandergesetzt, gibt es da ohne Zweifel viele Möglichkeiten. Aktuell fehlen mir dafür aber die Ressourcen, meine „Ich beschäftige mich den ganzen Tag mit Smarthome“-Zeit ist extrem zurück gegangen, ich schaffe es nicht mal mir einen neuen Raspi aufzusetzen um hih zu simulieren :frowning:

Aber ich finde das Projekt hier klasse :+1: und mal sehen wie @DrMxxxxx das weiter entwickelt.

Viele Grüße
JayJay

Da bin ich ja auch total gespannt … :crazy_face:

3 „Gefällt mir“

Update ist da… Schau mal rein…

Hi,

ich hab die letzten Tage es probiert die Services in einen Container zu packen, sodass man nicht drei starten und verwalten muss, und bin kläglich gescheitert. Zumindest im Moment.

Vielleicht trifft mich ja noch eine Eingebung…

VG
M

P.s.: Evlt. hilft die die Synology Anleitung etwas weiter.

2 „Gefällt mir“

Also entweder bin ich zu blöde oder es funzt was nicht!

Der Grafana Container wird immer wieder sofort beendet.

Im Log steht, dass er keine Schreibrechte auf den Grafana Ordner hat. Wie kann ich ihm diese geben?

Hi,

auf den Ordner auf den du als Volume eingebunden hast? Kannst du einen Screenshot machen?

Grüße
M

sudo chmod -R 776 /Pfad/zum/Ordner

Gibt allen Benutzern Lese- und Schreibrechte

Nach dem Befehl geht es leider immer noch nicht.

Hier der Log:

Hi,

auf welchen Ordner hast du /var/lib/grafana verbunden auf deinem NAS? Sind dort schon Dateien vorhanden? Wenn ja, diese mal löschen und den Container nochmal starten.

In dem o.g. Ordner wird die Grafana DB gespeichert. Und es sieht so aus, als ob er diese DB nicht erstellen kann.

Kannst du noch Screenshots von deinen Einstellungen (Volume, Port und Link) posten?

Bei Grafana - noch ganz kurz - ist es wichtig bei den Einstellungen einen Link zur InfluxDB zu erstellen. Siehe Erklärung weiter oben.

VG
M

Der Grafana Ordner auf der DS ist leer.

Hier meine Einstellungen: