În acest articol, vreau să împărtășesc experiența utilizării sistemelor open source Zabbix și Grafana pentru vizualizarea funcționării liniilor de producție. Informația poate fi utilă celor care caută o modalitate rapidă de a vizualiza sau analiza datele colectate în proiectele de automatizare industrială sau IoT. Articolul nu este un ghid detaliat, ci mai degrabă o conceptie a unui sistem de monitorizare bazat pe software liber pentru o întreprindere de producție.
Instrumentar
Zabbix – îl folosim de mult timp pentru monitorizarea infrastructurii IT a fabricii. Sistemul s-a dovedit atât de convenabil și versatil, încât am început să introducem date din liniile de producție, senzorii și controalele. Aceasta ne-a permis să strângem toate datele metrice într-un singur loc, să realizăm grafice simple ale consumului de resurse și performanței echipamentului, însă ne-a lipsit analiza și graficele frumoase.
Grafana – este un instrument puternic pentru analiză și vizualizare a datelor. Numărul mare de pluginuri permite extragerea datelor din diverse surse (zabbix, clickhouse, influxDB), prelucrarea acestora în timp real (calcularea mediei, sumei, diferenței etc.) și crearea de grafice variate (de la simple linii, indicatoare, tabele până la scheme complexe).
Draw.io – un serviciu care permite în editorul online să creezi de la un diagramă simplă până la planuri ale încăperilor. Există multe șabloane gata făcute și obiecte desenate. Datele pot fi exportate în toate formatele grafice principale sau xml.
Adunăm totul laolaltă
S-au scris multe articole despre cum să instalezi și să configurezi Grafana și Zabbix, voi vorbi despre principalele aspecte ale configurării.
Pe Zabbix server se creează un „nod de rețea” (host), care va avea „elemente de date” (item) cu metrici de la senzorii noștri. Numele nodurilor și ale elementelor de date ar trebui planificate din timp și să fie cât mai structurate, deoarece le vom accesa din Grafana prin expresii regulate. Această abordare este convenabilă deoarece permite obținerea datelor dintr-un grup de elemente cu o singură interogare.
Pentru configurarea Grafana, va fi necesară instalarea unor pluginuri suplimentare:
- Zabbix by Alexander Zobnin (alexanderzobnin-zabbix-app) – integrare cu Zabbix
- natel-discrete-panel – plugin pentru vizualizarea discretă pe un grafic orizontal
- pierosavi-imageit-panel – plugin pentru afișarea datelor peste o imagine personalizată
- agenty-flowcharting-panel – plugin pentru vizualizarea dinamică a diagramelor din draw.io
Integrările cu Zabbix sunt configurate în Grafana, în meniul ConfigurationData sourcesZabbix. Aici trebuie să specificați adresa API a serverului Zabbix, pentru mine aceasta este , și numele de utilizator cu parola pentru acces. Dacă totul este configurat corect, la salvarea setărilor va apărea un mesaj cu numărul versiunii API: zabbix API version: 5.0.1
Creăm un Dashboard
Aici începe magia Grafana și a pluginurilor sale.
Pluginul natel-discrete-panel
Avem date despre stările motoarelor de pe linii (funcționează = 1, nu funcționează = 0). Folosind graficul discrect, putem să desenăm o scară pe care va fi vizibil: starea motorului, cât timp a funcționat în minute/ore sau % și cât de des a fost pornit.

Vizualizarea stărilor motoarelor
În opinia mea, acesta este unul dintre cele mai bune grafice pentru vizualizarea performanței echipamentului. Este imediat evident cât timp este neutilizat, în ce moduri funcționează mai des. Datele pot fi multe, există posibilitatea de agregare pe intervale, transformare pe valori (dacă valoarea este „1”, afișează ca „ON”)
Pluginul pierosavi-imageit-panel
Imageit este convenabil de utilizat când aveți deja un plan sau o diagramă desenată pe care vreți să suprapuneți datele de la senzor. În setările de vizualizare, trebuie să specificați adresa url a imaginii și să adăugați elementele de senzor necesare. Elementul apare pe imagine și poate fi plasat în locul dorit cu mouse-ul.

Schema cuptorului cu metrici de temperatură și presiune
Pluginul agenty-flowcharting-panel
Aș dori să discut mai în detaliu despre crearea vizualizării FlowCharting, deoarece este un instrument incredibil de funcțional. Acesta permite crearea unei scheme dinamice, iar elementele acesteia vor reacționa la valorile metricilor (schimbarea culorii, poziției, denumirii etc.).
Obținerea de date
Crearea oricărui element de vizualizare în Grafana începe cu o interogare de date din sursă, în cazul nostru Zabbix. Prin interogări, trebuie să obținem toate metricile pe care dorim să le utilizăm în diagramă. Detaliile metricilor sunt numele elementelor de date din Zabbix, putând specifica fie o metrică separată, fie un grup de metrici cu filtrare prin expresii regulate. În exemplul meu, câmpul Item conține expresia: "\/(^linie 1)|(prezență)|(dovlecel)\/" — aceasta înseamnă: selectează toate metricile al căror nume începe strict cu "linie 1" sau conține cuvântul "prezență" sau cuvântul "dovlecel".

Exemplu de configurare a unei interogări de date despre motoarele din prima linie și disponibilitatea materiei prime.
Transformarea datelor
Datele inițiale nu sunt întotdeauna în forma în care trebuie să le afișăm. De exemplu, avem date despre greutatea produsului în rezervor (kg) la fiecare minut și trebuie să afișăm viteza de umplere în t/h. Fac asta în felul următor: iau datele despre greutate și le transform prin funcția delta din Grafana, care calculează diferența între valorile metricii, astfel greutatea curentă devine kg/min. Apoi înmulțesc cu 0.06 pentru a converti rezultatul în tone/oră. Deoarece metrica greutății este utilizată în mai multe interogări, îi ofer un nou alias (setAlias) și îl voi folosi în regula de vizualizare.

Exemplu de utilizare a parametrului delta și a multiplicatorului, precum și redenumirea metricii în interogare.
Iată un alt exemplu de transformare a datelor: trebuia să calculez numărul de amestecuri (începutul ciclului = pornirea motorului). Metrica este calculată pe baza stării motorului "linie 1 — pompă de evacuare din rezervor 1 (stare)". Transformarea: datele inițiale ale metricii sunt modificate prin funcția delta (diferența valorilor), astfel în metrică va fi valoarea „+1” pentru pornirea motorului, „-1” pentru oprire și „0” când motorul nu își schimbă statutul. Apoi elimin toate valorile mai mici de 1 și le sumarez. În rezultat, obțin numărul de porniri ale motorului.
![]()
Exemplu de transformare a datelor din starea curentă în numărul de porniri.
Acum despre vizualizare.
În setările de afișare există un buton „Edit Draw”, care deschide editorul în care se poate desena un diagramă. Fiecare obiect din diagramă are propriile sale parametrii. De exemplu, dacă se specifică setările fontului în editor, acestea se vor aplica vizualizării datelor în Grafana.

Așa arată editorul în Draw.io
După salvarea diagramei, aceasta va apărea în Grafana, iar regulile de modificare a elementelor pot fi create.
În parametrii () indicăm:
- Options — se stabilește numele regulii (Rule name), denumirea sau pseudonimul metricii, datele căreia vor fi folosite (Apply to metrics). Tipul de agregare a datelor (Aggregation) influențează rezultatul final al metricii; astfel, Last — înseamnă că va fi selectionată ultima valoare, avg — valoarea medie pe perioada selectată în colțul din dreapta sus.
- Thresholds — parametrul valorilor de prag, descrie logica aplicării culorii, adică culoarea selectată va fi aplicată elementelor din diagramă în funcție de datele metricii. În exemplul meu, când valoarea metricilor este „0” — starea „Ok” va fi verde, iar pentru valoarea „>1” starea Critical va fi roșie.
- Color/Tooltip Mappings” și „Label/Text Mappings” — alegerea elementului din diagramă și scenariul comportamentului său. În primul scenariu, obiectul va fi colorat, iar în al doilea — va fi text cu date din metrică. Pentru a selecta obiectul din diagramă, trebuie să apăsați semnul lanțului și să faceți clic pe diagramă.

În acest exemplu, colorez pompa și săgeata ei în roșu dacă funcționează și în verde dacă nu.
Cu ajutorul pluginului flowcharting, am reușit să desenez diagrama întregii linii, pe care:
- se schimbă culoarea agregatelor în funcție de statusul lor.
- există o alarmă pentru absența produsului în recipiente.
- este afisat setarea frecvențelor motoarelor.
- viteza de umplere/golire a primului rezervor.
- se numără numărul de cicluri de funcționare ale liniei (amestecuri).

Vizualizarea funcționării liniei de producție.
Rezultatul
Cea mai dificilă parte pentru mine a fost obținerea datelor de la controlere. Datorită versatilității Zabbix în obtinerea datelor și flexibilității Grafana prin intermediul pluginurilor, a fost nevoie de doar câteva zile pentru a crea un tablou complex de monitorizare a liniei de producție. Vizualizarea a permis vizionarea graficelor și statisticilor stării, plus acces ușor prin web pentru toți cei interesați – toate acestea au facilitat identificarea rapidă a punctelor nevralgice și utilizarea ineficientă a agregatelor.
Concluzie
Mi-a plăcut foarte mult combinația Zabbix+Grafana și recomand să o luați în considerare dacă aveți nevoie să prelucrați rapid datele de la controlere sau senzori fără programare sau implementarea unor produse comerciale complexe. Desigur, aceasta nu va înlocui sistemele SCADA profesionale, dar va fi suficientă ca instrument de monitorizare centralizată a întregii producții.
Sursa: habr.com
