Grafana Armaturenbrett für BeerTender Biersystem

Erklärung. BeerTender - ein Gerät zum Kühlen und Abfüllen von Bier von Krups und Heineken. Nach Angaben der Hersteller bleibt die Qualität von frischem Bier 30 Tage nach dem Öffnen des Fasses erhalten. Natürlich ist es für Systemadministratoren und Entwickler bequem, die Temperatur und den Stand des Bieres in ihrem Fass mithilfe der üblichen Online-Dashboards zu überwachen. Im vorherigen Artikel wurde beschrieben, wie BeerTender mit Warp 10 verbunden wird. Jetzt richten wir das Grafana-Dashboard ein



OVHcloud, der größte europäische Hoster und Cloud-Anbieter, nutzt aktiv die Warp 10-Plattform, deren Überwachungsdaten in einem Warp 10-Cluster zusammengeführt werden. Das sind 400.000 Server, 27 Rechenzentren, insgesamt mehrere Millionen Metriken pro Sekunde!

Sie haben viele Dashboards, und jetzt ist OVHcloud der Betreuer des Open Source- Plugins Warp 10 Grafana , mit dessen Entwicklung wir vor einiger Zeit begonnen haben. Wir werden über ihn reden. Wenn Sie es selbst ausprobieren möchten, sind die Daten gemeinfrei - Sie können WarpScript unten kopieren.


Wir haben bereits darüber gesprochen, wie BeerTender mit Warp 10 verbunden werden kann.

Installation


Installieren Sie zunächst Grafana. Folgen Sie den Anweisungen auf der Website .

Wir stellen eine Verbindung mit der Standard- http://localhost:3000/ , wechseln zum Standardkennwort admin / admin und ändern das Administratorkennwort.

Für die neueste Version von Grafana muss das Plug-In manuell installiert werden. Die Methode mit grafana-cli wird nicht funktionieren. Sie müssen nur das Plugin-Repository in das Grafana-Plugin-Verzeichnis klonen und die Berechtigungen überall festlegen.

 sudo systemctl stop grafana-server.service sudo chown -R grafana:mygroup /var/lib/grafana/ sudo chmod g+rw /var/lib/grafana/plugins git clone git@github.com:ovh/ovh-warp10-datasource.git /var/lib/grafana/plugins/ovh-warp10-datasource sudo chown -R grafana:mygroup /var/lib/grafana/plugins sudo systemctl start grafana-server.service 

Konfiguration


Wechseln Sie in der Grafana-Konfiguration zum Abschnitt Datenquellen und fügen Sie eine Datenquelle vom Typ Warp 10 hinzu. Stellen Sie sicher, dass sie auf die erforderliche Instanz von Warp 10 verweist. Sie können dieselben Einstellungen wie unsere angeben:



Es ist Zeit, Daten vom BeerTender zu nehmen ...

Temperaturanzeige


Erstellen Sie ein neues Dashboard, fügen Sie ein Bedienfeld mit dem Visualisierungstyp "Diagramm" hinzu und rufen Sie den Abfragemodus auf:


Anfangstemperatur (ganzzahlige Werte vom Sensor)

  • Wählen Sie in der Datenquelle Warp 10 (oder den Standardwert).
  • Schalten Sie den WarpScript-Editor ein
  • Kopiere WarpScript unten
  • Wählen Sie in der oberen rechten Ecke "Letzte 30 Tage" aus.
  • Speichern Sie das Ergebnis

 "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE [ $rt 'beertender.rawtemperature' {} NOW 30 d ] FETCH 0 GET 

Dieses Skript zeigt die Anfangswerte des ADC-Sensors an. Bitte beachten Sie, dass der WarpScript-Editor in Grafana nicht mehr so ​​leistungsfähig ist wie zuvor. Es gibt hier keine automatische Vervollständigung mehr. Sie können ein Skript in WarpStudio oder VSCode schreiben, um Syntaxhervorhebungen und Online-Dokumentation zu erhalten. Kopieren Sie das Ergebnis und fügen Sie es in Grafana ein.

Automatischer Abstand


Wählen Sie in diesem Beispiel das 30-Tage-Intervall aus und legen Sie den Ansichtsmodus in Grafik für die letzten 30 Tage fest. Wenn wir den Anzeigemodus für den letzten Tag oder das letzte Jahr auswählen, fordert WarpScript immer alle 30 Tage Daten an. Das Plugin löst dieses Problem: In WarpScript stehen zwei Variablen zur Verfügung - $end und $interval .

 [ $rt 'beertender.rawtemperature' {} $end $interval ] FETCH 0 

Biertemperatur


Ich habe mehrere Messungen von Wasser, Eis und heißem Wasser durchgeführt und mit einem Referenzsensor verglichen ... Das Ergebnis war das Folgende:

  T (° C) Anfangswert
 18,3 680
 41,5 870
 37,6 841
 10 586
 11 596
 8 559
 1,467
 4,500
 6,5 535 

Fügen Sie diese Werte in die GTS- Zeitreihe ein und sortieren Sie das Ergebnis nach den Anfangswerten des Sensors:

 NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT 


Erwartete Interpolation

Die Quelldaten vom Sensor liegen in Form von ganzen Zahlen vor. Am einfachsten interpolieren Sie, indem Sie zuerst die Kurve erstellen und dann mit der ATTICK- Funktion die Werte in Grad daraus ablesen.

Die Interpolation in WarpScript ist einfach. Wir erstellen einen Eimer , um die gewünschte Periode einzustellen, und starten dann die Interpolation, wobei wir die fehlenden Werte ausfüllen.

 [ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE 




Großartig. Jetzt müssen Sie Ihren eigenen Mapper schreiben, um jeden Wert vom Sensor durch einen realen physikalischen Temperaturwert zu ersetzen und das Ergebnis in das vom Graphan verwendete Format zu bringen.

Warnung : Die Werte kommen alle 10 Sekunden an. In drei Monaten werden sich 270 Tausend Werte ansammeln. Zu viel für Grafana ... Behalte einfach den Maximalwert jeder Stunde. In WarpScript ist dies BUCKETIZE mit dem bucketizer.max- Bucketizer .

Sie können dieses WarpScript in Grafana kopieren:

 // raw value interpolation "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT 'linearInterpolation' STORE [ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE [ $rt 'beertender.rawtemperature' {} NOW $end $interval ] FETCH // subsampling, keep max of every hour [ SWAP bucketizer.max 0 1 h 0 ] BUCKETIZE UNBUCKETIZE // do not try to interpolate missing buckets. // interpolation [ SWAP <% 'l' STORE [ $l 0 GET //same tick NaN NaN NaN //no latitude/longitude/elevation $truthtableGTS $l 7 GET 0 GET ATTICK 4 GET //take the interpolated value ] %> MACROMAPPER 0 0 0 ] MAP 'temperature (°C)' RENAME 


5 ° C, normal für Bier


BeerTender Dashboard, erste Version

Fassniveau


Der Dehnungsmesser misst den Füllstand im Fass ... Aber das ist ein billiger Dreileiter-Sensor auf einem rostigen Metallständer. Es ist nicht möglich, genaue Informationen von solchen Geräten zu erhalten. Daher ist es nicht verwunderlich, dass die Ausgabe wirklich ein verrauschtes Ergebnis ist und Absolutwerten nicht vertraut werden kann. Für unseren BeerTender habe ich eine experimentelle Formel gefunden, mit der Grafana den aktuellen Füllstand in Prozent anzeigt.

Tipp: Das Warp 10-Plugin ruft nur Daten von GTS ab. Auch wenn Sie einen einzelnen Wert anzeigen möchten, müssen Sie ihn in den GTS-Daten an einer Stelle anzeigen.

Hier ist WarpScript, das den letzten Datenpunkt in einen Prozentwert umwandelt und außerdem eine Zeitreihe mit einem Punkt erstellt:

 "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE //read for beer level [ $rt 'beertender.rawvalue' {} NOW -1 ] FETCH 0 GET VALUES 0 GET 'rawSensorValue' STORE //raw correction: // empty: 30.8e6 // full (and cold): 30.5e6 30.8e6 $rawSensorValue - 0 MAX 2800 / 100 MIN 'beerlevelPercent' STORE $beerlevelPercent NEWGTS 'Barre Level (%25)' RENAME 1 NaN NaN NaN $beerlevelPercent ADDVALUE 

Verwenden Sie dieses WarpScript als Anforderung für ein Bedienfeld mit einem Anzeigevisualisierungstyp:


Schöner Indikator

Wenn Sie interessiert sind, können Sie sich die Quelldaten ansehen ... Jetzt haben wir ein Token für den Zugriff auf einzigartige Statistiken zum Bierkonsum!

Schlussfolgerungen



Source: https://habr.com/ru/post/de477870/


All Articles