In diesem Artikel möchte ich meine Erfahrungen mit den Open-Source-Systemen Zabbix und Grafana teilen, um die Betriebsabläufe in Produktionslinien zu visualisieren. Die Informationen könnten für diejenigen nützlich sein, die nach einer schnellen Möglichkeit suchen, gesammelte Daten visuell darzustellen oder Analysen in Projekten der Industrieautomatisierung oder des IoT durchzuführen. Der Artikel ist kein detailliertes Handbuch, sondern eher ein Konzept für ein Überwachungssystem, das auf Open-Source-Software für Produktionsunternehmen basiert.
Werkzeugset
Zabbix – es wird schon lange zur Überwachung der IT-Infrastruktur des Werks eingesetzt. Das System hat sich als so praktisch und vielseitig erwiesen, dass wir begonnen haben, Daten von Produktionslinien, Sensoren und Controllern darin zu speichern. Dies ermöglichte es uns, alle Metrikdaten an einem Ort zu sammeln, einfache Grafiken über den Ressourcenverbrauch und die Leistungsfähigkeit der Geräte zu erstellen, aber wir vermissten sehr die Analysen und ansprechenden Grafiken.
Grafana – ist ein leistungsstarkes Tool zur Analyse und Visualisierung von Daten. Eine Vielzahl von Plugins ermöglicht es, Daten aus verschiedenen Quellen (zabbix, clickhouse, influxDB) abzurufen, sie in Echtzeit zu verarbeiten (z. B. Durchschnittswerte, Summen, Differenzen zu berechnen) und unterschiedliche Diagramme zu erstellen (von einfachen Linien und Tachometern bis hin zu komplexen Diagrammen).
Draw.io – ist ein Service, der es ermöglicht, im Online-Editor von einem einfachen Flussdiagramm bis hin zu Grundrissen zu zeichnen. Es stehen viele vorgefertigte Vorlagen und gezeichnete Objekte zur Verfügung. Daten können in alle gängigen Grafikformate oder XML exportiert werden.
Zusammengefasst
Es gibt viele Artikel darüber, wie man Grafana und Zabbix installiert und konfiguriert. Ich werde die wichtigsten Punkte der Konfiguration erläutern.
In Zabbix Server wird ein "Netzwerkknoten" (host) erstellt, dem "Datenelemente" (item) mit Metriken von unseren Sensoren zugeordnet sind. Die Namen der Knoten und Datenelemente sollten im Voraus sinnvoll gewählt und möglichst strukturiert sein, da wir sie in Grafana über reguläre Ausdrücke abrufen werden. Dieser Ansatz ist praktisch, da man mit einer einzigen Anfrage Daten von einer Gruppe von Elementen erhalten kann.
Um Grafana einzurichten, müssen zusätzliche Plugins installiert werden:
- Zabbix von Alexander Zobnin (alexanderzobnin-zabbix-app) – Integration mit Zabbix
- natel-discrete-panel – Plugin für diskrete Visualisierung auf einem horizontalen Diagramm
- pierosavi-imageit-panel – Plugin zur Anzeige von Daten über Ihrem eigenen Bild
- agenty-flowcharting-panel – Plugin für die dynamische Visualisierung von Diagrammen aus draw.io
Die Integration mit Zabbix wird in Grafana unter dem Menüpunkt ConfigurationData sourcesZabbix konfiguriert. Dort muss die API-Adresse des Zabbix-Servers angegeben werden, bei mir ist das , sowie der Benutzername und das Passwort für den Zugriff. Wenn alles richtig gemacht wurde, erscheint beim Speichern der Einstellungen eine Nachricht mit der API-Version: Zabbix API-Version: 5.0.1
Das Dashboard erstellen
Hier beginnt die Magie von Grafana und ihren Plugins.
Das Plugin natel-discrete-panel
Wir haben Daten über den Status der Motoren an den Linien (läuft = 1, läuft nicht = 0). Mit dem diskreten Diagramm können wir eine Skala erstellen, die zeigt: den Status des Motors, wie lange er in Minuten/Stunden oder % gearbeitet hat und wie oft er gestartet wurde.

Visualisierung der Motorstatus
Meiner Meinung nach ist dies eines der besten Diagramme zur Visualisierung der Leistung von Geräten. Es wird sofort sichtbar, wie viel Zeit es im Leerlauf ist und in welchen Modi es am häufigsten betrieben wird. Es können viele Daten vorhanden sein, und es besteht die Möglichkeit, diese nach Bereichen zu aggregieren sowie Werte zu transformieren (wenn der Wert „1“ ist, dann als „EIN“ anzeigen).
Plugin pierosavi-imageit-panel
Imageit ist besonders nützlich, wenn Sie bereits ein gezeichnetes Schema oder einen Raumplan haben, auf den Sie die Daten von Sensoren anwenden möchten. In den Visualisierungseinstellungen müssen Sie die URL zur Bilddatei angeben und die gewünschten Sensor-Elemente hinzufügen. Das Element wird auf dem Bild angezeigt und kann mit der Maus an die gewünschte Stelle platziert werden.

Schema des Ofens mit Temperatur- und Druckmetriken
Plugin agenty-flowcharting-panel
Ich möchte genauer über die Erstellung von Visualisierungen im FlowCharting sprechen, da dies ein unglaublich funktionales Werkzeug ist. Es ermöglicht die Erstellung eines dynamischen Diagramms, dessen Elemente auf die Werte von Metriken reagieren (Farbe, Position, Name usw. ändern).
Daten abrufen
Die Erstellung eines Visualisierungselements in Grafana beginnt mit der Abfrage von Daten aus der Quelle, in diesem Fall Zabbix. Mit Abfragen müssen alle Metriken abgerufen werden, die wir im Diagramm verwenden möchten. Die Metrikdetails sind die Namen der Datenelemente in Zabbix, wobei sowohl eine einzelne Metrik als auch mehrere mit Filterung durch reguläre Ausdrücke angegeben werden können. In meinem Beispiel enthält das Feld Item den Ausdruck: "/(^linie 1)|(vorhanden)|(zucchini)/" — das bedeutet: Wählen Sie alle Metriken aus, deren Name genau mit "linie 1" beginnt oder das Wort "vorhanden" enthält oder das Wort "zucchini" enthält.

Beispiel für die Konfiguration einer Datenanfrage zu Motoren der ersten Linie und dem Vorhandensein von Rohstoffen.
Datenumwandlung
Rohdaten sind nicht immer in der Form vorhanden, die wir für die Anzeige benötigen. Zum Beispiel haben wir minutengenaue Daten über das Gewicht eines Produkts in einem Behälter (kg), und wir müssen die Füllgeschwindigkeit in t/h anzeigen. Ich mache das folgendermaßen: Ich nehme die Gewichtsdatensätze und wandle sie mit der Delta-Funktion von Grafana um, die die Differenz zwischen den Metriken berechnet, sodass das aktuelle Gewicht in kg/min umgewandelt wird. Dann multipliziere ich mit 0,06, um das Ergebnis in Tonnen pro Stunde zu erhalten. Da die Gewichtsmessung in mehreren Abfragen verwendet wird, gebe ich ihr ein neues Alias (setAlias) und werde es in der Visualisierungsregel nutzen.

Beispiel für die Verwendung des Delta-Parameters, den Multiplikator und die Umbenennung der Metrik in der Abfrage
Hier ist ein weiteres Beispiel für die Datenumwandlung: Ich musste die Anzahl der Motorstarts zählen (Zyklusbeginn = Motorstart). Die Metrik wird basierend auf dem Status des Motors "Linie 1 — Pumpenabsaugung aus Tank 1 (Status)" berechnet. Umwandlung: Die Eingangsdaten der Metrik ändern wir mit der Funktion delta (Differenz der Werte), sodass in der Metrik der Wert „+1“ für den Motorstart, „-1“ für die Abschaltung und „0“ für einen unveränderten Motorstatus angezeigt wird. Anschließend entferne ich alle Werte unter 1 und summiere sie. Im Ergebnis erhalte ich die Anzahl der Motorstarts.
![]()
Beispiel für die Umwandlung von Daten aus dem aktuellen Status in die Anzahl der Motorstarts.
Jetzt zur Visualisierung selbst.
In den Anzeigeeinstellungen gibt es die Schaltfläche „Edit Draw“, die den Editor öffnet, in dem man ein Diagramm zeichnen kann. Jedes Objekt im Diagramm hat seine eigenen Parameter. Wenn man beispielsweise die Schriftarteinstellungen im Editor angibt, werden diese auf die Datenvisualisierung in Grafana angewendet.

So sieht der Editor in Draw.io aus.
Nach dem Speichern des Diagramms erscheint es in Grafana, und man kann Regeln zur Änderung der Elemente erstellen.
In den Parametern () geben wir an:
- Optionen — definiert den Namen der Regel (Regelname), den Titel oder Alias der Metrik, die verwendet wird (Anwenden auf Metriken). Der Aggregationstyp (Aggregation) beeinflusst das Endergebnis der Metrik: Last bedeutet, dass der letzte Wert ausgewählt wird, avg steht für den Durchschnittswert über den Zeitraum, der in der oberen rechten Ecke ausgewählt wurde.
- Schwellenwerte — Parameter für Schwellenwerte, beschreibt die Logik der Farbzuweisung, das heißt, die gewählte Farbe wird auf die Elemente im Diagramm angewendet, basierend auf den Metrikdaten. In meinem Beispiel wird bei einem Metrikwert von „0“ der Status „Ok“ grün und bei einem Wert von „>1“ ist der Status kritisch und die Farbe wird rot.
- Farb-/Tooltip-Zuordnungen und Label-/Text-Zuordnungen — Auswahl des Diagrammelements und seines Verhaltens. Im ersten Szenario wird das Objekt eingefärbt, im zweiten Szenario erscheint Text mit den Metrikdaten auf ihm. Um das Objekt im Diagramm auszuwählen, klicken Sie auf das Kettensymbol und dann mit der Maus auf das Diagramm.

In diesem Beispiel färbe ich die Pumpe und ihren Pfeil rot, wenn sie funktioniert, und grün, wenn nicht.
Mit dem Plugin Flowcharting ist es mir gelungen, das gesamte Liniendiagramm zu zeichnen, auf dem:
- die Farben der Aggregate entsprechend ihrem Status geändert werden.
- Es gibt eine Alarmmeldung über fehlende Produkte in den Behältern.
- Die Einstellung der Frequenzen der Motoren wird angezeigt.
- Füll- / Entleerungsgeschwindigkeit des ersten Behälters.
- Die Anzahl der Produktionslinienzyklen (Mischungen) wird gezählt.

Visualisierung der Produktionslinienaktivität.
Ergebnis
Die größte Herausforderung für mich war es, Daten von den Controllern zu erhalten. Dank der Vielseitigkeit von Zabbix bei der Datenerfassung und der Flexibilität von Grafana durch Plugins benötigte ich nur ein paar Tage, um ein umfassendes Überwachungsdashboard für die Produktionslinie zu erstellen. Die Visualisierung ermöglichte die Ansicht von Diagrammen und Statusstatistiken, plus einen einfachen Zugang über das Web für alle Interessierten – all dies half schnell, Engpässe und ineffiziente Nutzung der Aggregate zu erkennen.
Fazit
Ich war sehr begeistert von der Kombination Zabbix + Grafana und empfehle, darauf zu achten, wenn Sie Daten von Controllern oder Sensoren schnell verarbeiten müssen, ohne Programmierung oder die Implementierung komplexer kommerzieller Produkte. Natürlich wird dies professionelle SCADA-Systeme nicht ersetzen, aber es reicht als Werkzeug für die zentralisierte Überwachung der gesamten Produktion.
Quelle: habr.com
