Мониторинг доступности ip-камер

Столкнулся с проблемой, что камеры видеонаблюдения HIKVISION, которые питаются по PоE от коммутатора D-Link DGS-1210-10P, временами становятся недоступны. Восстановить работу камер помогает их перезагрузка по питанию.

В связи с этим появилась необходимость настроить мониторинг доступности камер и, при необходимости, их автоматическую перезагрузку. В качестве средства мониторинга я буду использовать Zabbix.

Стучимся по SNMP

DGS-1210-10P поддерживает протокол SNMP. Таким образом, существует возможность удаленного управления PoE на каждом порту коммутатора. С этого и начнем. Убедимся, что SNMP включен на коммутаторе и существует «SNMP Community» с правами чтения и записи.

Веб-интерфейс DGS-1210-10P

Теперь проверим, что на хосте с Zabbix установлены и корректно работают инструменты Net-SNMP, например, вызвав команду snmpwalk. Если PoE включен на каждом порту, то вывод snmpwalk должен выглядеть так:

pletnev@zabbixhost:~$ snmpwalk -c public -v 2c 10.90.90.90 1.3.6.1.4.1.171.10.76.12.22.1.1.3
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.1 = INTEGER: 1
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.2 = INTEGER: 1
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.3 = INTEGER: 1
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.4 = INTEGER: 1
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.5 = INTEGER: 1
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.6 = INTEGER: 1
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.7 = INTEGER: 1
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.8 = INTEGER: 1

В случае, если PoE на каком-то порту отключен, то вместо «INTEGER: 1» мы увидим «INTEGER: 2».

SNMP и PoE

Для дистанционной перезагрузки камер по питанию я написал bash-скрипт, принцип работы которого предельно прост. По SNMP он узнает, включено ли PoE на указанном порту, и отключает его, если это так. Затем, спустя пять секунд, скрипт снова включает PoE на этом порту.

Например, перезагрузка камеры, подключенной к восьмому порту коммутатора, выглядит так:

pletnev@zabbixhost:~$ ./dgs_portreset.sh 10.90.90.90 public 1.3.6.1.4.1.171.10.76.12.22.1.1.3.1.8
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.8 = INTEGER: 2
iso.3.6.1.4.1.171.10.76.12.22.1.1.3.1.8 = INTEGER: 1

Настраиваем мониторинг

Переместим dgs_portreset.sh в /usr/lib/zabbix/externalscripts, а через веб-интерфейс Zabbix создадим скрипт PoE switch. Теперь добавим действие IPCam POE reset, которое выполнит PoE switch при поднятии триггера с тегом ipcam.

Создаем скрипт PoE switch и настраиваем действие IPCam POE reset

Доступность камер будем определять банальным пингом. Для удобства добавления камер я подготовил шаблон IPCAM_PING, который содержит все необходимые макросы. Элементы данных и триггеры IPCAM_PING наследует от стандартного шаблона ICMP Ping.

Шаблон IPCAM_PING для Zabbix 5.2.2

После импорта шаблона IPCAM_PING триггеру ICMP Ping: Unavailable by ICMP ping потребуется добавить тег ipcam.

Добавляем камеру в мониторинг

Чтобы начать мониторинг доступности камеры, необходимо создать узел сети с интерфейсом типа агент и IP-адресом видеокамеры. К узлу сети необходимо присоединить шаблон IPCAM_PING и заполнить значения макросов {$SWITCH_IP}, {$SNMP_COMMUNITY} и {$OID}. Значением последнего является SNMP OID запись состояния PoE конкретного порта коммутатора.

Камера с адресом 192.168.3.64, подключенная к 11 порту коммутатора DGS-1210-28P с адресом 10.90.90.60

Производительность

В процессе добавления видеокамер появились проблемы с производительностью: «Zabbix icmp pinger processes more than 75% busy». Решить проблему помогло увеличение значения параметра StartPingers.

Изменение StartPingers позволило снизить Utilization of icmp pinger data collector processes с 78 до 24%

Снизить нагрузку на сервер возможно и изменением частоты обновления элементов данных. По умолчанию этот интервал составляет одну минуту.

Заключение

Такой мониторинг сетевых камер я применял с несколькими моделями коммутаторов D-Link. Ниже используемые мной OID:

Поделиться
Отправить
Запинить