I denne artikkelen vil jeg dele min erfaring med Ä bruke Äpen kildekode-systemer Zabbix og Grafana for Ä visualisere driften av produksjonslinjer. Informasjonen kan vÊre nyttig for de som leter etter en rask mÄte Ä visuelt vise eller analysere innsamlede data i industriell automatisering eller IoT-prosjekter. Artikkelen er ikke en detaljert veiledning, men snarere et konsept for et overvÄkingssystem basert pÄ Äpen kildekode-programvare for et produksjonsanlegg.
VerktĂžysettet
Zabbix â Vi har brukt den i lang tid til Ă„ overvĂ„ke IT-infrastrukturen til anlegget. Systemet viste seg Ă„ vĂŠre sĂ„ praktisk og universelt at vi begynte Ă„ legge inn data fra produksjonslinjer, sensorer og kontrollere i det. Dette tillot oss Ă„ samle alle metriske data pĂ„ ett sted, lage enkle grafer over ressursforbruk og utstyrsytelse, men vi manglet virkelig analyser og vakre grafer.
grafana er et kraftig verktÞy for analyse og datavisualisering. Et stort antall plugins lar deg ta data fra forskjellige kilder (zabbix, clickhouse, influxDB), behandle dem pÄ flukt (beregn gjennomsnittsverdi, sum, differanse, etc.) og tegne alle slags grafer (fra enkle linjer, hastighetsmÄlere, tabeller til komplekse diagrammer).
Draw.io â en tjeneste som lar deg tegne fra et enkelt blokkdiagram til en plantegning i en nettredaktĂžr. Det finnes mange ferdige maler og tegnede objekter. Data kan eksporteres til alle stĂžrre grafiske formater eller xml.
Setter alt sammen
Det er skrevet mange artikler om hvordan du installerer og konfigurerer Grafana og Zabbix, jeg vil fortelle deg om hovedkonfigurasjonspunktene.
PÄ Zabbix server En «nettverksnode» (vert) opprettes, som vil inneholde «dataelementene» (elementene) med mÄlinger fra sensorene vÄre. Det er lurt Ä tenke gjennom navnene pÄ noder og dataelementer pÄ forhÄnd og gjÞre dem sÄ strukturerte som mulig, ettersom vi vil fÄ tilgang til dem fra Grafana ved hjelp av regulÊre uttrykk. Denne tilnÊrmingen er praktisk fordi den lar deg hente data fra en gruppe elementer med én enkelt forespÞrsel.
For Ä konfigurere grafana mÄ du installere flere plugins:
- Zabbix av Alexander Zobnin (alexanderzobnin-zabbix-app) â integrasjon med zabbix
- natel-discrete-panel â plugin for diskret visualisering pĂ„ en horisontal graf
- pierosavi-imageit-panel â plugin for Ă„ vise data pĂ„ toppen av bildet ditt
- agenty-flowcharting-panel â plugin for dynamisk visualisering av et diagram fra draw.io
Integrasjonen med selve Zabbix er konfigurert i grafana, menyelementet ConfigurationData sourcesZabbix. Der mÄ du spesifisere adressen til api zabbix-serveren, dette er det jeg har , og logg pÄ med passord for tilgang. Hvis alt er gjort riktig, vil det vises en melding med api-versjonsnummeret nÄr du lagrer innstillingene: zabbix API-versjon: 5.0.1
Opprette et dashbord
Det er her magien til Grafana og dens plugins begynner.
Natel-diskret panel-plugin
Vi har data om status for motorene pÄ linjene (fungerer = 1, fungerer ikke =0). Ved Ä bruke den diskrete grafen kan vi tegne en skala som viser: statusen til motoren, hvor mange minutter/timer eller % den fungerte og hvor ofte den ble startet.

Visualisering av motorstatuser
Etter min mening er dette en av de beste grafene for Ä visualisere maskinvareytelse. Du kan umiddelbart se hvor lenge den har vÊrt inaktiv og i hvilke moduser den fungerer oftere. Det kan vÊre mye data, det er mulig Ä aggregere dem etter omrÄder, transformere dem etter verdier (hvis verdien er "1", sÄ vis den som "Pà ")
Plugin pierosavi-imageit-panel
Imageit er praktisk Ä bruke nÄr du allerede har et tegnet diagram eller plantegning som du vil bruke data fra sensorer pÄ. I visualiseringsinnstillingene mÄ du spesifisere URL-en til bildet og legge til sensorelementene du trenger. Elementet vises pÄ bildet og kan plasseres pÄ Þnsket sted med musen.

Ovnsdiagram med temperatur- og trykkmÄlinger
Agenty-flowcharting-panel-plugin
Jeg vil gjerne snakke mer detaljert om Ä lage FlowCharting-visualisering, siden det er et utrolig funksjonelt verktÞy. Den lar deg lage et dynamisk mnemonisk diagram, hvis elementer vil reagere pÄ verdiene til beregninger (endre farge, posisjon, navn, etc.).
Mottar data
Opprettelsen av ethvert visualiseringselement i Grafana begynner med en forespÞrsel om data fra kilden, i vÄrt tilfelle er det zabbix. Ved Ä bruke spÞrringer mÄ vi fÄ alle beregningene vi vil bruke i diagrammet. Metriske detaljer er navnene pÄ dataelementer i Zabbix; du kan spesifisere enten en individuell beregning eller et sett filtrert gjennom et regulÊrt uttrykk. I mitt eksempel inneholder Element-feltet uttrykket: "/(^linje 1)|(tilgjengelighet)|(zucchini)/" - dette betyr: velg alle beregninger hvis navn strengt tatt begynner med "linje 1" eller inneholder ordet "tilgjengelighet" " eller inneholder ordet "zucchini"

Et eksempel pÄ Ä sette opp en forespÞrsel om data om fÞrstelinjemotorer og tilgjengelighet av rÄvarer
Datakonvertering
Kildedataene er kanskje ikke alltid i den formen vi trenger Ä vise dem i. For eksempel har vi minutt-for-minutt-data pÄ vekten av et produkt i en beholder (kg), og vi mÄ vise fyllingshastigheten i t/time. Jeg gjÞr dette pÄ fÞlgende mÄte: Jeg tar vektdataene og transformerer dem med grafana delta-funksjonen, som beregner forskjellen mellom de metriske verdiene, slik at gjeldende vekt blir til kg/min. SÄ ganger jeg med 0.06 for Ä fÄ resultatet i tonn/time. Siden vektberegningen brukes i flere spÞrringer, spesifiserer jeg et nytt alias for den (setAlias) og vil bruke den i visualiseringsregelen.

Eksempel pÄ bruk av delta- og multiplikatorparameteren og endre navn pÄ metrikken i en spÞrring
Her er et annet eksempel pÄ datakonvertering: Jeg trengte Ä telle antall batcher (start av syklus = motorstart). Metrikken beregnes basert pÄ motorstatus "linje 1 - pumpepumpe fra tank 1 (status)". Transformasjon: vi endrer dataene til den opprinnelige metrikken med deltafunksjonen (forskjell pÄ verdier), slik at metrikken vil ha verdien "+1" for Ä starte motoren, "-1" for Ä stoppe og "0" nÄr motoren gjÞr det ikke endre statusen. Deretter fjerner jeg alle verdier mindre enn 1 og summerer dem. Resultatet er antall motorstarter.
![]()
Et eksempel pÄ konvertering av data fra gjeldende status til antall starter
NĂ„ om selve visualiseringen
I skjerminnstillingene er det en "Rediger tegning"-knapp; den starter en editor der du kan tegne et diagram. Hvert objekt pÄ diagrammet har sine egne parametere. Hvis du for eksempel angir fontinnstillinger i editoren, vil de bli brukt pÄ datavisualisering i Grafana.

Slik ser redaktĂžren ut i Draw.io
Etter Ă„ ha lagret diagrammet vil det vises i grafanaen og du kan lage regler for Ă„ endre elementer.
I parameters() spesifiserer vi:
- Alternativer â angi regelnavnet, navnet eller aliaset til beregningen hvis data skal brukes (Bruk pĂ„ beregninger). Typen dataaggregering (Aggregering) pĂ„virker det endelige resultatet av beregningen, sĂ„ Last betyr at den siste verdien vil bli valgt, avg er gjennomsnittsverdien for perioden valgt i Ăžvre hĂžyre hjĂžrne.
- Terskler - terskelverdiparameteren beskriver logikken til fargeapplikasjonen, det vil si at den valgte fargen vil bli brukt pÄ elementene i diagrammet avhengig av metriske data. I mitt eksempel, hvis metrikkverdien er "0", er statusen "Ok", vil fargen vÊre grÞnn, hvis verdien er ">1", vil statusen vÊre Kritisk og fargen vil vÊre rÞd.
- Farge/Tooltip Mappings" og "Etikett/Text Mappings" - velge et skjemaelement og et scenario for dets oppfÞrsel. I det fÞrste scenariet vil objektet bli malt over, i det andre vil det vÊre tekst pÄ det med data fra metrikken. For Ä velge et objekt pÄ diagrammet, mÄ du klikke pÄ kretsskiltet og klikke pÄ diagrammet.

I dette eksemplet maler jeg pumpen og pilen rĂžd hvis den fungerer og grĂžnn hvis den ikke gjĂžr det.
Ved Ă„ bruke flytdiagram-pluginen, var jeg i stand til Ă„ tegne et diagram over hele linjen, der:
- fargen pÄ enhetene endres i henhold til deres status
- det er en alarm for fravĂŠr av produkt i beholdere
- motorfrekvensinnstillingen vises
- fĂžrste tankfyllings-/tĂžmmehastighet
- antall sykluser av linjedrift (batch) beregnes

Visualisering av produksjonslinjedriften
Resultat
Det vanskeligste for meg var Ă„ fĂ„ data fra kontrollĂžrene. Takket vĂŠre allsidigheten til Zabbix nĂ„r det gjelder mottak av data og fleksibiliteten til Grafana pĂ„ grunn av plugins, tok det bare et par dager Ă„ lage en omfattende produksjonslinjeovervĂ„kingsskjerm. Visualisering gjorde det mulig Ă„ se grafer og statlig statistikk, pluss enkel tilgang via nettet til alle interesserte â alt dette gjorde det mulig Ă„ raskt identifisere flaskehalser og ineffektiv bruk av enheter.
Konklusjon
Jeg likte virkelig Zabbix+Grafana-kombinasjonen, og jeg anbefaler Ä ta hensyn til den hvis du raskt trenger Ä behandle data fra kontrollere eller sensorer uten Ä programmere eller implementere komplekse kommersielle produkter. Dette vil selvsagt ikke erstatte profesjonelle SCADA-systemer, men det vil vÊre tilstrekkelig som et verktÞy for sentralisert overvÄking av hele produksjonen.
Kilde: www.habr.com
