peektoseen Posted May 31, 2012 Posted May 31, 2012 Привет. Есть какие-нибудь идеи по мониторингу наличия каналов IPTV (multicast потоки)? Хочу к nagios'у прикрутить. Может VLC может как-то запускать поток и если потока нет - говорить об этом? Каналов ~80. Вставить ник Quote
s.lobanov Posted May 31, 2012 Posted May 31, 2012 как-то запускать можно даже iperf Вставить ник Quote
alexmern Posted May 31, 2012 Posted May 31, 2012 http://www.netup.tv/ru-RU/iptvprobe.php Вставить ник Quote
peektoseen Posted May 31, 2012 Author Posted May 31, 2012 http://www.netup.tv/...U/iptvprobe.php Попробую посмотреть, но мне кажется, что оно умеет только графики рисовать, забирая данные по SNMP. Вставить ник Quote
vurd Posted May 31, 2012 Posted May 31, 2012 http://habrahabr.ru/post/66351/ Здесь есть некоторые наработки. Плюс вот кусок на php. Ловит кодированные, не идушие каналы. $channel = "udp://@230.0.0.1:1234"; //Формируем имя файла $group = explode("@",$channel); $group = explode('.',str_replace(':','.',$group[1])); $filepath = "/tmp/{$group[0]}-{$group[1]}-{$group[2]}-{$group[3]}-{$group[4]}.avi"; //Записываем поток в файл exec("cvlc $channel --daemon --sout '#standard{access=file,dst=\"$filepath\",mux=ts}' &> /dev/null"); sleep(20); //за 20 секунд точно должна произойти подписка exec("killall -9 vlc"); if (filesize($filepath) > 100) { //Канал работает echo "[DEBUG] Проверка для канала {$group[0]}.{$group[1]}.{$group[2]}.{$group[3]}:{$group[4]} успешна.\n"; } else { //Канал не работает echo "[DEBUG] Проверка для канала {$group[0]}.{$group[1]}.{$group[2]}.{$group[3]}:{$group[4]} обнаружила отутсвие вещания.\n"; } exec("rm -f $filepath"); Вставить ник Quote
agr Posted May 31, 2012 Posted May 31, 2012 http://www.netup.tv/...U/iptvprobe.php Попробую посмотреть, но мне кажется, что оно умеет только графики рисовать, забирая данные по SNMP. Оно не по SNMP работает. Оно само принимает поток, анализирует и складывает статистику в мускульную базу. Вы можете написать плагин к нагиосу, который обращается к базе и исходя из полученной инфы выдает алерты. Вставить ник Quote
Ilya Evseev Posted June 2, 2012 Posted June 2, 2012 Может VLC может как-то запускать поток и если потока нет - говорить об этом? Я бы запускал VLC секунд на 30 и через tcpdump проверял, идёт ли к нему мультикастовый udp-поток. Вставить ник Quote
Magnum72 Posted June 2, 2012 Posted June 2, 2012 У меня клиентское приложение обучено сообщать о невозможности открыть поток. Вставить ник Quote
Ivan_83 Posted June 2, 2012 Posted June 2, 2012 Я бы запускал VLC секунд на 30 и через tcpdump проверял, идёт ли к нему мультикастовый udp-поток. Для подписки на мультикаст можно и на перле скрипт накатать строчек на 50, не больше. Вставить ник Quote
-Ars- Posted June 2, 2012 Posted June 2, 2012 Подписываться на мультикаст можно и iperf- ом, тогда еще проще ;-) Вставить ник Quote
vurd Posted June 3, 2012 Posted June 3, 2012 Интересно как вы посмотрите идет ли сама картинка, работает ли cam... Вставить ник Quote
-Ars- Posted June 3, 2012 Posted June 3, 2012 Интересно как вы посмотрите идет ли сама картинка, работает ли cam... Нету в техзадании :) Вставить ник Quote
agr Posted June 3, 2012 Posted June 3, 2012 я подписываюсь на группы простеньким скриптом #!/usr/bin/perl -w use strict; use IO::Socket::Multicast; if($#ARGV<1){ print "Usage: igmp_join <ifname> <group ip>\n"; exit 1; } my $mcast_address=$ARGV[1]; #"239.32.1.67"; my $mcast_port=1100; my $mcast_interface=$ARGV[0]; #"eth1.81"; my $mcast_ttl=10; my $s = IO::Socket::Multicast->new(PeerDest=>$mcast_address, PeerPort=>$mcast_port); $s->mcast_if($mcast_interface); $s->mcast_add($mcast_address,$mcast_interface); #$s->mcast_ttl($mcast_ttl); <STDIN>; exit 2; Вставить ник Quote
Ilya Evseev Posted June 3, 2012 Posted June 3, 2012 я подписываюсь на группы простеньким скриптом #!/usr/bin/perl -w use strict; use IO::Socket::Multicast; if($#ARGV<1){ print "Usage: igmp_join <ifname> <group ip>\n"; exit 1; } Его можно сделать ещё проще, если написать die "Usage: ..." if @ARGV != 2; Кроме того, не очень понятно, как себя поведет <STDIN> на двоичном потоке или если потока нет вообще. Не правильнее ли использовать IO::Select? Вставить ник Quote
agr Posted June 3, 2012 Posted June 3, 2012 Его можно сделать ещё проще, если написать die "Usage: ..." if @ARGV != 2; это дело вкуса, лень сейчас искать ту аббревиатуру про перл, которая говорит, что одно и тоже можно сделать разными способами Кроме того, не очень понятно, как себя поведет <STDIN> на двоичном потоке или если потока нет вообще. Не правильнее ли использовать IO::Select? не понял о чем вы ? <stdin> там стоит, чтобы скрипт прерывался после нажатия Enter. Вставить ник Quote
Ilya Evseev Posted June 3, 2012 Posted June 3, 2012 не понял о чем вы ? <stdin> там стоит, чтобы скрипт прерывался после нажатия Enter. Это я стормозил. Лето, авитаминоз. Вставить ник Quote
pchol Posted June 11, 2012 Posted June 11, 2012 А для мониторинга состояния есть еще такая штука Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.