Zabbix + OPC DA

Kate

Administrator
Команда форума
В последних релизах Zabbix "из коробки" стал поддерживать некоторые популярные протоколы промышленного оборудования. Имея поддержку Modbus и MQTT, его использование с системами промышленной автоматизации стало чуточку проще. Но подобный подход к мониторингу такого рода оборудования не всегда возможен.
Как правило, на предприятиях используется большое количество устройств промышленной автоматики разных лет и от разных производителей, поддерживающих разные протоколы обмена. OPC серверы являются универсальным инструментом обмена данными с такими устройствами. Информация на тему интеграции Zabbix и OPC DA в сети практически отсутствует. Возможно, мой небольшой опыт в этом направлении окажется полезен.

Для чего нам Zabbix​

В нашем сценарии использования Zabbix последний не является заменой имеющейся SCADA-системе. Параллельное развертывание системы мониторинга позволит иметь возможность гибкой настройки триггеров и своевременного получения оповещений о нештатных ситуациях на оборудовании. Также мы сможем создавать дополнительные информационные панели с графиками, которые смогут давать быстрое представление о ходе тех. процессов.

Взаимодействие с OPC серверами​

Самой сложной задачей, которая стоит перед нами, является организация взаимодействия с OPC-серверами. В ходе поисков готового решения такого взаимодействия стало понятно, что подходящих нам вариантов не так много. Из того, что было найдено, наиболее пригодным к использованию оказался консольный клиент OpenOPC.

Установка OpenOPC​

Как было сказано ранее, речь идет о стандарте OPC DA, а значит, о технологии DCOM и, соответственно, ОС Windows. В нашем случае установка OpenOPC производилась на машину с Windows XP, где и находится проприетарный OPC сервер. После завершения установки необходимо добавить путь до opc.exe в системную переменную среды PATH.
432818656a239587c2df651012862f37.png

Проверим работу утилиты. Для начала выведем в консоль список доступных OPC серверов:
C:\Users\Администратор> opc.exe -q
Merz.OPC_SAIA_S-BUS.1

C:\Users\Администратор>
Теперь попробуем получить теги в удобном нам формате - csv:
C:\Users\Администратор>opc.exe -o csv -s Merz.OPC_SAIA_S-BUS.1 ATP.Register.OAT
ATP.Register.OAT,197,Good,05/24/21 07:16:15

C:\Users\Администратор>opc.exe -o csv -s Merz.OPC_SAIA_S-BUS.1 ATP.Register.OAT ATP5.Register.T_inlet ATP5.Register.T_outlet
ATP.Register.OAT,198,Good,05/24/21 07:16:41
ATP5.Register.T_inlet,627,Good,05/24/21 07:16:41
ATP5.Register.T_outlet,654,Good,05/24/21 07:16:41

C:\Users\Администратор>

Если что-то пошло не так​

В ходе экспериментов с opc.exe выяснились некоторые моменты. Первое: каждый OPC клиент запускал новую копию OPC сервера, а их параллельная работа невозможна. Так как запустить используемый нами OPC сервер как службу не получилось, то через DCOM был настроен запуск OPC сервера от определенного пользователя. Все OPC клиенты - SCADA и агент Zabbix - были также настроены на запуск от этого пользователя. Второе: выявлены некоторые недостатки в работе самого OpenOPC. Например, клиент не вычитывает теги, в названии которых присутствуют символы, отличающиеся от латинских. С этим пока пришлось смириться и решать такие проблемы путем переименования тегов в OPC сервере.

Установка Zabbix агента​

На ту же машину установим Zabbix агент, который сможет работать под Windows XP, например, zabbix_agent-5.2.0-windows-i386-openssl.msi. Агент будет выполнять активные проверки. Чтобы облегчить дальнейшую конфигурация агента, во время установки заполним следующие поля:
  • Ноst name - уникальное имя хоста, совпадающее с именем узла сети на Zabbix сервере.
  • Zabbix server IP/DNS - IP-адреса Zabbix сервера.
  • Server or Proxy for active checks - IP-адрес Zabbix сервера для активных проверок.
17a53f19f2c258d103d7809093c039d7.png

Конфигурирование Zabbix агента​

В конфигурационный файл C:\Program Files\Zabbix Agent\zabbix_agentd.conf были внесены некоторые изменения.
  1. Увеличено время выполнения скрипта.
    ### Option: Timeout
    # Spend no more than Timeout seconds on processing.
    #
    # Mandatory: no
    # Range: 1-30
    # Default:
    # Timeout=3
    Timeout=30
  2. Создан параметр для мониторинга.
    # User-defined parameter to monitor. There can be several user-defined parameters.
    # Format: UserParameter=<key>,<shell command>
    #
    # Mandatory: no
    # Default:
    # UserParameter=
    UserParameter=opc
  3. ,opc.exe -o csv -s $1 $2

Узел сети и элементы данных на сервере Zabbix​

На Zabbix сервере создадим узел сети. Имя узла сети должно совпадать с Ноst name, указанном при установке агента, интерфейс - IP-адрес агента.
cddcab1e18f5f5e5417e21e289aab8e2.png

Далее к созданному узлу сети добавим элемент данных c типом Zabbix агент (активный). Ключом должна являться конструкция типа: opc[<ИМЯ OPC СЕРВЕРА>, <ЗАПРАШИВАЕМЫЕ ТЕГИ ЧЕРЕЗ ПРОБЕЛ>].
549105901f6583c93a87b594dc5a8911.png

Значениями элемента данных будут строки, разделенные запятыми:
ATP2.Register.OAT,273,Good,05/24/21 15:21:33

ATP2.Register.GVS.T_inlet_W,501,Good,05/24/21 15:21:33

ATP2.Register.GVS.T_outlet_W,445,Good,05/24/21 15:21:33

ATP2.Register.T_outlet_w_com,404,Good,05/24/21 15:21:33

ATP2.Register.RAD.T_outlet_W,256,Good,05/24/21 15:21:33

ATP2.Register.P_in_W_com,39,Good,05/24/21 15:21:33

ATP2.Register.P_out_W_com,36,Good,05/24/21 15:21:33

ATP2.Register.RAD.P_outlet_W,43,Good,05/24/21 15:21:33

ATP2.Register.FIRE.P_gidrant,68,Good,05/24/21 15:21:33

Зависимые элементы данных​

Создадим зависимые элементы данных для того, чтобы распарсить CVS, полученный в самом элементе.
c7a6c7fae064a3553ed72615dcddc141.png

В предобработке используем JavaScript, который получит необходимую нам строку в CVS, проверит качество тега и вернет результат.
function (value){
var nr_line = 4;

var lines = value.split('\n');
var fields = lines[nr_line].split(',');

if(typeof fields[2] != "undefined" && fields[2] == "Good"){
return (typeof fields[1] != "undefined") ? fields[1] : null;
}

return null;
}
Пример визуализации полученных данных:
15b68cf0813fa407db8635093f64317e.gif

Заключение​

Теперь, когда данные от оборудования находятся в Zabbix, можно приступить к дальнейшей организации мониторинга: создание и обработка разнообразных триггеров, генерация графиков, отчетов и т. д.



Источник статьи: https://habr.com/ru/post/559056/
 
Сверху