Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen

I denne artikel ønsker jeg at dele mine erfaringer med brugen af open source-systemerne Zabbix og Grafana til at visualisere arbejdet på produktionslinjer. Oplysningerne kan være nyttige for dem, der søger en hurtig måde at præsentere eller analysere indsamlede data i projekter inden for industriel automatisering eller IoT. Artiklen er ikke en detaljeret vejledning, men snarere en konceptualisering af et overvågningssystem baseret på open source-software til en produktionsvirksomhed.

Værktøjer

Zabbix – det har vi brugt i lang tid til overvågning af IT-infrastrukturen i fabrikken. Systemet viste sig at være så praktisk og alsidigt, at vi begyndte at indsamle data fra produktionslinjer, sensorer og controllere. Dette gjorde det muligt for os at samle alle metrikdata ét sted, lave enkle grafer over ressourceforbrug og udstyrsydelse, men vi manglede virkelig analytiske funktioner og smukke grafer.

Grafana – det er et meget kraftfuldt værktøj til analyse og visualisering af data. Et stort antal plugins giver mulighed for at hente data fra forskellige kilder (zabbix, clickhouse, influxDB), behandle dem i realtid (beregne gennemsnit, sum, difference osv.) og lave forskellige typer grafer (fra enkle linjer, speedometre, tabeller til komplekse diagrammer).

Draw.io – en service, der muliggør at tegne alt fra en simpel blokdiagram til en plan for lokaler i en online editor. Der er mange færdige skabeloner og tegnede objekter. Data kan eksporteres til alle de vigtigste grafiske formater eller xml.

Samler det hele

Der er skrevet mange artikler om, hvordan man installerer og konfigurerer Grafana og Zabbix, jeg vil fortælle om de vigtigste konfigurationspunkter.

På Zabbix serveren oprettes der en "netværksnode" (host), som vil have "dataelementer" (item) med metrikker fra vores sensorer. Navnene på noderne og dataelementerne bør overvejes på forhånd og gøres så strukturerede som muligt, da vi vil tilgå dem fra Grafana via regulære udtryk. Denne tilgang er praktisk, da man med én forespørgsel kan få data fra en gruppe af elementer.

For at konfigurere Grafana kræves det, at man installerer ekstra plugins:

  • Zabbix by Alexander Zobnin (alexanderzobnin-zabbix-app) – integration med Zabbix
  • natel-discrete-panel – plugin til diskret visualisering på en horisontal graf
  • pierosavi-imageit-panel – plugin til at vise data over sit eget billede
  • agenty-flowcharting-panel – en plugin til dynamisk visualisering af diagrammer fra draw.io

Selve integrationen med Zabbix indstilles i Grafana under menuen ConfigurationData sourcesZabbix. Her skal du angive adressen til Zabbix API-serveren, for mig er det http://zabbix.local/zabbix/api_jsonrpc.php, samt brugernavn og password for adgang. Hvis alt er gjort korrekt, vil der ved gemning af indstillingerne komme en meddelelse med versionsnummeret af API'en: zabbix API version: 5.0.1

Opretter Dashboard

Her begynder den ægte magi i Grafana og dens plugins.

Plugin natel-discrete-panel
Vi har data om status for motorer på linjerne (drift = 1, ikke drift = 0). Ved hjælp af den diskrete graf kan vi tegne en skala, hvor man kan se: motorstatus, hvor længe den har kørt i minutter/timer eller %, og hvor ofte den er blevet startet.

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
Visualisering af motorstatusser

Efter min mening er dette et af de bedste diagrammer til visualisering af udstyrs ydeevne. Man kan straks se, hvor meget tid det står stille, og i hvilke tilstande det oftere arbejder. Dataene kan være mange, og der er mulighed for aggregering over intervaller, samt transformation efter værdier (hvis værdien er "1", så vis som "ON")

Plugin pierosavi-imageit-panel

Imageit er praktisk at bruge, når du allerede har en tegnet skema eller plan for lokalet, hvor du gerne vil placere data fra sensorer. I visualiseringsindstillingerne skal du angive URL-adressen til billedet og tilføje de ønskede elementer sensor. Elementet vises på billedet og kan placeres det ønskede sted med musen.

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
Diagram over ovnen med temperatur- og trykmålinger

Plugin agenty-flowcharting-panel

Jeg vil gerne fortælle mere om oprettelsen af visualiseringen FlowCharting, da det er et utroligt funktionelt værktøj. Det gør det muligt at lave en dynamisk mnemonic skematisk, hvor elementerne reagerer på målingsværdier (ændre farve, position, navn mv.).

Modtagelse af data

Oprettelsen af et hvilket som helst visualiseringselement i Grafana begynder med at hente data fra kilden, i vores tilfælde Zabbix. Ved hjælp af forespørgsler skal vi hente alle de målinger, vi ønsker at anvende i diagrammet. Måltagene er dataelementernes navne i Zabbix, og vi kan angive enten en enkelt måling eller mange med filtrering gennem regulære udtryk. I mit eksempel indeholder feltet Item udtrykket: "\/(^linie 1)|(tilgængelighed)|(zucchini)\/" — dette betyder: vælge alle målinger, hvis navn strengt starter med "linie 1" eller indeholder ordet "tilgængelighed" eller indeholder ordet "zucchini".

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
Eksempel på opsætning af forespørgsel for data om motorer i første linje og tilgængelighed af råmateriale

Data transformation

Kildedataene er muligvis ikke altid i den form, vi ønsker at vise dem. For eksempel har vi minutdata om vægten af produktet i beholderen (kg), og vi skal vise fyldningshastigheden i t/time. Jeg gør dette på følgende måde: jeg tager vægtdataene og omdanner dem med Grafana-funktionen delta, som beregner forskellen mellem målingernes værdier, så den aktuelle vægt bliver til kg/min. Derefter multiplicerer jeg med 0,06 for at konvertere resultatet til ton/time. Da vægtmålingen bruges i flere forespørgsler, angiver jeg et nyt alias (setAlias) for den og vil bruge det i visualiseringsreglen.

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
Eksempel på brug af delta-parameteren og multiplikatoren samt omdøbning af målingen i forespørgslen

Her er endnu et eksempel på datatransformering: jeg skulle tælle antallet af blandinger (start af cyklus = motorstart). Målingen beregnes ud fra motorens status "linie 1 — affaldspumpe fra tank 1 (status)". Transformation: dataene fra den oprindelige måling ændres med delta-funktionen (forskellen mellem værdierne), så målingen får værdien «+1» for motorstart, «-1» for stop, og «0» når motoren ikke ændrer sin status. Derefter fjerner jeg alle værdier under 1 og summerer dem. Resultatet er antallet af motorstarts.

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
Eksempel på datatransformering fra aktuel status til antallet af motorstarts

Nu til selve visualiseringen

I indstillingerne for visning er der en knap "Edit Draw", som åbner editoren, hvor man kan tegne diagrammet. Hvert objekt i diagrammet har sine egne parametre. For eksempel, hvis man angiver skriftindstillingerne i editoren, vil de blive anvendt på datavisualiseringen i Grafana.

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
Sådan ser editoren ud i Draw.io

Efter at have gemt diagrammet vil det vises i Grafana, og du kan begynde at oprette regler for ændring af elementer.

I parametrene () angiver vi:

  • Options – angiver navnet på reglen (Rule name), navnet eller pseudonymet for de metrikker, hvis data vil blive brugt (Apply to metrics). Typen af dataaggregation (Aggregation) påvirker det endelige resultat af metrikken, således at Last betyder, at den seneste værdi vælges, og avg betyder gennemsnittet over den periode, der er valgt i øverste højre hjørne.
  • Thresholds – parameteren for tærskelværdier, beskriver logikken for anvendelse af farver, dvs. den valgte farve anvendes på elementerne i diagrammet afhængigt af metrikdataene. I mit eksempel, når værdi af metrikkerne er '0' – status 'Ok' farven vil være grøn, når værdien er '>1' status Critical og farven vil være rød.
  • Color/Tooltip Mappings og Label/Text Mappings – valg af diagramelementet og dets adfærdsscenario. I det første scenario vil objektet blive farvet, i det andet – vil der være tekst med data fra metrikken. For at vælge et objekt i diagrammet skal du trykke på kædesymbolet og klikke med musen på diagrammet.

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
I dette eksempel farver jeg pumpen og dens pil rød, hvis den kører, og grøn, hvis den ikke gør.

Ved hjælp af flowcharting-pluginet lykkedes det mig at tegne diagrammet for hele linjen, hvor:

  1. farverne på aggregaterne ændres i henhold til deres status.
  2. der er alarm for manglende produkt i tankene.
  3. der vises indstillingen for motorernes frekvenser.
  4. fyllings-/afløbsfarten for den første tank.
  5. antal cyklusser for driften af linjen (blandinger).

Grafana+Zabbix: Visualisering af arbejdsprocessen i produktionslinjen
Visualisering af produktionslinjens arbejde.

Resultat

Det sværeste for mig var at få data fra controllerne. Takket være Zabbix's alsidighed i dataindsamling og Grafanas fleksibilitet gennem plugins, tog det kun et par dage at oprette et omfattende overvågningsskærmbillede for produktionslinjen. Visualiseringen gav mulighed for at se grafer og statusstatistik, plus nemt adgang via web til alle interesserede – alt dette gjorde det muligt hurtigt at identificere flaskehalse og ineffektiv brug af aggregater.

Konklusion

Jeg synes, at kombinationen af Zabbix og Grafana er rigtig god, og jeg anbefaler at se nærmere på den, hvis du skal behandle data fra kontroller eller sensorer hurtigt, uden programmering eller implementering af komplekse kommercielle produkter. Det vil bestemt ikke erstatte professionelle SCADA-systemer, men det er tilstrækkeligt som et værktøj til centraliseret overvågning af hele produktionen.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster