Grafana+Zabbix: Visualisering av produksjonslinjedrift

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.

Инструментарий

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.

En "nettverksnode" (vert) opprettes på Zabbix-serveren, som vil eie "dataelementer" (elementer) med beregninger fra våre sensorer. Det er tilrådelig å tenke gjennom navnene på noder og dataelementer på forhånd og gjøre dem så strukturerte som mulig, siden vi vil få tilgang til dem fra grafana gjennom regulære uttrykk. Denne tilnærmingen er praktisk fordi du kan hente data fra en gruppe elementer med én 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 http://zabbix.local/zabbix/api_jsonrpc.php, 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.

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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.

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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"

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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.

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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.

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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.

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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.

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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:

  1. fargen på enhetene endres i henhold til deres status
  2. det er en alarm for fravær av produkt i beholdere
  3. motorfrekvensinnstillingen vises
  4. første tankfyllings-/tømmehastighet
  5. antall sykluser av linjedrift (batch) beregnes

Grafana+Zabbix: Visualisering av produksjonslinjedrift
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

Legg til en kommentar