Xeoma и Zabbix: мониторинг системы видеонаблюдения
Статья от пользователя Xeoma
Цифровые технологии все глубже проникают во все области человеческой деятельности, повышая качество жизни и производительность труда. Вместе с тем они ведут к увеличению количества разнообразных электронных устройств и систем, которые, взаимодействуя между собой, и влияя друг на друга, образуют сложный механизм, схожий с человеческим организмом. Стабильность его работы является залогом успешности функционирования организаций любого уровня – от мировых корпораций с тысячами сотрудников до микропредприятий, в штате которых состоит всего пара человек. Контроль и обеспечение работоспособности этого организма всё чаще возлагается на различные подсистемы автоматического мониторинга инфраструктуры предприятия.
Следуя общим тенденциям, системы видеонаблюдения неуклонно теряют свою обособленность, вливаясь в общую «цифровую реку». Процесс их интеграции влечет за собой не только необходимость подключения к общему коммуникационному оборудованию и каналам связи, но и к системам мониторинга уровня предприятия. Консолидация всех статистических данных, собираемых с контролируемых устройств, делает возможным обнаружение отказов оборудования, влияющих на систему видеонаблюдения как напрямую, так и косвенно.
В качестве примера можно привести ситуацию выхода из строя порта сетевого коммутатора. Следствием неисправности является возникновение сетевого шторма, снижающего пропускную способность магистрального канала, используемого для видеоконтроля запасного входа на отдаленный склад ГСМ. В том случае, если авария не была обнаружена визуально – рассыпанием картинки на мониторе дежурного охранника, то она повлияет на архивные записи, что будет замечено позднее и, скорее всего, повлечет за собой невозможность их использования. Несомненно, что своевременное обнаружение скрытой проблемы и локализация причин возникновения аварийной ситуации ускорит восстановление работоспособности всей системы в целом, что обеспечит сохранность имущества и уменьшит потери бизнеса.
Помочь в этом случае может «соединение» системы видеонаблюдения Xeoma Server и Zabbix – свободно распространяемой системы мониторинга с открытым исходным кодом. Следует отметить, что в функционал Xeoma Server так же входит достаточное количество модулей сигнализации, таких, как Отправка e-mail, Детектор проблем и пр., обеспечивающих извещение персонала о возникновении нештатных ситуаций.
Взаимодействие Xeoma и Zabbix происходит по двум условным сценариям: «Оповещение» и «Опрос». Возможность применения единственного сценария, либо их комбинации, находится в зависимости от приобретенной лицензии:
- В редакции Xeoma Standard, а так же в Пробном режиме, доступно только «Оповещение»;
- Редакция Xeoma Pro расширяет возможности и позволяет дополнительно задействовать «Опрос».
В сценарии «Оповещение» сторона видеонаблюдения самостоятельно инициирует соединение с сервером мониторинга при возникновении каких-либо событий, передавая связанную с ними информацию. Генерация событий производится фильтрами/модулями, такими как, например, Детектор проблем, Детектор дыма, Детектор оставленных предметов. Непосредственной отправкой данных на сервер мониторинга занимается модуль Запуск приложения.
В сценарии «Опрос» сервер мониторинга, обращаясь к серверу видеонаблюдения, производит периодический съём статистических данных через JSON API.
Подготовка
Возможно, что Zabbix Server уже эксплуатируется в организации и необходимость в его установке отсутствует. В противном случае следует произвести инсталляцию, либо импортировать уже преднастроенный образ готового решения в доступную среду виртуализации (VMware / Hyper-V / Xen и пр). На Xeoma Server рекомендуется установить Zabbix Agent, подключить шаблоны «Template Module Zabbix agent» и «Template Module Linux CPU by Zabbix agent».
Ниже, для иллюстрирования примеров, использован Zabbix Appliance, развернутый на гипервизоре Hyper-V. Рекомендуемая версия выпуска Zabbix – не ниже 4.2.5. Xeoma Server установлен на Debian 10 «Buster».
После установки тем или иным способом сервера мониторинга и получения доступа к веб-панели управления Zabbix следует создать «узел» (host), с которым будут связаны все метрики, относящиеся к контролируемому экземпляру Xeoma Server. Для этого жмём кнопку «Create host» на странице «Configuration -> Hosts” и заполняем следующие поля:
- «Host name» — имя узла, заданное в конфигурационном файле Zabbix Agent, установленном на Xeoma Server. В том случае, если агент не устанавливался, поле заполняется произвольными данными;
- «Visible name» — человеко-понятное имя, отображаемое в веб-интерфейсе Zabbix;
- «Agent» / «IP Address» — сетевой адрес узла Xeoma Server.
На закладке «Templates» подключаем шаблон метрик Zabbix Agent (в том случае, если он устанавливался):
На этом этапе система мониторинга уже почти готова к использованию в любом сценарии — «Оповещение» или «Опрос».
Оповещение
Основополагающим принципом этого сценария является инициация соединения и передача информации сервером видеонаблюдения, следовательно — Xeoma Server должен знать, куда отослать данные, а Zabbix Server – как их принять.
На узле, где запущен Xeoma Server, необходимо предварительно установить zabbix_sender – программу, посылающую необходимую пользователю информацию на Zabbix Server.
После этого, к ранее заведенному в веб-интерфейсе Zabbix узлу Xeoma Server следует привязать один или несколько так называемых элементов данных – нажать кнопку «Create item» на закладке «Items» узла и заполнить основные поля:
- «Name» – имя, отображаемое в веб-интерфейсе;
- «Type» – Zabbix trapper. Этот тип означает, что создаваемый элемент данных будет заполнен только в том случае, когда внешняя программа самостоятельно направит данные на Zabbix Server;
- «Key» – уникальный идентификатор элемента в пределах узла. Может быть произвольным.
В интерфейсе Xeoma нужно заменить в стандартной цепочке оповещения модуль Отправка e-mail на Запуск приложения и в свойствах последнего указать путь к утилите zabbix_sender, а так же заполнить ряд параметров, необходимых для её корректной работы:
- В -z указывается адрес сервера Zabbix;
- В -s помещается имя узла, к которому относится заполняемая сервером Zabbix метрика. Оно должно быть эквивалентно значению поля «Host name», заполненному на этапе создания узла в Zabbix;
- В -k задается ключ, эквивалентный ключу ранее созданного элемента данных, ожидающего поступления информации (тип «Zabbix trapper»);
- В -o приводится значение, которое будет помещено в элемент данных.
Если все настройки корректны, то, после нажатия ссылки «Протестировать» в окне настройки модуля «Запуск приложения», на странице «Monitoring -> Latest data» веб-интерфейса Zabbix, будет отображено переданное от Xeoma Server значение метрики.
Однако Xeoma Server способен передавать в Zabbix не только предопределенные заранее числа и слова, но и данные, получаемые от модулей-фильтров, таких как Распознавание лиц или Распознавание QR-кода. Настройки для передачи из последнего приведена ниже.
На стороне Zabbix результат распознавания будет отображен на странице «Monitoring -> Latest data». В примере тестовый QR-код содержит погружённый в него URL.
Опрос
В данном сценарии взаимодействие происходит в отличном от «Оповещения» порядке: сервер мониторинга отправляет периодические запросы к Xeoma Server, получая от него состояния компонентов системы видеонаблюдения. Сохраняемые данные могут быть проанализированы как визуально персоналом в ходе расследования инцидента, так и автоматически – передачей в «триггер» – логическое выражение, которое «оценивает» текущее состояние системы и при необходимости порождает «событие», что приводит к запуску «действия» – автоматической реакции системы мониторинга на изменения состояния контролируемой системы. В этом случае система мониторинга может попытаться самостоятельно устранить проблему (например, перезагрузкой камеры), либо уведомить персонал звонком на мобильный телефон, отправкой СМС или иным способом сигнализации. Подробная информация о «триггерах», «событиях», «действиях» и пр. содержится в руководстве по Zabbix.
Так как количество вариантов использования накопленных и оперативных данных огромное множество, то охватить даже их малую часть в одной статье невозможно. Но, в качестве стартовой точки, стоит воспользоваться специально созданным для Xeoma Server шаблоном «Template APP Xeoma Server», который можно найти здесь: https://github.com/zbx-sadman/Xeoma/tree/main/Zabbix
Указанный шаблон следует импортировать на странице «Configuration -> Templates» веб-интерфейса Zabbix, а в конфигурационный файл /etc/zabbix/zabbix_agentd.conf добавить вызов утилиты cURL, которая будет осуществлять запросы к JSON API Xeoma Server:
UserParameter=xeoma[*],curl -s "http://localhost:10090/api?login=$1&password=$2&$3"
Подключив шаблон на закладке «Template» контролируемого узла, находящегося на странице «Configuration -> Hosts» веб-интерфейса Zabbix, на закладе «Macros» следует создать два макроса {$XEOMA_PASS} и {$XEOMA_USER}. В них указать, соответственно, пароль и имя пользователя, которому разрешен доступ к API Xeoma. Учётные данные этого пользователя задаются через меню Xeoma Server: «Удалённый доступ -> Пользователи».
Через некоторое время после вышеуказанных действий Zabbix Server обнаружит доступные на Xeoma модули Просмотр и архив, Универсальная камера и приступит к наблюдению за ними.
Наглядный анализ состояния Xeoma Server зачастую осуществляется с использованием графиков. Например, они могут рассказать об очевидных зависимостях – резко возросшее значение «CPU Utilization» свидетельствует о росте количества обслуживаемых камер или обрабатываемых видеопотоков. При запуске Xeoma в виртуальной среде эта метрика подскажет, насколько необходимо увеличить ресурсы виртуальной машины, чтобы скорость декодирования оставалось на приемлемом уровне.
Также Zabbix сумеет сообщить о более сложных проблемах. Например, в одной из цепочек Универсальная камера -> Детектор движения -> Просмотр и архив, для улучшения качества анализа видеопотока, требуется наличие активированной настройки «Использовать поток из архива» в модуле Детектор движения. В этом случае все модули используют «Архивный поток», поток «Предпросмотр» же не используется вовсе, что видно на графике Zabbix. При намеренном или случайном отключении вышеупомянутой настройки детектор начнет анализировать «Предпросмотр» и его статус изменится на «используется», что будет обнаружено автоматически. Одновременно с этим снизится загрузка CPU, т.к. начнется анализ потока с меньшим разрешением. Эти события будут видны на двух графиках, синхронизированных по времени.
В силу того, что любое изменение характерного поведения системы видеонаблюдения должно быть связано с оповещением ответственных лиц – они практически сразу узнают о совершении потенциально некорректных настроек.
Как упоминалось ранее – Xeoma имеет в своём арсенале модуль Детектор проблем, который содержит ряд крайне востребованных в мониторинге функций по обнаружению потенциальной неисправности камеры:
- Отсутствия обновления картинки;
- Отсутствия звука;
- Расфокусировки камеры;
- Затемнения или засвета картинки.
Доступ для получения этой информации через API способен существенно облегчить работу персонала в средних и больших инсталляциях Xeoma. К сожалению, на данный момент, таковая возможность отсутствует. Однако, стоит надеяться на то, что в ближайшем будущем, ситуация начнет меняться в лучшую сторону, API будет расширяться, а у дежурного администратора появится свободная минутка для медитации.
*Орфография и пунктуация автора сохранены.
10 марта 2022
Читайте также:
Статья от пользователя «Образование, Xeoma и Arduino»
Работа на Linux
Работа на микрокомпьютере
Видеонаблюдение своими руками
Лайфхаки от Xeoma — советы и секретные возможности системы видеонаблюдения