V tomto článku chci sdílet zkušenosti s používáním open source systémů Zabbix a Grafana pro vizualizaci práce výrobních linek. Informace mohou být užitečné pro ty, kteří hledají rychlý způsob vizuálního zobrazení nebo analýzy shromážděných dat v projektech průmyslové automatizace nebo IoT. Článek není podrobným návodem, spíše představuje koncepci systému monitorování založeného na otevřeném softwaru pro výrobní podnik.
Nástroje
Zabbix – používáme ho dlouho pro monitorování IT infrastruktury továrny. Systém se ukázal být tak pohodlný a univerzální, že jsme začali do něj ukládat data z výrobních linek, senzorů a regulátorů. To nám umožnilo shromáždit všechna měřená data na jednom místě, vytvářet jednoduché grafy spotřeby zdrojů a výkonu zařízení, ale velmi nám chyběla analytika a krásné grafy.
Grafana – to je mocný nástroj pro analýzu a vizualizaci dat. Velké množství pluginů umožňuje získávat data z různých zdrojů (zabbix, clickhouse, influxDB), zpracovávat je za běhu (počítat průměr, součet, rozdíl atd.) a kreslit různé grafy (od jednoduchých čar, rychloměrů, tabulek po složité diagramy).
Draw.io – služba, která umožňuje v online editoru nakreslit od jednoduchých blokových schémat po plány místností. Existuje mnoho hotových šablon a nakreslených objektů. Data lze exportovat do všech hlavních grafických formátů nebo xml.
Shromáždíme všechno dohromady
Článků o tom, jak nainstalovat a nakonfigurovat Grafanu a Zabbix, bylo napsáno mnoho, já se zmíním o hlavních bodech konfigurace.
Na Zabbixu serveru se vytváří „uzel sítě“ (host), kterému budou patřit „prvky dat“ (item) se metrikami z našich senzorů. Je dobré nazvat uzly a prvky dat s rozmyslem a co nejvíce strukturovaně, protože na ně budeme odkazovat z Grafany pomocí regulárních výrazů. Takový přístup je pohodlný, protože jediným dotazem můžeme získat data ze skupiny prvků.
Pro nastavení Grafany bude potřeba nainstalovat další pluginy:
- Zabbix by Alexander Zobnin (alexanderzobnin-zabbix-app) – integrace s Zabbixem
- natel-discrete-panel – plugin pro diskrétní vizualizaci na horizontálním grafu
- pierosavi-imageit-panel – plugin pro zobrazení dat přes váš obrázek
- agenty-flowcharting-panel – plugin pro dynamickou vizualizaci diagramu z draw.io
Integrace se Zabbixem se nastavuje v Grafaně, v nabídce ConfigurationData sourcesZabbix. Zde musíte uvést adresu API Zabbix serveru, u mě je to , a přihlášení s heslem pro přístup. Pokud je vše správně provedeno, při uložení nastavení se zobrazí zpráva s číslem verze API: zabbix API version: 5.0.1
Vytvoření dashboardu
Zde začíná ta pravá magie Grafany a jejích pluginů.
Plugin natel-discrete-panel
Máme data o stavech motorů na linkách (pracuje = 1, nepracuje = 0). Pomocí grafu discrete můžeme vykreslit škálu, na které bude vidět: stav motoru, jak dlouho běžel v minutách/hodinách nebo % a jak často byl spuštěn.

Vizualizace stavů motorů
Podle mého názoru je to jeden z nejlepších grafů pro vizualizaci výkonu zařízení. Okamžitě vidíte, kolik času zařízení nepracuje, v jakých režimech běží častěji. Dat může být hodně, existuje možnost jejich agregace podle rozsahů, transformace podle hodnot (pokud je hodnota «1», tak ji zobrazit jako «ON»)
Plugin pierosavi-imageit-panel
Imageit se snadno používá, když již máte nakreslený diagram nebo plán prostoru, na který chcete umístit data ze senzorů. V nastavení vizualizace musíte uvést URL adresu obrázku a přidat požadované prvky sensor. Prvek se objeví na obrázku a můžete jej umístit na požadované místo myší.

Schéma pece s metrikami teploty a tlaku
Plugin agenty-flowcharting-panel
O vytváření vizualizace FlowCharting bych chtěl mluvit podrobněji, protože je to neuvěřitelně funkční nástroj. Umožňuje vytvořit dynamickou mnemo schému, jejíž prvky reagují na hodnoty metrik (mění barvu, polohu, název atd.).
Získání dat
Vytváření jakéhokoli vizuálního prvku v Grafaně začíná dotazem na data ze zdroje, v našem případě Zabbix. Pomocí dotazů je potřeba získat všechny metriky, které chceme na schématu využít. Identifikátory metrik jsou názvy datových prvků v Zabbixu, můžeme uvést jak jednotlivou metriku, tak i více s filtrováním pomocí regulárního výrazu. V mém příkladu pole Item obsahuje výraz: "\/^(linie 1)|(přítomnost)|(cuketa)\/" — to znamená: vybrat všechny metriky, jejichž název začíná na "linie 1" nebo obsahuje slovo "přítomnost" nebo obsahuje slovo "cuketa".

Příklad nastavení dotazu na data o motorech první linky a přítomnosti surovin.
Transformace dat.
Zdrojová data nemusí vždy být v podobě, v jaké je potřebujeme zobrazit. Například máme každou minutu data o hmotnosti produktu v nádobě (kg) a potřebujeme zobrazit rychlost plnění v t/h. Dělám to následujícím způsobem: vezmu data o hmotnosti a transformuji je funkcí delta v Grafaně, která počítá rozdíl mezi hodnotami metriky, takže aktuální hmotnost se změní na kg/min. Poté násobím 0,06 pro přepočet výsledku na tuny/hodinu. Protože je metrika hmotnosti použita v několika dotazech, uvádím pro ni nový alias (setAlias) a budu ho používat v pravidle vizualizace.

Příklad použití parametru delta, násobitele a přejmenování metriky v dotazu.
Toto je další příklad transformace dat: potřeboval jsem spočítat počet mixů (začátek cyklu = spuštění motoru). Metrika se počítá na základě stavu motoru "linie 1 — čerpadlo z nádrže 1 (stav)". Transformace: data ze zdrojové metriky měníme funkcí delta (rozdíl hodnot), takže v metrice bude hodnota „+1“ pro spuštění motoru, „-1“ pro zastavení a „0“, když motor nemění svůj stav. Poté odstraním všechny hodnoty menší než 1 a sečtu je. Výsledkem je počet spuštění motoru.
![]()
Příklad transformace dat z aktuálního stavu na počet spuštění.
Teď k samotné vizualizaci.
V nastavení zobrazení je tlačítko „Edit Draw“, které spustí editor, ve kterém můžete nakreslit schéma. Každý objekt ve schématu má své parametry. Například pokud v editoru nastavíte parametry písma, budou aplikovány na vizualizaci dat v Grafaně.

Takto vypadá editor v Draw.io
Po uložené schématu se objeví v Grafaně a bude možné vytvářet pravidla pro změnu prvků.
V parametrech () uvádíme:
- Options — zadává se jméno pravidla (Rule name), název nebo alias metriky, jejíž data budou použita (Apply to metrics). Typ agregace dat (Aggregation) ovlivňuje konečný výsledek metriky, přičemž Last znamená, že bude vybrána poslední hodnota, avg — průměrná hodnota za období, které je vybráno v pravém horním rohu.
- Thresholds — parametr prahových hodnot popisuje logiku použití barvy, tedy vybraná barva bude aplikována na prvky ve schématu v závislosti na datech metriky. V mém případě při hodnotě metrik „0“ — status „Ok“ bude barva zelená, při hodnotě „>1“ status Critical a barva bude červená.
- Color/Tooltip Mappings a Label/Text Mappings — výběr prvku schématu a scénáře jeho chování. V prvním scénáři bude objekt vybarven, ve druhém na něm bude text s daty z metriky. Pro výběr objektu ve schématu je třeba stisknout znak řetězu a kliknout myší na schéma.

Na tomto příkladu vybarvuji čerpadlo a jeho šipku červenou barvou, pokud pracuje, a zelenou, pokud nepracuje.
Pomocí pluginu flowcharting se mi podařilo nakreslit schéma celé linky, na které:
- se mění barva agregátů v souladu s jejich stavem
- je signalizace absence produktu v nádržích
- se zobrazuje nastavení frekvencí motorů
- je rychlost plnění/vyprázdnění první nádrže
- se počítá počet cyklů práce linky (zamíchání)

Vizualizace práce výrobní linky
Výsledek
Největší výzvou pro mě bylo získat data z řídicích systémů. Díky univerzálnosti Zabbixu v oblasti získávání dat a flexibilitě Grafany díky pluginům stačily jen pár dní na vytvoření komplexního monitorovacího displeje výrobní linky. Vizualizace umožnila sledovat grafy a statistiky stavů, navíc snadný přístup přes web pro všechny zainteresované – to vše umožnilo rychle odhalovat úzká místa a neefektivní využití agregátů.
Závěr
Velmi se mi líbí kombinace Zabbix+Grafana a doporučuji na ni zaměřit pozornost, pokud potřebujete rychle zpracovat data z řídicích systémů nebo senzorů bez programování nebo zavádění složitých komerčních produktů. Samozřejmě, že to nenahradí profesionální SCADA systémy, ale bude to dostatečné jako nástroj centralizovaného monitorování celé výroby.
Zdroj: habr.com
