Мониторинг камер видеонаблюдения Линия (Devline) в Zabbix

Хочу поделиться небольшим практическим опытом решения одной прикладной задачи. Я расскажу, как можно настроить мониторинг камер в системе видеонаблюдения Линия (Devline). Каких-то новых или интересных приемов показано не будет, сугубо информация по Линии, так что статья будет интересна только тем, кому нужно решать такую же задачу.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Цели статьи

  1. Рассказать про различные способы мониторинга камер в системе видеонаблюдения Линия.
  2. Показать настройку по одному из способов.
  3. Рассказать про ошибки, с которыми столкнулся в процессе настройки.

Введение

Я давно знаком с видеонаблюдением Линия. Она популярна, функциональна, стоит не очень дорого, ставится без проблем на любую версию Windows. Настроить и ввести в эксплуатацию такую систему нет никаких проблем. Мне нужно было настроить мониторинг этой системы, установленной на Windows 7.

С базовыми метриками нет никаких проблем - ставим сам zabbix сервер, устанавливаем zabbix-agent на windows, настраиваем мониторинг дисков. Дальше нужно было подумать, как мониторить сами камеры.

Первое, что приходит в голову - icmp проверки по ip. У такого подхода есть 2 минуса:

  1. Камера может пинговаться, но при этом реально не выдавать картинку на сервер.
  2. Камеры могут быть в разных сетях, к которым может не быть доступа с сервера мониторинга.

Гораздо удобнее было бы получать всю необходимую информацию по камерам с самого сервера Линии. Стал копать в этом направлении и вот что нашел.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Разные подходы к мониторингу

Мониторить камеры в Линии можно разными способами. Я нашел и рассматривал 3 из них. Подробно опишу каждый.

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

Настройка реакций в Линии

Сам лог файл располагается в C:\ProgramData\DevLine\Linia\logging\kernel.log. При пропадании сигнала в логе будут примерно такие записи.

2019-05-08 14:51:23.235 ERROR root             primary video stream has been interrupted (watchdog_error, 0, no frames) from Ворота металл, restarting
2019-05-08 14:51:23.235 ERROR root             secondary video stream has been interrupted (watchdog_error, 0, no frames) from Ворота металл, restarting
2019-05-08 14:51:23.238 WARN  root             starting video stream from Ворота металл (1) (warn: video has been interrupted)
2019-05-08 14:51:23.243 WARN  root             starting video stream from Ворота металл (2) (warn: video has been interrupted)
2019-05-08 14:51:44.249 ERROR root             failed to start video stream from Ворота металл (2)
2019-05-08 14:51:44.249 ERROR root             failed to start video stream from Ворота металл (1)
2019-05-08 14:51:54.247 INFO  root             starting video stream from Ворота металл (1)
2019-05-08 14:51:54.250 INFO  root             starting video stream from Ворота металл (2)
2019-05-08 14:52:15.249 ERROR root             failed to start video stream from Ворота металл (1)
2019-05-08 14:52:15.334 ERROR root             failed to start video stream from Ворота металл (2)
2019-05-08 14:52:26.253 INFO  root             starting video stream from Ворота металл (1)
2019-05-08 14:52:26.267 INFO  root             starting video stream from Ворота металл (2)
2019-05-08 14:52:47.277 ERROR root             failed to start video stream from Ворота металл (2)
2019-05-08 14:52:47.365 ERROR root             failed to start video stream from Ворота металл (1)

Дальше этот лог файл можно анализировать заббиксом и слать оповещения. Это удобно тем, что не надо проверять каждую камеру. Настройки простые и быстрые. Изначально хотел настроить именно так, но от данного способа отказался по следующим причинам.

  1. Лог файл очень большого объема. У меня он был 100 мб и я не понял, как его ротировать.
  2. В нем очень много разных событий и даже на простое отключение камеры генерируется куча разных строк. Потом то же самое на возврат.
  3. Некоторые камеры кратковременно теряют связь и это тоже отражается в логе.

Все эти события нужно было как-то обработать в заббиксе, прислать удобное оповещение с именем камеры в почту, обработать ложные срабатывания. Мне в итоге показалось все это слишком сложным и ненадежным.

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

Для того, чтобы точно узнать имя отключившейся камеры, необходимо добавлять реакцию и параметры zabbix_sender индивидуально для каждой камеры вручную. Мне не нравится подход в мониторинге, когда настройки выполняются на стороне клиента. Это неудобно. Отказался от этого способа по этой причине.

Третий способ. К камере можно обратиться через web сервер, который по-умолчанию запускает Линия. Запрос выглядит примерно так - http://10.1.4.2:9786/cameras/1/image В ответ вы увидите статический кадр с камеры 1. Для доступа к изображению используется базовая авторизация. Пользователя можно создать через настройки сервера.

Если с камерой все в порядке, вы получаете кадр с камеры и http код ответа на запрос 200. Если с камерой какие-то проблемы и картинки нет, код запроса будет отличен от 200. Я решил настроить мониторинг камер через стандартные web проверки zabbix. Триггер с оповещением будет срабатывать на код ответа веб сервера, отличный от 200.

Решение простое и рабочее, хотя мне хотелось сделать его каким-то более красивым и удобным, с автообнаружением и масштабируемостью на большие системы видеонаблюдения. В моем случае мне хватило и его, так как сервер только один, камеры редко меняются. Нет проблем настроить все вручную один раз и забыть.

Для тех, кто все же решится каким-то образом доработать или сделать более функциональное и универсальное решение по мониторингу камер в Линии добавлю несколько подсказок. У сервера видеонаблюдения есть api - https://devline.ru/aboutweb/#RPC. На основе информации оттуда я подготовил вот такой запрос, который выдает подробную информацию о камерах в json:

# curl -X GET -H "Accept: application/json" --user zabbix:password http://10.1.4.2:9786/cameras

Вывод примерно такой:

json ответ с информацией о камерах

Не понимаю, что разработчикам помешало добавить сюда информацию о статусе потока, активен или нет. Это решило бы все проблемы. Возможно, если камера по какой-то причине будет отключена, ее не будет в этом json. Тогда на основе этого можно было бы получать информацию о недоступности. Проверить это у меня не было возможности. Удаленно не мог отключать камеры.

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

После того, как определился со способом, настройка мониторинга каждой камеры не представляла какой-то особой трудности. Для этого использовались стандартные web сценарии. Подробно их работу я описывал в отдельной статье по мониторингу сайтов в zabbix.

Я создал отдельный шаблон и добавил туда следующие сценарии. В первой вкладке указал имя и интервал.

Мониторинг камеры в Zabbix

Дальше задал параметры конкретного шага с адресом для проверки камеры.

Шаг мониторинга web ответа сервера

Отдельно настроил авторизацию для доступа к камере.

Авторизация на камере

Изначально не планировал полностью загружать страницу с картинкой. Чтобы сократить трафик, хотел проверять только код ответа сервера. Но когда указывал настройку Загружать только заголовки, web сервер возвращал код ответа 405.

После того, как убедился, что мониторинг работает нормально, сделал триггер для оповещения по почте о недоступности камеры.

Триггер о недоступности камеры

В зависимостях триггера указал доступность zabbix-agent на самом сервере видеонаблюдения. Это чтобы не было спама о недоступности камер, если сам сервер по какой-то причине потеряет связь с мониторингом и все проверки будут с ошибками.

Зависимость триггера от доступности сервера видеонаблюдения

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Очередной пример универсальности системы мониторинга Zabbix. Рядовая задача, которую с помощью заббикса можно решить тремя принципиально разными способами. И каждый имеет свои плюсы и минусы, может быть выбран в зависимости от наблюдаемой системы.

Лично я получаю удовольствие, когда работаю с zabbix. Так сходу даже не придумаю, какой программный продукт мне нравится так же сильно. Возможно, Nginx. Буду рад полезным замечания, советам в комментариях.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

20 комментариев

  1. Алексей Николаевич Смирнов

    Наверное обсуждение началось задолго до появления найденных мною функций, но вот возник вопрос и нашлась документация и API для серверов и регистраторов Line. Через API можно мониторить камеры через сам регистратор, в том числе идет ли поток с камеры, а еще важный момент кроме состояния самих камер можно мониторить состояние сервера, состояния хранилищ и еще некоторых данных с сервера/регистратора напрямую. Ссылка на документацию: https://devline.ru/aboutweb/#RPC

  2. Столкнулся с проблемой такого характера.
    есть видеорегистратор и камеры хиквижн.. 28 камер подключены по сети 10.7.10.0 с ними проблем нет.. все подвязывается и работает..
    и есть 5 камер которые подключены непосредственно к регистратору и находятся в своей сети 192.168.254.0... как мне их можно привязать в забикс??
    я даже не могу до них достучатся из своей сети (10.7.10.0)

    • Получается, что никак. Нужна сетевая связность, чтобы снимать данные с оборудования. Можно было бы поставить zabbix_proxy в недоступной сети, чтобы она собирала метрики и отправляла на сервер. Но на видеорегистратор прокси не поставить. Так что решайте вопрос сетевой связности. Если физически доступ с подсети 192.168.254.0 в 10.7.10.0 есть, то этот вопрос можно решить с помощью маршрутизации. Но нужно разбираться в вопросе и всё аккуратно настроить в зависимости от топологии сети.

  3. Добрый день. Покопался в меню видеорегистраторов "линия" и выяснил,что можно http запросы о проблемах с записью архива и потери сигнала с камер на url ссылку.
    Как корректно "прикрутить" сей функционал к заббиксу, что бы в заббиксе можно было вести онлайн мониторинг текуших проблем, не подскажите?

  4. Алексей

    Добрый день.
    Это просто сообщение с заголовком "Кстати".
    Хотел переделать свой мониторинг видеокамер на Web-опрос, добавил, проверил и... удалил))) Потому что при проверке пингом у нас все-таки хранится информация о потерях, их частоте и времени отклика, что в свое время помогло мне логически определить некорректную работу poe-коммутатора, сэкономив кучу времени. На нормальный poe-коммутатор L3-уровня собственникам то денег жалко)))
    Спасибо за статью. Являюсь вашим постоянным читателем. Много чего внедрил. Снимаю шляпу.

  5. https://github.com/P1ton/zabbix-devline
    Шаблон с правилом поиска камер и проверкой доступности камеры через внешнюю проверку.

    • Спасибо, посмотрю. Хотя описанный в статье вариант меня на текущий момент полностью устраивает.

  6. Никита

    Интересный материал, спасибо за исследование. Подскажите, а в настройках "Линии" разве нельзя поставить опцию оповещения о потере сигнала? Обычно такой функционал уже встроен во все видеорегистраторы, даже старые RVI. И просто приходит алерт на почту, что такая-то камера не в сети. При этом на некоторых регистраторах есть дублирование сообщения о неработающих камерах в 0:00 часов.

    • Может быть и можно, точно не знаю. Я не видел, но специально не искал. Я всегда все замыкаю на единую систему мониторинга, поэтому все настраиваю в ней, даже если есть возможность настроить уведомления напрямую.

  7. Здравствуйте.
    Мы построили городской благотворительный проект онлайн камеры на центральных площадях города. 12 камер (хиквижн) и целая куча микротиков )) на которых построена сама сеть. Возможно ли поставить на сервер заббикс, что бы мониторить все это хозяйство, тк вечно что нибудь отваливается, а учитывая, что следящей программы нет, очень трудоемко выдергивать отрывки инфы с разных девайсов. С ув. Евгений.

  8. Вот до http проверок, я не догадался, но заморочился на C# сделал дискавери с проверкой картинки по пикселям xD, спасибо что напомнили про http проверки)

    • Сам бы я тоже не догадался, подсказал напарник, а дальше я уже на форуме линии и в документации нашел подробности.
      Каким образом на c# сделана дискавери и проверка? Не уловил. Картинку же как-то все равно получить надо, по http проще всего.

      • На C# для агента написал парсилку вывода "cameras".
        Но полагаю, что можно это сделать на PowerShell, но мне был интересен c#.
        Ну, и через C# так же на стороне агента получаю картинку (тут подзаморочился и был спортивный интерес, сканировал на наличие не черных пикселей), чтобы передать на сервер 1 или 0 )))

      • На досуге проверил, http код всегда 200, если с камеры нет изображения.
        Например http://192.168.1.2/cameras/10/image

        Т.е. если камера настроена и галочка "Нет камеры" не выставлена (не должна быть выставлена)
        То при переходе по этому uri видим "квадрат Малевича" и код 200.

        Значит мои потуги на C# были не напрасны.

        P.S. Линия 7.6.0

        • Да, анализ изображения это единственный надежный способ узнать, что показывает камера. Других способов быть не может. Web сервер отдает 500-ю ошибку, когда камера становится недоступна физически. Это я проверял.

          Но если камера вещает черный квадрат в поток, то web сервер никак не узнает о том, что с камерой проблемы.

          Предложенный способ по сути является аналогом обычных пингов, с единственным удобством, что все проверки идут с самого сервера Линии. Нет необходимости прокидывать маршруты и доступ с zabbix сервера до каждой камеры. Достаточно сделать доступ только к самомой Линии.

          • Аноним

            Это для аналоговых линий. Сама Линия показывает, что камера не доступна, а вот по api чёрный квадрат. Такие вещи можно дёргать обычным curl и смотреть размер. На всех не работающих будет один очень маленький размер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar