LINUX.ORG.RU

Облачный мониторинг RTSP-потоков и Heartbeat за NAT без проброса портов. Нужен фидбэк по архитектуре.

 , , ,


0

1

Привет всем.

Написал для своих нужд легковесный внешний чекер, который в итоге перерос в облачный SaaS-проект мониторинга - PingZen. Сейчас расширил функционал и добавил полноценный мониторинг IP-камер/видеорегистраторов по RTSP, а также Heartbeat-чекер для крон-задач и бэкапов.

Хочу показать техническую реализацию и получить конструктивный пинок от местного комьюнити по поводу архитектуры.

Как это устроено под капотом:

  1. Мониторинг RTSP (без протухания сессий) Вместо того чтобы гонять FFmpeg/ffprobe по крону или вешать тяжелые шаблоны на Zabbix, чекер работает на стыке сетевого и медийного анализа. На первом уровне шлем OPTIONS и DESCRIBE по RTSP (раз в 1-15 минут), проверяя сокет, порт 554, авторизацию (Basic/Digest) и пути. На втором уровне (раз в 5-60 минут) шлем SETUP и PLAY, дергаем до 10 секунд потока и закрываем через TEARDOWN. Видео на сервере принципиально не декодируется ради экономии ресурсов (и приватности) - частоту кадров (FPS), битрейт и дропы пакетов считаем парсингом заголовков RTP-пакетов.

  2. Обход NAT и серых IP Для локальных сетей, где пробрасывать RTSP-порты наружу - это дыра в безопасности, сделали приватные чекеры. Это легковесный Docker-контейнер (висит в локалке с камерами), который сам опрашивает устройства по RTSP и пушит статус-репорты на центральный сервер по 443/TCP. На роутере ничего открывать не нужно.

  3. Heartbeat-мониторинг (Cron / Backups) Работает по принципу inverted check. Не мы стучимся на сервер, а локальный скрипт/бот после успешного выполнения шлет curl-запрос. Если пинг вовремя не пришел - триггерится алерт. Задержки (Grace Period) настраиваются, чтобы не ловить ложные алерты при кратковременном моргании сети.

Алерты отдаем в Telegram, Slack, Discord или сырыми Webhook-ами.

Проект некоммерческий, пилю в одиночку. На бесплатном тарифе отдаю до 55 мониторов с минутным интервалом проверки (каждый канал NVR считается за один монитор). Карты не прошу, enterprise-ограничений на протоколы нет.

Ссылка на генератор RTSP-ссылок (сделали как бесплатную тулзу, работает чисто на фронте в браузере, пароли в сеть не шлет): https://pingzen.dev/ru/rtsp-url-generator Лендинг по камерам: https://pingzen.dev/ru/ip-camera-monitoring

Собственно, вопросы к сообществу:

  1. Имеет ли смысл добавлять поддержку ONVIF для автопоиска камер приватным чекером в локалке, или сисадмины все равно все пути руками вбивают через CSV?
  2. Насколько критично отсутствие поддержки H.265 для генерации скриншота по запросу в браузере (сейчас key-frame декодируется js-ом на фронте только для H.264)?
  3. Что бы вы докрутили в логику алертов при деградации RTSP-потока (когда битрейт падает, но сессия не рвется)?

Буду рад здоровой критике и юзкейсов.

Помню йопся с ffmpeg’ом, колхозил ссылки, потом плюнул и накатил в контейнер motion-eye.
Но твоя темка полезной будет

Dodik ★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария