Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej

W tym artykule chcę podzielić się doświadczeniem w wykorzystaniu systemów open source Zabbix i Grafana do wizualizacji pracy linii produkcyjnych. Informacje mogą być przydatne dla tych, którzy szukają szybkiego sposobu na wizualne wyświetlanie lub analitykę zebranych danych w projektach automatyzacji przemysłowej lub IoT. Artykuł nie jest szczegółowym przewodnikiem, to raczej koncept systemu monitorowania, opartego na otwartym oprogramowaniu dla przedsiębiorstw produkcyjnych.

Narzędzia

Zabbix – używamy go od dawna do monitorowania infrastruktury IT zakładu. System okazał się na tyle wygodny i wszechstronny, że zaczęliśmy wprowadzać do niego dane z linii produkcyjnych, czujników i kontrolerów. Dzięki temu zgromadziliśmy wszystkie dane metryczne w jednym miejscu, stworzyliśmy proste wykresy zużycia zasobów i wydajności sprzętu, ale bardzo brakowało nam analityki i ładnych wykresów.

Grafana – to potężne narzędzie do analityki i wizualizacji danych. Duża liczba wtyczek pozwala pobierać dane z różnych źródeł (zabbix, clickhouse, influxDB), przetwarzać je w locie (obliczać średnią, sumę, różnicę itp.) i rysować wszelkiego rodzaju wykresy (od prostych linii, wskaźników, tabel po skomplikowane schemy).

Draw.io – usługa umożliwiająca w edytorze online narysowanie od prostej schematu blokowego po plan pomieszczeń. Istnieje wiele gotowych szablonów i rysowanych obiektów. Dane można eksportować do wszystkich głównych formatów graficznych lub xml.

Zbieramy wszystko razem.

Wiele artykułów opisuje, jak zainstalować i skonfigurować Grafana i Zabbix, ja opowiem o głównych aspektach konfiguracji.

W Zabbix serwerze tworzy się „węzeł sieci” (host), któremu będą przynależeć „elementy danych” (item) z metrykami z naszych czujników. Nazwy węzłów i elementów danych warto przemyśleć z góry i maksymalnie je ustrukturyzować, ponieważ będziemy się do nich odwoływać z Grafany przez wyrażenia regularne. Takie podejście jest wygodne, ponieważ jednym zapytaniem można uzyskać dane z grupy elementów.

Aby skonfigurować Grafanę, należy zainstalować dodatkowe wtyczki:

  • Zabbix autorstwa Aleksandra Zobnina (alexanderzobnin-zabbix-app) – integracja z zabbixem.
  • natel-discrete-panel – wtyczka do wizualizacji dyskretnej na poziomym wykresie.
  • pierosavi-imageit-panel – wtyczka do wyświetlania danych na własnym obrazie.
  • agenty-flowcharting-panel – wtyczka do dynamicznej wizualizacji schematu z draw.io

Integracja z Zabbixem jest konfigurowana w Grafanie w menu ConfigurationData sourcesZabbix. Należy tam podać adres API serwera Zabbix, mój to http://zabbix.local/zabbix/api_jsonrpc.php, oraz login i hasło do dostępu. Jeśli wszystko zostało zrobione poprawnie, po zapisaniu ustawień pojawi się komunikat z numerem wersji API: zabbix API version: 5.0.1

Tworzymy Dashboard

Tutaj zaczyna się magia Grafany i jej wtyczek.

Wtyczka natel-discrete-panel
Mamy dane o statusach silników na liniach (działa = 1, nie działa = 0). Dzięki wykresowi discrete możemy narysować skalę, na której będzie widoczne: status silnika, ile czasu działał w minutach/godzinach lub %, oraz jak często był uruchamiany.

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
Wizualizacja statusów silników

Moim zdaniem to jeden z najlepszych wykresów do wizualizacji wydajności sprzętu. Od razu widać, ile czasu sprzęt stoi bezczynnie oraz w jakich trybach działa najczęściej. Dane mogą być liczne, istnieje możliwość ich agregacji w zakresach, transformacji wartości (jeśli wartość to „1”, wyświetlić jako „ON”)

Wtyczka pierosavi-imageit-panel

Imageit jest wygodne w użyciu, gdy masz już narysowany schemat lub plan pomieszczenia, na które chcesz nanieść dane z czujników. W ustawieniach wizualizacji należy podać adres URL do obrazka i dodać potrzebne elementy sensor. Element pojawia się na obrazku i można go umieścić w odpowiednim miejscu za pomocą myszy.

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
Schemat pieca z metrykami temperatury i ciśnienia

Wtyczka agenty-flowcharting-panel

Chciałbym bardziej szczegółowo opowiedzieć o tworzeniu wizualizacji FlowCharting, ponieważ jest to niesamowicie funkcjonalne narzędzie. Pozwala na stworzenie dynamicznej mapy myśli, której elementy reagują na wartości metryk (zmieniając kolor, położenie, nazwę itd.).

Pozyskiwanie danych

Tworzenie każdego elementu wizualizacji w Grafanie zaczyna się od zapytania danych z źródła, w naszym przypadku jest to Zabbix. Za pomocą zapytań należy uzyskać wszystkie metryki, które chcemy wykorzystać w schemacie. Atrybuty metryk to nazwy elementów danych w Zabbiksie, można wskazać pojedynczą metrykę lub wiele z filtrowaniem za pomocą wyrażenia regularnego. W moim przykładzie pole Item zawiera wyrażenie: "\/([^linia 1]|(obecność)|(cukinia))\/" – oznacza to: wybierz wszystkie metryki, których nazwa ściśle zaczyna się na "linia 1" lub zawiera słowo "obecność" lub słowo "cukinia".

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
Przykład konfiguracji zapytania danych o silnikach pierwszej linii i obecności surowców.

Przekształcenie danych

Dane źródłowe mogą nie zawsze być w formacie, w którym chcemy je wyświetlić. Na przykład mamy dane co minutę dotyczące wagi produktu w zbiorniku (kg), a my musimy wyświetlić szybkość napełnienia w t/h. Robię to w następujący sposób: biorę dane o wadze i przekształcam je funkcją delta w Grafanie, która oblicza różnicę między wartościami metryki, tak że obecna waga zmienia się na kg/min. Następnie mnożę przez 0,06, aby przekształcić wynik na t/h. Ponieważ metryka wagi jest używana w kilku zapytaniach, określam dla niej nowy alias (setAlias) i będę go używać w regule wizualizacji.

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
Przykład użycia parametru delta, mnożnika i zmiany nazwy metryki w zapytaniu.

Oto kolejny przykład przekształcania danych: musiałem policzyć liczbę rozruchów (początek cyklu = uruchomienie silnika). Metryka jest obliczana na podstawie statusu silnika "linia 1 — pompa odsysająca z zbiornika 1 (status)". Przekształcenie: dane bazowej metryki zmieniamy funkcją delta (różnica wartości), w ten sposób w metryce wartością będzie „+1” dla uruchomienia silnika, „-1” dla zatrzymania i „0”, gdy silnik nie zmienia swojego statusu. Następnie usuwam wszystkie wartości mniejsze niż 1 i sumuję je. W rezultacie otrzymuję liczbę uruchomień silnika.

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
Przykład przekształcania danych z bieżącego statusu na liczbę uruchomień.

Teraz o samej wizualizacji.

W ustawieniach wyświetlania znajduje się przycisk „Edit Draw”, który uruchamia edytor, w którym można narysować schemat. Każdy obiekt na schemacie ma swoje parametry. Na przykład, jeśli określisz ustawienia czcionki w edytorze – będą one stosowane do wizualizacji danych w Grafanie.

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
Tak wygląda edytor w Draw.io

Po zapisaniu schematu, pojawi się on w Grafanie i będzie można tworzyć zasady zmiany elementów.

W parametrach () podajemy:

  • Options — jest to nazwa reguły (Rule name), nazwa lub alias metryki, której dane będą używane (Apply to metrics). Typ agregacji danych (Aggregation) wpływa na końcowy wynik metryki; Last oznacza, że zostanie wybrana ostatnia wartość, a avg — średnia wartość za okres wybrany w prawym górnym rogu.
  • Thresholds — parametr progowych wartości, opisuje logikę zastosowania koloru, czyli wybrany kolor będzie stosowany do elementów na schemacie w zależności od danych metryki. W moim przykładzie przy wartości metryki „0” — status „Ok” kolor będzie zielony, przy wartości „>1” status Critical i kolor będzie czerwony.
  • Color/Tooltip Mappings i Label/Text Mappings — wybór elementu schematu i scenariusz jego zachowania. W pierwszym scenariuszu obiekt zostanie pokolorowany, w drugim — na nim będzie tekst z danymi z metryki. Aby wybrać obiekt na schemacie, należy nacisnąć znak łańcucha i kliknąć myszką na schemacie.

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
W tym przykładzie koloruję pompę i jej strzałkę na czerwono, jeśli działa, oraz na zielono, jeśli nie działa.

Dzięki wtyczce flowcharting udało mi się narysować schemat całej linii, na której:

  1. zmienia się kolor agregatów w zależności od ich statusu
  2. jest sygnalizacja braku produktu w zbiornikach
  3. wyświetlana jest konfiguracja częstotliwości silników
  4. prędkość napełniania/pustynnienia pierwszego zbiornika
  5. liczone jest liczba cykli pracy linii (mieszania)

Grafana+Zabbix: Wizualizacja pracy linii produkcyjnej
Wizualizacja pracy linii produkcyjnej

Wynik

Najtrudniejsze dla mnie było pozyskanie danych z kontrolerów. Dzięki uniwersalności Zabbix w zakresie pozyskiwania danych i elastyczności Grafany dzięki wtyczkom, wystarczyło tylko kilka dni, aby stworzyć kompleksowy ekran monitorowania linii produkcyjnej. Wizualizacja umożliwiła przeglądanie wykresów i statystyk stanów, a także łatwy dostęp przez internet dla wszystkich zainteresowanych — wszystko to pozwoliło szybko zidentyfikować wąskie gardła i nieefektywne wykorzystanie agregatów.

Podsumowanie

Bardzo podobała mi się kombinacja Zabbix+Grafana i polecam zwrócić na nią uwagę, jeśli potrzebujesz szybko przetworzyć dane z kontrolerów lub czujników bez programowania lub wdrażania skomplikowanych produktów komercyjnych. Z pewnością nie zastąpi to profesjonalnych systemów SCADA, ale będzie wystarczające jako narzędzie do centralnego monitorowania całej produkcji.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster