Видеонаблюдение через интернет в веб-браузере

Отладка

При возникновении каких-либо проблем в первую пришлите нам на адрес «avreg-support на mail.ru» архив с информацией об установленной системе AVReg.

Получить такой архив можно двумя способами:

  1. Cкачать файл со страницы «Сообщить об ошибке» веб-интерфейса AVReg (примечание: необходима настройка sudo).
  2. Выполнить в терминале root-а (или через sudo) команду
    # avreg-reportbug > /tmp/avreglog.tgz
    

Дополнительно, если вы смогли определить приложение(пакет) AVReg в котором возникает ошибка или проблема, будет полезна информация, получить которую можно выполнив инструкции ниже по тексту.

avregd

При аварийных крахах демона avregd (чаще всего segfault, далее по тексту - вылет) работа системы AVReg (захват, запись видео, наблюдение) прекращается полностью.

Момент вылета отмечается в «/var/log/daemon.log» (Debian) «/var/log/syslog» (Ubuntu) или подобной строкой:

Mar  5 12:03:48 host avreg-super: avregd[9321] exiting abnormally

После вылета, демон нельзя запустить с веб-интерфейса и командой «service avreg start» в терминале:

avregd - остановлен
# service avreg status
Status of AVReg surveillance system server: avregd stopped,
                                 but /var/run/avreg/avregd.pid exists;
Чтобы помочь нам в локализации ошибки вам нужно прислать или выложить для скачивания файл coredump-файл.

Для этого нужно включить сохранение файлов core в системе, запустить демон avregd заново и дождаться вылета.

«Включение» coredump

На многих дистрибутивах генерация файла core уже «настроена».

$ cat /proc/sys/kernel/core_pattern

core

В этом случае, в каталоге архива AVReg (см. {storage-dir} в /etc/avreg/avreg.conf) после вылета демона avregd (см. выше как в логе это заметить) появится файл core, например, /var/spool/avreg/core.

Если вылет был, а файла core нет, то core нужно включить:

Нужно создать файл «/etc/sysctl.d/coredump.conf» следующего содержания:

$ cat /etc/sysctl.d/coredump.conf

kernel.core_pattern=core

и выполнить:

# service procps restart

Перезапустите демон с терминала:

# service avreg restart

и дождитесь следующего вылета, зайдите в каталог {storage-dir}, возьмите файл core, сожмите его LZMA/7Z/BZIP2/RAR/GZIP и пришлите файл нам или выложите на публичные файл-сервера, чтобы мы смогли скачать его.

Автоперезапуск avregd («костыль»)

Только для Sysv-init (Debian). Для Upstart (Ubuntu), перезапуск «упавших» демонов решается средствами Upstart (см. respawn в задании /etc/init/avreg-worker)

После получения и отправки coredump-файла можно настроить автоматический перезапуска «упавшего» avregd с максимальным временем простоя 1 мин, для чего удалите знак комментария # в строке-задании cron:

/etc/cron.d/avregd, последняя строка

*/1     *       * * *   root    /usr/sbin/avregd-check > /dev/null

Проверка:

  1. Выждите более 1 минуты.
  2. Запустите демон service avreg restart.
  3. «Убейте» демон, выполнив в терминале root-а: # killall -9 avregd.
  4. Не более чем через 1 мин. демон avregd будет запущен заново.

http/rtsp захват

Если камера часто «отваливается» и вы хотите попытаться разобраться почему, нужно перехватывать сетевой трафик (tcpdump) в момент проблемы и анализировать его (wireshark).

Основная сложность перехвата трафика - остановить захват несколькими секундами позже возникновения проблемы, т.к. иначе файлы будут огромными. Как _один_ из вариантов, мы предлагаем использовать «Внешний сборщик/обработчик событий (event-collector).» для решения этого вопроса.

Суть решения такая:

  1. event-collector.sh по событиям захвата создаёт файлы: /tmp/cam{номер}-capture-{состояние}, например, при сбое захвата камеры 17 будет создан файл /tmp/cam17-capture-failed.
  2. в одном терминале запускаем в фоне tcpdump с записью трафика в файлы с ротацией и ограничением размера.
  3. в другом терминале запускаем в фоне скрипт tcpdump-killer.sh, который по появлению файла признака сбоя /tmp/cam17-capture-failed останавливает запись сетевого трафика.

Пошаговый алгоритм для камеры с номером 5 и ip-адресом 192.168.0.5, захват c которой осуществляется по сетевому интерфейсу eth0:

  1. скачиваете «event-collector.sh» и устанавливаете его;
  2. перезапускаете демон avregd
    $ sudo service avreg restart
    
  3. находите в списке процессов скрипт event-collector:
    $ ps u -U avreg
    

    , если нет - см. системный лог (daemon.log или syslog), а также содержимое лога /var/log/avreg/evtcoll.err, устраняете проблему с запуском;

  4. переходите в домашний каталог:
    $ cd
    
  5. запускаете в фоне tcpdump (разумеется, он должен быть установлен):
    $ sudo tcpdump -i eth0 -nN -C3M -W2 -w cam5.pcap host 192.168.0.5 &
    

    (обратите внимание на символ & в конце команды);

  6. удаляете возможно старые файлы - признаки статуса захвата:
    $ sudo rm -f /tmp/cam*
    
  7. скачиваете «tcpdump.killer.sh», устанавливаете ему права на запуск
    $ chmod a+x tcpdump.killer.sh
    

    и запускаете в фоне “останавливалку” tcpdump-а:

    $ sudo ./tcpdump.killer.sh 5 failed &
    

    (обратите внимание на символ & в конце команды);

  8. время от времени проверяете наличие tcpdump в списке процессов, как завершился - можно забирать файлы дампы cam5.pcap* и отправлять нам на анализ, сопроводим письмо комментарием и системным логом за период сбоя (/var/log/daemon.log* или /var/log/syslog*).

avreg-unlink

В терминале root-а выполните следующие команды и пришлите нам их вывод:

# df -hTP
# avreg-unlink -vv

avreg-mon

Запустите avreg-mon в терминале и пришлите нам текстовые сообщения программы:

$ avreg-mon -vv
manual/applications/debugging.txt · Последние изменения: 2014-01-22