Вторая серия. Гайды по настройке диагностики и оповещений в Zabbix для Scada-систем WinCC
Я, Арсений Тиунов, менеджер по визуализации, продолжаю рассказывать о мониторинге SCADA-систем WinCC на производствах «Северстали».
В прошлой части мы поговорили о тех возможностях, которые есть у WinCC и Zabbix для того, чтобы стать отличным диагностическим комплексом. Теперь же хотим поделиться настройками обоих видов диагностики и триггеров для эффективного мониторинга.
Гайд 1: как настроить предиктивную диагностику WinCC в Zabbix
Для начала работы мониторинга производительности WinCC на основе системных тегов не требуется каких-либо настроек (вмешательств в проект WinCC). Эти системные теги создаются в проекте автоматически еще на этапе разработки.
Аналогично автоматически создаются и Windows Performance Counters в момент установки SCADA-системы WinCC. В Zabbix существует возможность считывать эти значения, обращаясь к счетчикам производительности в ОС Windows.
В Zabbix надо создать шаблон (в нашем примере это «asutp_scada»), который удобно масштабируется на любое количество подключенных узлов. Ключ для нужных нам метрик нужно выбрать вида «perf_counter[метрика WinCC]»:
Важно отметить, что сбор метрик вида «perf_сounters» можно настроить через LLD (низкоуровневое обнаружение). LLD даёт возможность автоматического создания элементов данных (триггеров, и т.д.),тем самым автоматизируя и упрощая работу для специалиста.
Приведу пример: обычные метрики (redundancy, alarmlogging и др.) можно копипастить с одного узла на другой, а вот с именами соединений всё сложнее - они уникальны и не повторяются. А данные по этим соединениям нам бы пригодились. Полезно регистрировать обмен данными по каждому программируемому логическому контроллеру (ПЛК) или OPC-протоколу, фиксировать нормальный режим работы или наоборот, возникновение проблемы.
Для этого мы должны создать в нашем шаблоне правила обнаружения:
Прототипы элементов данных при этом будут выглядеть так:
Как видим, каждое выражение в фигурных скобках {#INSTANCE} - это именно та переменная часть, которую необходимо обнаружить. А для нас это отличный способ не писать имена 20 - 30 ПЛК. Эти данные Zabbix может “обнаружить” самостоятельно при применении Вашего шаблона на новом хосте. Быстро, правильно и универсально для любого количества соединений и хостов.
Для старта диагностики метрик WinCC этих настроек достаточно. Можно начинать!
Гайд 2: настраиваем ситуативную диагностику WinCC в Zabbix
Для работы с системными сообщениями потребуется больше усилий, но и ценность такой диагностики возрастает. Выполните следующие шаги.
Создайте теги статуса для системных сообщений:
Настройте системные сообщения — привяжите каждому из них тег статуса:
Создайте VBS-скрипт для подсчета записанных тегов статуса системных сообщений:
На этом этапе важно проверить:
совпадение имени (case sensitive) указанного узла с тем, как вы его указали в Zabbix
точный путь к zabbix_sender.exe и имя proxy-сервера
Получаемые счетчики по приоритетам нужно отправить в Zabbix с помощью zabbix_sender.exe (кроссплатформенная утилита, как правило она находится в папке ..\bin\win64) прямо из VBS-скрипта WinCC:
Гайд 3: как настроить оповещения в Zabbix
Собранные метрики бесполезны, если они не экономят нам время для анализа и реакции на сбойные ситуации. А еще лучше, если они заранее предупредят нас о том, что сбой возможен именно на этом узле. Идеально, если будет оповещение (триггер), что именно этот элемент WinCC нужно проверить и исправить его работу в запланированное для этого время.
Вот пример наших настроек в процессе сбора метрик:
Здесь еще есть над чем работать, ведь процесс точной подстройки триггеров для WinCC у нас продолжается (по мере увеличения количества подключенных хостов).
А по-настоящему точной подстройка становится благодаря возможности для каждого специалиста сделать её такой для каждого отдельного сервера. В таблице выше, например для очереди скриптов, можно изменить значение параметра $SCRIPT.ACTION.CNT на новое (отличное от прописанного в шаблоне). Подсказать какое значение нужно установить поможет Zabbix, записывая графики метрик работы этого узла.
Вы спросите: «А зачем делать точную настройку? Пусть Zabbix шлёт сообщения о каждой ненулевой метрике проблемы!» Хочется привести в пример нашу повседневную жизнь: пациенты на приёме у врача по-разному живут со своими болячками. Норма артериального давления для каждого возраста разная. Показатели здоровья молодого человека будут существенно отличаться у человека в возрасте.
Хочется верить, что мы разожгли ваш интерес к тому, как это работает на практике. В следующей части расскажем об этом на примере реальных кейсов.