Авторская информация о системном администрировании.
# apt install mplayer
И запускаем его без вывода видеопотока. Это можно сделать в обычной консоли, без графического окружения:
# mplayer -vo null http://158.58.130.148/mjpg/video.mjpg
Это рабочая ссылка, привожу её для примера. На ней можно тестить. Если у вас свои камеры и вы хотите мониторить rtsp поток, то запускаем так:
# mplayer -vo null 'rtsp://user:[email protected]/rtsp'
Если поток живой, то процесс с mplayer будет запущен. Как только поток отваливается, mplayer завершает работу. На основе этих данных создаётся айтем и триггер в Zabbix. Если камера одна, то можно использовать функцию айтема proc.num, как в примере в статье. Если камер много, то надо будет придумать какую-то другую проверку. В любом случае это не трудно, дело техники. Главное идея.
Я давно размышлял на тему того, как мониторить не просто работу камеры по пингу или ответу по http, а именно проверять наличие видеопотока. Вот хороший и простой в настройке способ. И главное, ровно то, что нужно.
В статье дополнительно даётся совет, как получить скриншот с камеры во время движения. Mplayer умеет принимать внешние команды. Если есть датчик движения, необходимо с него каким-то образом отправлять сигнал на Zabbix Server. Реализация будет зависеть от возможностей датчика. После этого Zabbix Server будет выполнять удалённую команду, посылая mplayer информацию о том, что надо сделать скриншот потока и положить его в какую-то директорию. Если её подключить к веб серверу, то картинку можно добавить на дашборд Zabbix через URL виджет. Схема сложная, но в целом рабочая. Не вижу каких-то серьёзных затруднений с реализацией.
Если вам приходилось настраивать мониторинг видеопотоков в Zabbix, расскажите, как реализовывали это.
#zabbix# ssh -L 8080:127.0.0.1:80 -N -f [email protected]
◽ 8080 - локальный порт машины, с которой подключаемся
◽ 127.0.0.1:80 - порт, на котором работает веб сервер, не забудьте его запустить только на localhost, чтобы с других адресов он не был доступен
◽ -N -f - ключи для запуска соединения в фоновом режиме, в WSL оно останется активным даже после закрытия терминала
Теперь можно открыть интерфейс Zabbix через проброшенный порт со своего компьютера: http://127.0.0.1:8080/zabbix/
Не нужно настраивать ни VPN, ни Firewall. На сервере открыт только порт SSH, вы можете подключиться к веб интерфейсу из любого места, где есть возможность использовать SSH соединение.
Все популярные SSH клиенты позволяют настраивать проброс портов и сохранять параметры. Так что достаточно один раз настроить соединение и использовать его. Можно и других людей так же подключать. А создав для каждого из них отдельного пользователя можно получить простой аудит подключений на основе логов SSH.
Берите на вооружение, особенно те, кто не умеет, не хочет, ему не нужно учиться настраивать Firewall, а хочется по-быстрому настроить безопасный доступ к какому-то сервису. Программисты часто грешат тем, что на тестовых серверах вешают базу на внешний интерфейс, чтобы подключаться к ней напрямую. А потом забывают, отключить, поменять дефолтную учётку и т.д. Лично сталкивался с этим и не раз.
Когда соединение станет не нужно, через px axf посмотрите его pid и прибьёте через kill. Подобных подключений можно много открыть на разные локальные порты с разных удалённых серверов.
#linux #ssh# apt install sslh
Далее запускаем:
# sslh-select -f --listen 0.0.0.0:443 \
--tls 127.0.0.1:443 \
--ssh 127.0.0.1:22 \
--openvpn 127.0.0.1:1194
Теперь, если зайти браузером на сервер, то запрос будет перенаправлен на 443 порт веб сервера, если SSH клиентом, то на 22-й порт, если OpenVPN клиентом, то на дефолтный 1194 порт openvpn сервера.
То же самое через Docker:
docker run --rm -it sslh:latest \
--listen=0.0.0.0:443 \
--ssh=hostname:22 \
--tls=hostname:443
--openvpn=hostname:1194
Более функциональный вариант через docker-compose. Пример конфига, где трафик уходит в разные контейнеры:
version: "3"
services:
sslh:
image: sslh:latest
hostname: sslh
ports:
- 443:443
command: --listen=0.0.0.0:443 --tls=nginx:443 --openvpn=openvpn:1194
depends_on:
- nginx
- openvpn
nginx:
image: nginx
openvpn:
image: openvpn
⇨ Исходники
#openvpn #webserver