Видеонаблюдение под Linux

Конфигурация программного обеспечения видеонаблюдения AVReg для создания независимых пользовательских систем AVReg на одном компьютере/сервере.

Задача.

Нужно получить несколько независимых систем AVReg на одном видеосервере со следующими характеристиками:

  • раздельные базы данных (настройки камер, пользователи, события, …);
  • раздельные каталоги для сохранения медиа-файлов (архив);
  • доступ в веб-интерфейс под разными путями (alias);
  • один конечный пользователь (или группа) не должен знать о существовании других.

Далее по тексту, такие независимые системы, будут называться учётными записями или профилями.

Такая конфигурация может быть востребована для:

  • хостинга системы видеорегистрации, когда под пользователями подразумеваются клиенты (организации, ИП или физ. лица), не желающие или не имеющие возможность приобрести и обслуживать собственную систему видеорегистрации;
  • полного разграничения доступа к системе видеонаблюдения крупных предприятий, состоящие из многих подразделений (дирекция, бухгалтерия, цех, склад, …). Например, чтобы охрана на КПП «работала» с «своими» периметровыми камерами и даже не догадывалась о камерах установленных в дирекции или бухгалтерии а может и скрытых камерах в самом КПП :).

Подготовка.

Выбор названий учётных записей.

В силу многих ограничений (большинство из них становиться понятным для специалистов далее), название учётной записи не может быть совершенно произвольным:

  • первая буква должна быть из диапазона [A-Za-z0-9];
  • следующие буквы - [A-Za-z0-9-:];
  • длина имени - не более 55 знаков, рекомендуем не более 10

Примеры (имена заключены в кавычки):

  • правильные имена:
    • «sklad-3»
    • «office»
    • «Musorka-na-rublevke»
  • неправильные имена:
    • «склад»
    • «sklad 3»
    • «firma@ru»

Создаём базы данных.

Исходя их требований нашей задачи (см. выше) необходимо создание баз данных для каждой учётной записи.

Имена баз данных должны иметь префикс «avreg5_db-», например, «avreg5_db-office».

При установке пакета avreg-common, автоматически создаётся база данных именем «avreg5_db». Это база для однопрофильной системы AVReg и идеологически не верно использовать её для одной из учётных записей. Её можно удалить, переименовать или использовать для создания новых баз учётных записей. Это очень удобно и легко делается в веб-интерфейсе пакета PhpMyAdmin «Операции» → «Скопировать БД в».

Если вы выбрали путь истинных джедаев, то для «консольного» способа создания баз вам понадобиться интерпретатор mysql и 3 шаблонных SQL файла, расположенных в каталоге «/usr/share/doc/avreg-common/sql»:

  1. create_db.sql - создаёт базу данных;
  2. create_tables.sql - создаёт таблицы в БД;
  3. data_template.sql - наполняем таблицы шаблонными данными.
# переходим в каталог с sql-файлами
$ cd /usr/share/doc/avreg-common/sql/

# запускаем интерпретатор sql и далее уже работаем в нём
# для выхода наберите quit или exit
$ mysql -u root -p******
Your MySQL connection id is 24
Server version: 5.0.32-Debian_7etch5-log Debian etch distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

mysql> SET NAMES 'utf8' COLLATE 'utf8_general_ci';

# удаляем базу по-умолчанию 
DROP DATABASE avreg5_db;

# cоздаём базу, например avreg5_db-sklad
mysql> CREATE DATABASE `avreg5_db-sklad` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

# "переходим" на неё
mysql> USE `avreg5_db-sklad`;
Database changed

# cоздаём таблицы:
mysql> source create_tables.sql

# проверяем
mysql> SHOW TABLES;
+---------------------------+
| Tables_in_avreg5_db-sklad |
+---------------------------+
| CAMERAS                   |
| EVENTS                    |
| MONITORS                  |
| USERS                     |
+---------------------------+
4 rows in set (0.00 sec)

# наполняем шаблонными данными:
mysql> source data_template.sql
Query OK, 0 rows affected (0.00 sec)
...

Начиная с «CREATE DATABASE…» нужно повторить для каждой учётной записи.

Прим: в интерпретаторе mysql можно прокручивать историю команд стрелками, также как и в shell.

# проверяем все ли базы созданы и их имена
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| avreg5_db-office   |
| avreg5_db-sklad    |
| mysql              |
+--------------------+

# и выходим из интерпретатора mysql 
mysql> quit;
Bye

Каталоги для медиа-архивов.

Каждая учётная запись должна иметь свой корневой каталог для записи и хранения медиа-архива.
# создаём каталоги
$ sudo mkdir /var/spool/avreg/{sklad,office}

# устанавливаем для группы avreg  полный доступ в эти каталоги
$ sudo chmod g=rwx /var/spool/avreg/{sklad,office}

$ ls -l /var/spool/avreg
drwxrwxr-x 2 root  avreg 4096 2008-02-16 18:43 office
drwxrwxr-x 2 root  avreg 4096 2008-02-16 18:43 sklad

Если владельцы учётных записей представляют собой различные организации, ИП или физ. лица во избежание проблем совместного использования архива на одном дисковом устройстве (файловой системы) настоятельно рекомендуется смонтировать каталоги sklad и office на отдельные разделы или дисковые устройства.

Для таких многопрофильных систем удобнее всего использовать системы LVM2/EVMS. Напомним, что обеспечения производительности архива, файловая система должна быть XFS (прим: её можно только расширять).

См. также замечания по чистильщику архива (ниже).

Настройка.

Профили.

Первое что нужно сделать удалить (в крайнем случае закомментировать) в глобальном файла конфигурации «/etc/avreg/avreg.conf» все частные параметры и обязательно вот эти:

  • db-host
  • db-name
  • storage-dir

Затем, в каталоге профилей «/etc/avreg/profiles» создаём дополнительные конфигурационные файлы (далее - профили) с именами учётных записей.

В каждом профиле обязательно явно указываем сл. параметры:
  • db-name
  • storage-dir

Например:

$ cd /etc/avreg/profiles
$ ls -l [A-Za-z0-9]*
-rw-r--r-- 1 root root 167 2008-02-16 17:56 office
-rw-r--r-- 1 root root 170 2008-02-16 17:56 sklad

$ cat office

# Профиль для учётной записи
# office - центральный офис

db-name = 'avreg5_db-office'
storage-dir = '/var/spool/avreg/office'

avregd {
       # cpu = 0
}

$ cat sklad

# Профиль для учётной записи
# sklad - складские помещения

db-name = 'avreg5_db-sklad'
storage-dir = '/var/spool/avreg/sklad'

avregd {
       # cpu = 1
}

Веб-сервер Apache.

Напомним, наша задача - получить вход в веб-интерфейс AVReg для учётных записей по адресам:

http://‹имя-или-ip-адрес-сервера›/‹название-учётной-записи›

Для этого в пользовательском конфигурационном файле веб-сервера Apache «/etc/avreg/site-apache2-user.conf» нужно указать следующие директивы Alias, по 2 на каждую учётную запись.

Например, продолжая для двухпрофильной AVReg office и sklad:

% cat site-apache2-user.conf

### User-level apache's config addons

### for "office" profile's access http://ip_or_name/office/
Alias '/office/media' '/var/spool/avreg/office'
Alias '/office'       '/usr/share/avreg-site'

### for 'sklad' profile's  access http://ip_or_name/sklad/
Alias '/sklad/media'  '/var/spool/avreg/sklad'
Alias '/sklad'        '/usr/share/avreg-site'

И заставить демон Apache перечитать(обновить) конфигурацию:

$ sudo apache2ctl -k graceful
# или
$ sudo /etc/init.d/apache2 reload

Проверка и окончательная настройка.

Заходим браузером по адресам

http://‹имя-или-ip-адрес-сервера›/‹название-учётной-записи›

и настраиваем каждую систему AVReg по очереди.

По-умолчанию, доступ открыт 4-м пользователям, представителям каждой их 4-х групп доступа: install, admin, arch, operator с пустыми паролями.

скриншот

В веб-интерфейсе AVReg, как минимум, нужно определить:

  • пользователей,
  • настройки камер.

По умолчанию, в конфигурационной базе будет определены 4 аналоговые камеры.

  скриншот

Если у вас иная конфигурация, то удалите их и создайте новые. Про настройки камер читать тут:

При настройке камер нужно уделять особенное внимание но неразделяемые ресурсы системы.

Запуск.

Запустите демон(ы) avregd вручную

$ sudo /etc/init.d/avreg start
Starting AVReg surveillance system server:  avregd-office[12941] started; avregd-sklad[12966] started; .

или через веб-интерфейс.  запуск через веб-интерфейс

В моменты загрузки и остановки системы (компьютера) демоны avregd запускаются и останавливаются автоматически из сценария системы SysV Init «/etc/init.d/avreg».

Другие детали по управлению «профильными» avregd см. avreg-smp.

Замечания.

Очистка архива.

Если корневые каталоги архивов учётных записей находятся на одном дисковом разделе (более точно блочном устройстве) и не предпринять специальных настроек чистильщика avreg-unlink, дисковое пространство 100% будет заполнено через некоторое время и запись на диск _всех_ профилей остановится.

Эта неприятность обязательно случится, так как после удаления файлов и записей в базе _первого_ профиля, avreg-unlink закончит работу, потому что свободное место на устройстве окажется достаточным. То есть, удаляться будут записи только первой учётной записи(профиля), а другие профили будут только заполнять диск.

Как избежать такой ситуации:

  • правильные методы:
    1. каждой учётной записи своё блочное устройство ( см. выше замечания по путям );
    2. использование дисковых квот (usrquota/grpquota) на устройстве с архивом. Прим: в теории, мы не проверяли, если вам интересно такое решение, напишите нам свои соображения. Ссылки:
  • «кривой» метод: «ступенчатая» очистка, настройки которой описываются ниже.

Для простоты понимания рассмотрим на том же примере с двумя учётными записями: office и sklad. Предположим, что в профиле office 5 камер и интенсивность записи 2ГB/час, а в профиле 10 камер с интенсивностью записи 5ГБ/час. Дисковый раздел /dev/sdb1 смонтирован на /var/spool/avreg и стало быть оба корневых каталога профилей:

  1. /var/spool/avreg/office
  2. /var/spool/avreg/sklad

физически расположены на одном дисковом разделе sdb1 и разделяют его ёмкость. Размер дискового раздела sdb1 составляет 500ГБ.

Общая интенсивность записи составляет 7ГБ/час.

Минимальный размер оставшегося свободного дискового пространства, при котором начинается процесс очистки ставим равным 5-ти часовому запасу start-space = 5 х 7ГБ/час = 35 ~ 40G

Удалять будем за раз записей за 3 часа = 3 х 7ГБ/час = 21 ~ 30GB. Раскидываем 30GB согласно интенсивности записи по профилям: office ~ 10GB sklad ~ 20GB

$ cat /etc/avreg/profiles/office


# Настройки(профиль) учётной записи «office» - центральный офис

db-name = 'avreg5_db-office'
storage-dir = '/var/spool/avreg/office'

avreg-unlink {
   # доп. настройки для профиля office,
   # так как он отрабатывается первым

   # Минимальный размер оставшегося свободного дискового пространства
   # в ГигаБайтах при котором начинается процесс очистки.
   start-space = 40

   # Минимальный размер оставшегося свободного дискового пространства
   # в ГигаБайтах при котором заканчивается процесс очистки.
   # start-space + 10G
   end-space = 50
}

$ cat /etc/avreg/profiles/sklad


# Настройки(профиль) учётной записи «sklad» - складские помещения

db-name = 'avreg5_db-sklad'
storage-dir = '/var/spool/avreg/sklad'

avreg-unlink {
   # доп. настройки для профиля sklad,
   # он отрабатывается вторым

   # !!! одинаков для всех профилей
   start-space = 40

   # Минимальный размер оставшегося свободного дискового пространства
   # в ГигаБайтах при котором заканчивается процесс очистки.
   # start-space + 10G(от профиля office) + 20G
   end-space = 70
}
Мы не уверены на 100%, что в такой конфигурации нет «подводных» камней. По возможности, пользуйтесь отдельными устройствами.

Локальный просмотр.

Локальный вьювер avreg-mon может (сейчас) отображать камеры только одной учётной записи (базы данных) Поэтому для экономии ресурсов сервера, в настройках «Для всех видеокамер» других учётных записей (а может и всех) выключите опцию monitor_live.

Ссылки по теме.

manual/applications/multi-user.txt · Последние изменения: 2008-04-14 (внешнее изменение)