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 ).
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
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.
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 ).
Anleitung wird noch erweitert.
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… ).
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!
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
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!