Grafana Einrichtung Postgres

Aus ScaleIT Industrie 4.0 Wiki
Version vom 14. März 2019, 07:54 Uhr von Admin (Diskussion | Beiträge) (Admin verschob die Seite Grafana Einrichtung nach Grafana Einrichtung Postgres: Änderung Seitenname)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Schwierigkeit: mittel
Vorkenntnisse: Basics in SQL sind von Vorteil Mit Grafana können Trends auf einem Dashboard im Browser angezeigt werden.
Nach der Installation der Grafana-ScaleIT-App kann Grafana aufgerufen werden. Das initiale Passwort ist im Rancher zu finden.

Hinzufügen von Datenquellen

Um Daten anzuzeigen muss eine neue Datenquelle spezifiziert werden. Dieses Beispiel zum Hinzufügen einer Datenbank bezieht sich auf die Modbuscollector-App. Die Einrichtung anderer Datenbanken funktioniert analog nach dem selben Schema.
Die ModbusCollector-App bringt eine Postgres-Timeseries-Datenbank mit. Daternquellen.png
Mit einem Klick auf "Datenquelle hinzufügen" kann der Typ der Datenquelle ausgewählt werden.
In diesem Fall ist es "PostgreSQL".
PostgreSQL.png
Dann müssen die Verbindungsdetails zur Datenbank angegeben werden.
PostgresEinrichten.png
Im diesem Fall mit der Modbuscollector-App sind das:
Host: [IP-Adresse oder Hostname der ScaleIT-Box]:[Postgres-Port]
Database: web
User: dbuser
Passwort: dbgeheim
SSL Mode: Disable


Mit "Save & Test" werden die Einstellungen gespeichert und eine Verbindung zur Datenbank getestet.

Anzeige von Daten

Grafana arbeitet zur Visualisierung mit Dashboards. Somit können für unterschiedliche Nutzergruppen unterschiedliche Dashboards eingerichtet werden. Im Management ist es möglicherweise wichtiger die Kennzahlen der fertig produzierten Produkte anzuzeigen, in der Produktion ist es wichtiger, die Temperatur und den Status einer bestimmten Maschine anzuzeigen.
Für jede Benutzergruppe kann dafür ein Dashboard erstellt werden.
Ein Dashboard Anlegen:
ManageDashboards.png
"New Dashboard"
Mit "Add Query" kann einem Panel auf dem Dashboard eine Datenbankabfrage zugeordnet werden.
NewPanel.png
Im Beispiel der ModbusCollector-App werden dann alle Werte aller Register in einem Graph angezeigt, was sehr unübersichtlich sein wird.

Graph-unübersichtlich.png

Um nur die Werte eines einzelnen Register anzuzeigen, muss der WHERE-Bedingung eine weitere Bedingung hinzugefügt werden. Das funktioniert mit dem "+"-Icon am Ende der bisherigen WHERE-Bedingung. Dort muss dann eine "Expression" hinzugefügt werden.
Mit Klick auf einen Value oder den Operator in der Expression kann der Wert geändert werden. Für ein einzelnes ModbusRegister sollte die Expression so aussehen:
device_register = '7-530'

QueryModbus.png
Dann wird nur noch der Wert des ausgewählten Registers angezeigt.

Benutzerverwaltung

In Grafana können verschiedenen Nutzergruppen verschiedene Dashboards zugeordnet werden. Nutzer können mit dem Administratoraccount scaleit leicht erstellt werden. Bei der Erstellung eines Benutzers ist es wichtig zu beachten, dass standardmäßig kein Mail-Client für Grafana registriert ist. Diese Einstellung kann über die Konsole geändet werden oder der Schalter "Send invite email" kann beim einladen eines Benutzers deaktiviert werden.
Eine andere Alternative ist es, in der Benutzerverwaltung des "Server-Admins" (Einstellungen -> Server Admin -> Users) einen neuen Benutzer anzulegen, der muss dann nicht verifiziert werden mit einer Einladung sondern kann seinen Account direkt verwenden.

Achtung: Zeitzone

Zu beachten ist, dass Grafana die Daten aus der Datenbank in UTC-Zeit erwartet. Die Daten aus den Datenbanken der ScaleIT-Plattform speichern allerdings teilweise die Daten der Messwerte in der Lokalen Zeit ab. Dies kann dazu führen dass die Daten mit einer falschen Uhrzeit angezeigt werden. Sind Echtzeitdaten wichtig, muss dafür ein Workaround gebaut werden. Dies kann dadurch umgangen werden, dass direkt das SQL-Statement modifiziert wird. Danach kann die Query nicht mehr grafisch bearbeitet werden. BearbeitenSQLquery.png Im SQL-Statement muss dann der erste Teil des SELECT-Statements

"time" AS "time"

ersetzt werden durch

"time" at time zone 'Europe/Berlin' AS "time",

Dann sollten die Zeiten stimmen.

zurück