Grafana+Zabbix: Візуалізація роботи виробничої лінії

У цій статті я хочу поділитися досвідом використання open source систем Zabbix та Grafana для візуалізації роботи виробничих ліній. Інформація може бути корисною для тих, хто шукає швидкий спосіб візуального відображення або аналітики зібраних даних у проектах промислової автоматизації або IoT. Стаття не є докладним посібником, це радше концепція системи моніторингу, заснована на відкритому програмному забезпеченні для виробничого підприємства.

інструментарій

Zabbix - Його ми використовуємо давно для моніторингу ІТ інфраструктури заводу. Система виявилася настільки зручною та універсальною, що ми почали заводити в неї дані з виробничих ліній, датчиків та контролерів. Це нам дозволило зібрати всі дані метрик в одному місці, зробити прості графіки витрати ресурсів та продуктивності обладнання, але дуже не вистачало аналітики та красивих графіків.

Grafana – це потужний інструмент для аналітики та візуалізації даних. Велика кількість плагінів дозволяють забирати дані з різних джерел (zabbix, clickhouse, influxDB), обробляти їх на льоту (вважати середнє значення, суму, різницю тощо) та малювати різноманітні графіки (від простих ліній, спідометрів, таблиць до складних схем) ).

Draw.io - Сервіс, що дозволяє в онлайн редакторі намалювати від простий блок схеми до плану приміщень. Є багато готових шаблонів та намальованих об'єктів. Дані можна експортувати до всіх основних графічних форматів або xml.

Збираємо всі разом

Статей як встановити та налаштувати Grafana та Zabbix написано багато, я розповім про основні моменти конфігурації.

На сервері Zabbix створюється «вузол мережі» (host), якому належать «елементи даних» (item) з метриками від наших датчиків. Імена вузлів та елементів даних бажано продумати заздалегідь і зробити максимально структурованими, оскільки до них ми звертатимемося з графани через регулярні вирази. Такий підхід зручний тим, що можна одним запитом отримувати дані групи елементів.

Для налаштування графани потрібно встановити додаткові плагіни:

  • Zabbix by Alexander Zobnin (alexanderzobnin-zabbix-app) – інтеграція з zabbix
  • natel-discrete-panel – плагін для дискретної візуалізації на горизонтальному графіку
  • pierosavi-imageit-panel – плагін для відображення даних поверх своєї картинки
  • agenty-flowcharting-panel – плагін для динамічної візуалізації схеми з draw.io

Сама інтеграція із заббіксом налаштовується у графані, пункт меню ConfigurationData sourcesZabbix. Там потрібно вказати адресу api zabbix сервера, у мене це http://zabbix.local/zabbix/api_jsonrpc.php, та логін з паролем для доступу. Якщо все зроблено правильно, при збереженні параметрів буде повідомлення з номером версії api: zabbix API version: 5.0.1

Створюємо Dashboard

Ось тут починається та сама магія графани та її плагінів.

Плагін natel-discrete-panel
У нас є дані про статус двигунів на лініях (працює = 1, не працює = 0). За допомогою графіка discrete ми можемо намалювати шкалу, на якій буде видно: статус двигуна, скільки він пропрацював хвилин/год або % і як часто запускався.

Grafana+Zabbix: Візуалізація роботи виробничої лінії
Візуалізація статусів двигунів

На мій погляд, це один із найкращих графіків для візуалізації продуктивності обладнання. Відразу видно, скільки часу воно простоює, в яких режимах працює частіше. Даних може бути багато, є можливість їхньої агрегації за діапазонами, перетворення за значеннями (якщо значення «1», то відображати як «ON»)

Плагін pierosavi-imageit-panel

Imageit зручно використовувати, коли у вас вже є намальована схема або план приміщення, на яку ви хочете нанести дані з датчиків. У налаштуваннях візуалізації потрібно вказати адресу url до картинки і додати потрібні вам елементи sensor. Елемент з'являється на зображенні і його можна розмістити в потрібному місці мишкою.

Grafana+Zabbix: Візуалізація роботи виробничої лінії
Схема печі з метриками температури та тиску

Плагін agenty-flowcharting-panel

Про створення візуалізації FlowCharting я хотів би розповісти детальніше, оскільки це неймовірно функціональний інструмент. Він дозволяє створити динамічну мнемосхему, елементи якої будуть реагувати на значення метрик (міняти колір, положення, назву ітд).

Отримання даних

Створення будь-якого елемента візуалізації у графані починається із запиту даних із джерела, у нашому випадку це zabbix. За допомогою запитів потрібно отримати всі метрики, якими хочемо скористатися на схемі. Реквізити метрик - це імена елементів даних у заббіксі, можна вказати як окрему метрику, так і множину з фільтрацією через регулярне вираження. У моєму прикладі поле Item містить вираз: "/(^лінія 1)|(наявність)|(кабачок)/" - це означає: відібрати всі метрики, ім'я яких строго починається з "лінія 1" або містить слово "наявність" або містить слово «кабачок»

Grafana+Zabbix: Візуалізація роботи виробничої лінії
Приклад налаштування запиту даних про двигуни першої лінії та наявність сировини

Перетворення даних

Вихідні дані можуть бути не завжди в тому вигляді, в якому нам їх потрібно відобразити. Наприклад, ми маємо щохвилинні дані про вагу продукту в ємності (кг), і нам потрібно відобразити швидкість заповнення в т/год. Я це роблю так: беру дані про вагу і перетворюю їх функцією графани delta, яка вважає різницю між значеннями метрики, так поточна вага перетворюється на кг/хв. Потім множу на 0.06 для приведення результату тонни/годину. Так як метрика ваги використовується в декількох запитах, я вказую для неї новий псевдонім (setAlias) і використовуватиму його в правилі візуалізації.

Grafana+Zabbix: Візуалізація роботи виробничої лінії
Приклад використання параметра delta та множника та перейменування метрики у запиті

Ось ще приклад перетворення даних: мені потрібно було підрахувати кількість замісів (початок циклу = пуск двигуна). Метрика вважається на основі статусу двигуна "лінія 1 - насос відкачування з бака 1 (статус)". Перетворення: дані вихідної метрики змінюємо функцією delta (різниця значень), таким чином у метриці буде значення +1 для пуску двигуна, -1 для зупинки і 0 коли двигун не змінює свій статус. Потім прибираю всі значення менше 1 і підсумовую їх. В результаті виходить кількість пусків двигуна.

Grafana+Zabbix: Візуалізація роботи виробничої лінії
Приклад перетворення даних з поточного статусу в кількість пусків

Тепер про саму візуалізацію

У налаштуваннях відображення є кнопка "Edit Draw", вона запускає редактор, у якому можна намалювати схему. Кожен об'єкт на схемі має свої параметри. Наприклад, якщо вказати налаштування шрифту в редакторі, вони будуть застосовуватися до візуалізації даних у графані.

Grafana+Zabbix: Візуалізація роботи виробничої лінії
Так виглядає редактор у Draw.io

Після збереження схеми вона з'явиться в графані і можна буде створювати правила зміни елементів.

У параметрах () ми вказуємо:

  • Options - задається ім'я правила (Rule name), назва або псевдонім метрики, дані якої будуть використовуватись (Apply to metrics). Тип агрегації даних (Aggregation) впливає кінцевий результат метрики, так Last - означає, що буде обрано останнє значення, avg - середнє значення за період, обраний у верхньому правому кутку.
  • Thresholds - параметр порогових значень, що описує логіку застосування кольору, тобто обраний колір буде застосовуватися до елементів на схемі залежно від даних метрики. У моєму прикладі при значенні метрик "0" - статус "Ok" колір буде зелений, при значенні ">1" статус Critical і колір буде червоний.
  • Color/Tooltip Mappings» та «Label/Text Mappings» – вибір елемента схеми та сценарію його поведінки. У першому сценарії об'єкт буде зафарбований, у другому – на ньому буде текст із даними з метрики. Для вибору об'єкта на схемі потрібно натиснути знак ланцюга та клацнути мишкою на схемі.

Grafana+Zabbix: Візуалізація роботи виробничої лінії
На цьому прикладі я зафарбовую насос і його стрілку червоним кольором якщо він працює і зеленим якщо ні

За допомогою плагіна flowcharting мені вдалося намалювати схему всієї лінії, на якій:

  1. змінюється колір агрегатів відповідно до їх статусу
  2. є сигналізація відсутності продукту в ємностях
  3. відображається налаштування частот двигунів
  4. швидкість заповнення/скидання першого бака
  5. підраховується кількість циклів роботи лінії (заміси)

Grafana+Zabbix: Візуалізація роботи виробничої лінії
Візуалізація роботи виробничої лінії

Результат

Найскладнішим для мене було отримати дані з контролерів. Завдяки універсальності заббікса щодо отримання даних і гнучкості графани за рахунок плагінів, знадобилося всього кілька днів для створення комплексного екрану моніторингу виробничої лінії. Візуалізація дала можливість перегляду графіків та статистики станів, плюс легкий доступ через Інтернет усім зацікавленим – все це дозволило швидко виявляти вузькі місця та неефективне використання агрегатів.

Висновок

Мені дуже сподобалася зв'язка Zabbix+Grafana і я рекомендую звернути на неї увагу, якщо вам потрібно швидко обробити дані з контролерів чи датчиків без програмування чи впровадження складних комерційних продуктів. Безумовно, це не замінить професійних SCADA систем, але буде достатньо як інструмент централізованого моніторингу всього виробництва.

Джерело: habr.com

Додати коментар або відгук