Jump to content
Калькуляторы

Как считать подписчиков ?

Есть сеть с трансляцией IP-TV. Сеть состоит из 2950 и 3550. Как посчитать сколько какой канал (multicast группу) смотрит ? Можно конечно обходить все cisco и смотреть на каждой, но мне кажется это не самый лучший вариант.

Share this post


Link to post
Share on other sites

Никак, до тех пор пока stb и телевизор не станут единым устройством. Часто вылкючают телевизор, при этом не выключают srt -> поток идёт, результаты становятся неадекватными.

Share this post


Link to post
Share on other sites

Никак, до тех пор пока stb и телевизор не станут единым устройством. Часто вылкючают телевизор, при этом не выключают srt -> поток идёт, результаты становятся неадекватными.

Я например уже принципиально не выключаю STB, более того STB бывают живут своей жизнью (Dlink даже после выключения запрашивает мультикаст, Synet выключается, и включается снова, MAG это вообще тормоз #1 никогда не понятно уже выключился, или еще собирается).

 

Но по факту самый эффективный способ обход по SNMP коммутаторов доступа, мы так делаем, процесс не слишком длительный и достаточно точный в пределах вышеназванных обстоятельств.

Ну а CASом с обратной связью снимать статистику может только "интегратор" рассчитывающий попилить деньги сударей с "Нижнего Тагила/Норильска".

Share this post


Link to post
Share on other sites

Не понял в чем проблема CAS-а с обратной связью? Раз ключи запрашиваются, значит поток идет.

Share this post


Link to post
Share on other sites

Но по факту самый эффективный способ обход по SNMP коммутаторов доступа, мы так делаем,

Подскажите нужный OID

Share this post


Link to post
Share on other sites

Графики строит munin

]# cat tvsub
#!/bin/bash
if [ "$1" = "config" ]; then
echo 'graph_title  IPTV Subscribers Znamensk TV'
echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel users'
echo 'graph_category network'
echo 'graph_scale yes'
echo "subtv.label Subscribers All city"
echo "subtv.draw AREA"
echo "subtv.min 0"
echo "subtvz.label Subscribers in Ahxxx"
echo "subtvz.draw LINE2"
echo "subtvz.min 0"
echo "subtva.label Subscribers in Znxxx"
echo "subtva.draw LINE2"
echo "subtva.min 0"
exit 0
fi

echo -n "subtv.value "
echo `cat /var/log/stat.igmp|cut -f18-21 -d.|cut -f1 -d =|grep 10.|sort|uniq|wc -l`
echo -n "subtvz.value "
echo `cat /var/log/stat.igmp|cut -f18-21 -d.|cut -f1 -d =|grep 10.8.|sort|uniq|wc -l`
echo -n "subtva.value "
echo `cat /var/log/stat.igmp|cut -f18-21 -d.|cut -f1 -d =|grep 10.7.|sort|uniq|wc -l`

в кроне :

 

0,15,30,45 * * * * cigmp

 

сам скрипт:

 

cat cigmp
#! /bin/bash
#dkink.sh

check_sw_name ()
{
desc=$(snmpgetnext -v 2c  -c public 10.7.64.$i  system|cut -f4 -d:|cut -c 2-7)
check_sw_model $desc
}

check_sw_model ()
{
case $1 in
'ES-210' ) ;;#zyxel $i;;
'D-Link' ) check_swd_mod $i;;
'DGS-31' ) ;;#24tg $i;;
'PLANET' ) ;;#planet $i;;
esac

}

check_swd_mod ()
{
# уточняем модели коммутатора из серии 3200
desc_d=$(snmpgetnext -v 2c  -c public 10.7.64.$1  system|cut -f4 -d:|cut -c 9-19)
sel_dl_conf $desc_d
}
sel_dl_conf ()
{
case $1 in
DES-3200-10 )dl_10_cfg;;
DES-3200-18 )dl_18_cfg;;
DES-3200-26 )dl_26_cfg;;
esac
#exit 0
}

dl_10_cfg ()

{
#echo '10.7.64.'$i
cm=$(snmpwalk -v 2c -c xyz 10.7.64.$i 1.3.6.1.4.1.171.11.113.1.1.2.7.13.1.4|cut -f2 -d=|cut -c 2-2)
cm=$(echo $cm|cut -c 1-1)
case $cm in
I ) snmpwalk -v 2c -c xyz 10.7.64.$i 1.3.6.1.4.1.171.11.113.1.1.2.7.13.1.4;;
esac
#exit 0
}
dl_18_cfg ()
{
#echo '10.7.64.'$i
cm=$(snmpwalk -v 2c -c xyz 10.7.64.$i 1.3.6.1.4.1.171.11.113.1.2.2.7.13.1.4|cut -f2 -d=|cut -c 2-2)
cm=$(echo $cm|cut -c 1-1)
case $cm in
I ) snmpwalk -v 2c -c zyz 10.7.64.$i 1.3.6.1.4.1.171.11.113.1.2.2.7.13.1.4;;
esac
}

dl_26_cfg ()
{
#echo '10.7.64.'$i
cm=$(snmpwalk -v 2c -c xyz 10.7.64.$i 1.3.6.1.4.1.171.11.113.1.5.2.7.13.1.4|cut -f2 -d=|cut -c 2-2)
cm=$(echo $cm|cut -c 1-1)
case $cm in
I ) snmpwalk -v 2c -c xyz 10.7.64.$i 1.3.6.1.4.1.171.11.113.1.5.2.7.13.1.4;;
esac
}



for i in $(seq 6 161)
do
dup=$(ping -c 1 10.7.64.$i|grep transmitted|cut -f2 -d,|cut -c 2-2)
echo '10.7.64.'$i
case $i in
41 ) continue;;
42 ) continue;;
43 ) continue;;
143 ) continue;;
159 ) continue;;
esac

case $dup  in
1 ) check_sw_name;;

0 ) ;;#echo 'host 10.7.64.'$i' - down';;
esac
done
#rm -f /var/log/stat.igmp
#cp  /var/log/stat.tmp /var/log/stat.igmp
exit 0


Edited by garycat

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this