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

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

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

Если у вас есть желание детальнее разобраться в процессах настройки и обеспечения комплексной безопасности локальной и сетевой инфраструктуры, построенной на базе ОС Linux, рекомендую познакомиться с онлайн-курсом «Безопасность Linux» в OTUS. Курс не для новичков, для поступления нужно пройти .

Цели статьи

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

Введение

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

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

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

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

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

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

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

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

  1. Установка Debian 9.
  2. Базовая настройка Debian 9.
  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. Буду рад полезным замечания, советам в комментариях.

Онлайн курс Безопасность Linux

Если у вас есть желание детальнее разобраться в процессах настройки и обеспечения безопасности локальной и сетевой инфраструктуры, построенной на базе ОС Linux, научиться защите данных и предотвращению хакерских атак, рекомендую познакомиться с онлайн-курсом «Безопасность Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и администрированию Linux. Обучение длится 4 месяца, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Чему научитесь:
  • Защищать любой сервер (web, e-mail, ftp, etc.)
  • Управлять пользователями и группами с точки зрения безопасности
  • Конфигурировать и использовать встроенный сетевой фильтр iptables
  • Устанавливать и настраивать прокси-сервер SQUID
  • Использовать систему аудита и важные журнальные файлы, которые необходимо контролировать
  • Настраивать с точки зрения безопасности популярные сервисы, к примеру, такие как, xinetd, OpenSSH, portmap, NFS, Apache, Proftpd, BIND, SAMBA
Проверьте себя на вступительном тесте и смотрите детальнее программу по .

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

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

  1. Аватар

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

    • Zerox

      Сам бы я тоже не догадался, подсказал напарник, а дальше я уже на форуме линии и в документации нашел подробности.
      Каким образом на 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

        • Zerox

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

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

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

  2. Аватар

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

  3. Аватар

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

    • Zerox

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

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.