Unsere infinimesh® Plattform wurde entwickelt, um Datenschutz und Data Ownership unter anderem im GaiaX Kontext sicherzustellen. Um dies zu erreichen, haben wir unsere Plattform Cloud-nativ und vollständig API-gesteuert konzipiert. Auf diese Weise können unsere Kunden die Cloud in ihre Systeme integrieren, ohne die IT-Sicherheit zu beeinträchtigen oder gar zu einem öffentlichen Cloud-
Anbieter wechseln zu müssen. Wir verstehen uns als erweitertes Hilfsmittel und Ausgangsbasis für alle IoT-bezogenen Ideen unserer Kunden.

In diesem Blog-Beitrag zeigen wir, wie einfach sich infinimesh auf eine ultra-skalierbare Zeitreihe erstreckt, die mit dem Zeitreihen-Plugin aus unserem GitHub-Bereich für hohen Durchsatz und schnelles Prototyping ausgelegt ist. Beachten Sie, dass wir hier Redis im Standalone-Modus verwenden. Wir empfehlen dringend, einen Redis-Cluster einzurichten, wenn Sie das Plugin in der Produktion ausführen möchten!

Das Plugin wird als versandfertiger Docker-Container geliefert einschließlich Redislab TimeSeries und Grafana, um einfaches PoC und Hackathons zu ermöglichen. Es muss entweder eine funktionierende Docker-Umgebung oder Kubernetes (wie z. B. microk8s) installiert sein. Natürlich funktioniert auch jeder Cloud-Anbieter – das ist einer der Vorteile einer Cloud-nativen Entwicklung.

Los geht ́s:
1. Downloaden Sie das Plugin-Repository:

a. git clone https://github.com/InfiniteDevices/plugins.git

2. bearbeiten Sie die Datei docker- compose.yaml in dem Unterverzeichnis timeseries:

USERNAME = Ihr infinimesh-Benutzername
PASSWORD = Ihr infinimesh-Passwort
API_URL = FQDN-API-Endpunkt (als Beispiel https://api.infinimesh.cloud)

Erstellung des Docker-Containers:

docker-compose -f timeseries/docker-compose.yml --project-directory . up --build

Nach einigen Sekunden sind der Connector und das Zeitreihen-Backend verfügbar, und infinimesh überträgt Daten:

docker-compose up –build
Creating network „grafana_default“ with the default driver
Building server
Step 1/5 : FROM golang:1.15.6-alpine
—> 53efefffaa70
Step 2/5 : WORKDIR /go/src/app
—> Using cache
—> 337881896075
Step 3/5 : COPY . .
—> d93a37ff35cd
Step 4/5 : RUN go build -o main .
—> Running in 43773e4eccda
go: downloading github.com/RedisTimeSeries/redistimeseries-go v1.4.3
go: downloading github.com/gomodule/redigo v1.8.2
Removing intermediate container 43773e4eccda
—> 874e0e5b4ecd
Step 5/5 : CMD [„./main“]
—> Running in d0b5c50d5c01
Removing intermediate container d0b5c50d5c01
—> 9a2ae52d02e3
Successfully built 9a2ae52d02e3
Successfully tagged grafana_server:latest
Creating grafana_grafana_1 …done
Creating grafana_server_1 …done
Creating grafana_redis_1 …done
Attaching to grafana_server_1, grafana_grafana_1, grafana_redis_1
server_1 | 2020/12/06 11:22:27 refreshing account token…
server_1 | 2020/12/06 11:22:27 starting processor…
server_1 | 2020/12/06 11:22:27 refreshing devices…
redis_1 | 1:C 06 Dec 2020 11:22:27.837 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 06 Dec 2020 11:22:27.837 # Redis version=6.0.9, bits=64,
commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 06 Dec 2020 11:22:27.837 # Configuration loaded
redis_1 | 1:M 06 Dec 2020 11:22:27.839 * Running mode=standalone, port=6379.
redis_1 | 1:M 06 Dec 2020 11:22:27.839 # Server initialized
redis_1 | 1:M 06 Dec 2020 11:22:27.840 * <timeseries> RedisTimeSeries version 10407, git_sha=8a4e4da70f2c6207434a128ad6f3f4268e2f9367
redis_1 | 1:M 06 Dec 2020 11:22:27.840 * <timeseries> Redis version found by RedisTimeSeries : 6.0.9 – oss
redis_1 | 1:M 06 Dec 2020 11:22:27.840 * Module ‚timeseries‘ loaded from /usr/lib/redis/modules/redistimeseries.so redis_1 | 1:M 06 Dec 2020 11:22:27.841 * Ready to accept connections
grafana_1 | installing redis-datasource @ 1.2.1
grafana_1 | from: https://grafana.com/api/plugins/redis-datasource/versions/1.2.1/download
grafana_1 | into: /var/lib/grafana/plugins
grafana_1 |
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverterdevice} key=ac_realpower
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=dc_inc_volt_A
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=dc_input
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=grid_current_ampere
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=grid_phase_A
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=apparent_power
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=day_yield
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=grid_freq
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=grid_phase_B
server_1 | 2020/12/06 11:22:28 added time series item: object={0x13921 sma_inverter device} key=grid_phase_C

3. Nach einiger Zeit ist Grafana bereit. Verbinden Sie Ihren Browser mit http://localhost:3000 und befolgen Sie die Anweisungen zum Ändern der Standard-Administratoranmeldeinformationen (admin / admin). Bitte beachten Sie, dass das Setup verschwindet, wenn der Docker-Container gelöscht wird.

Der Speicher- und CPU-Footprint zeigt, dass dieses Plugin, das wir für diesen Blog-Beitrag verwendet haben, nicht zu viele Ressourcen verbraucht:

 

 

Dashboard

Wir haben ein Beispiel-Dashboard erstellt, das einfach importiert werden kann. Dabei werden alle erfassten Daten in einem Diagramm dargestellt. Sie können dies als Ausgangspunkt verwenden, um Ihre eigenen leistungsstarken Dashboards zu erstellen.

 

Fügen Sie die Redis-Datenquelle hinzu

Wenn Sie sich zum ersten Mal bei Grafana anmelden, müssen Sie die Datenquelle hinzufügen, indem Sie auf Folgendes klicken:

 

Geben Sie Redis in das Suchfeld ein:

 

Wählen Sie diese Datenquelle aus, indem Sie darauf klicken. Das Folgende zeigt das Setup. Geben Sie redis://redis:6379 in das Adressfeld ein und klicken Sie auf “Speichern und testen”.

Hinweis: Im neuesten Image ( build 77c68e4) ist Redis as default Datenbank bereits hinterlegt.

Jetzt kann Grafana mit dem Redis-Zeitreihen-Backend kommunizieren. Sie können das Dashboard jetzt über Erstellen -> Importieren -> JSON-Datei hochladen importieren und sample-dashboard.json aus dem Verzeichnis auswählen, in das Sie das Repository synchronisiert haben. Sie sollten jetzt das Dashboard sehen:

 

Es werden alle Daten angezeigt, die wir seit dem Start des Containers erfasst haben. Wenn Sie sich ein wenig mit Grafana vertraut gemacht haben, können Sie innerhalb von Minuten aussagekräftige Dashboards konfigurieren. Mit diesem Ansatz ermöglichen wir unseren Kunden auch, Ihre Ideen mit Rapid Prototyping und unserer infinimesh-Technologie umzusetzen.

Als Beispiel haben wir hier einige Datenpunkte ausgewählt (drücken Sie Strg und wählen Sie den Datenpunkt aus), um einen schnellen Einblick in die Daten zu erhalten (in diesem Beispiel eine SMA-Solaranlage):

 

Links:
Grafana: https://grafana.com/
Redislabs: https://oss.redislabs.com/redistimeseries/
Docker Desktop: https://www.docker.com/products/docker-desktop

Empfohlene Beiträge