Давно хотел поделиться с миром своими наработками в области мониторинга ресиверов PBI (в частности DCH 4000P 42S2)
Эти ресиверы являются очень популярными из-за своей дешевизны (с неплохим при этом качеством), и используются многими провайдерами для IPTV, поэтому надеюсь для них эта статья, где я постараюсь рассказать как можно мониторить уровень сигнала на ресивере (чтобы замечать проблемы вовремя и успешно их устранять) окажется полезной.
Ресиверы PBI поддерживают SNMP с дефолтным комьюнити public и есть oid'ы который позволяет вычислить уровень сигнала, битрейт потока и т.п. полезные значения
все они находятся в этой ветке: 1.3.6.1.4.1.1070.3.1.1.104.1.1
Сверяя эти данные с данными из HDMS получаем что
в оиде SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.6.0 или по другому .1.3.6.1.4.1.1070.3.1.1.104.1.1.6.0 хранит число отвечающее за уровень сигнала (Strength dBm) умноженное на 10, и т.д.
Аналогично получаем что .1.3.6.1.4.1.1070.3.1.1.104.1.1.8.0 отвечает за уровень C/No в dB умноженное на 10, .1.3.6.1.4.1.1070.3.1.1.104.1.1.9.0 за Eb/No умноженное на 10.
Оиды заканчивающиеся на .3.0, .4.0, .5.0 отвечают за битрейт потока.
С оидом оканчивающимся на .7.0 и отвечающим за BER оказалось немного сложнее. Он возвращал либо «8» либо число например «1006». Так вот 1006 это означало 10^6.
После этого анализа исходных данных попробуем нарисовать конфиг для mrtg-шки, примерно таким образом
файл get_strength_and_ber.pl получился вот такого содержания.
И вот результат работы этой системы можно наблюдать на этом скриншоте (специально выбран день «поинтересней») Для каждого ресивера выводится в один ряд три картинки — Signal Strength и BER, C/No и Eb/No и картинка с битрейтом на тюнере.

Вчера весь день очень сильно валил снег и вот результат налицо — на некоторых ресиверах даже срывало полностью картинку.
Эти ресиверы являются очень популярными из-за своей дешевизны (с неплохим при этом качеством), и используются многими провайдерами для IPTV, поэтому надеюсь для них эта статья, где я постараюсь рассказать как можно мониторить уровень сигнала на ресивере (чтобы замечать проблемы вовремя и успешно их устранять) окажется полезной.
Ресиверы PBI поддерживают SNMP с дефолтным комьюнити public и есть oid'ы который позволяет вычислить уровень сигнала, битрейт потока и т.п. полезные значения
все они находятся в этой ветке: 1.3.6.1.4.1.1070.3.1.1.104.1.1
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.1.0 = INTEGER: 1
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.2.0 = INTEGER: 188
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.3.0 = INTEGER: 38014032
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.4.0 = INTEGER: 32122864
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.5.0 = INTEGER: 32122864
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.6.0 = INTEGER: 630
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.7.0 = INTEGER: 8
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.8.0 = INTEGER: 106
SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.9.0 = INTEGER: 76
Сверяя эти данные с данными из HDMS получаем что
в оиде SNMPv2-SMI::enterprises.1070.3.1.1.104.1.1.6.0 или по другому .1.3.6.1.4.1.1070.3.1.1.104.1.1.6.0 хранит число отвечающее за уровень сигнала (Strength dBm) умноженное на 10, и т.д.
Аналогично получаем что .1.3.6.1.4.1.1070.3.1.1.104.1.1.8.0 отвечает за уровень C/No в dB умноженное на 10, .1.3.6.1.4.1.1070.3.1.1.104.1.1.9.0 за Eb/No умноженное на 10.
Оиды заканчивающиеся на .3.0, .4.0, .5.0 отвечают за битрейт потока.
С оидом оканчивающимся на .7.0 и отвечающим за BER оказалось немного сложнее. Он возвращал либо «8» либо число например «1006». Так вот 1006 это означало 10^6.
После этого анализа исходных данных попробуем нарисовать конфиг для mrtg-шки, примерно таким образом
Target[receiver_lvl_233]: 1.3.6.1.4.1.1070.3.1.1.104.1.1.8.0&.1.3.6.1.4.1.1070.3.1.1.104.1.1.9.0:public@rcvr_ip
Directory[receiver_lvl_233]: receiver233
MaxBytes[receiver_lvl_233]: 10000
Options[receiver_lvl_233]: growright, gauge, nopercent, integer
Ylegend[receiver_lvl_233]: signal level
Shortlegend[receiver_lvl_233]: / 10 dB
LegendI[receiver_lvl_233]: Eb/No
LegendO[receiver_lvl_233]: C/No
Title[receiver_lvl_233]: Analysis for signal level
PageTop[receiver_lvl_233]: <H1>Analysis for [C|Eb]/No level </H1>
Target[receiver_rate_233]: 1.3.6.1.4.1.1070.3.1.1.104.1.1.3.0&.1.3.6.1.4.1.1070.3.1.1.104.1.1.4.0:public@rcvr_ip
Directory[receiver_rate_233]: receiver233
MaxBytes[receiver_rate_233]: 1000000000
Options[receiver_rate_233]: growright, gauge, nopercent, integer
Ylegend[receiver_rate_233]: bps
Shortlegend[receiver_rate_233]: bps
LegendI[receiver_rate_233]: total
LegendO[receiver_rate_233]: valid
Title[receiver_rate_233]: bitrate
PageTop[receiver_rate_233]: <H1>Analysis for bitrate </H1>
Target[receiver_ber_233]: `/home/ibz/iptv.watchdog/mrtg/get_strength_and_ber.pl public@rcvr_ip`
Directory[receiver_ber_233]: receiver233
MaxBytes[receiver_ber_233]: 1000000000
Options[receiver_ber_233]: growright, gauge, nopercent, integer
Ylegend[receiver_ber_233]: value
Shortlegend[receiver_ber_233]: value
LegendI[receiver_ber_233]: Strength (dBm)
LegendO[receiver_ber_233]: BER
Title[receiver_ber_233]: Strength (dBm)
PageTop[receiver_ber_233]: <H1>Analysis for strength and errors </H1>
файл get_strength_and_ber.pl получился вот такого содержания.
#!/usr/bin/perl
$ip=$ARGV[0];
$ber=`snmpget -v1 -Ofn -c private $ip 1.3.6.1.4.1.1070.3.1.1.104.1.1.7.0| awk '{print \$4}'`;
chomp $ber;
$str=`snmpget -v1 -Ofn -c private $ip 1.3.6.1.4.1.1070.3.1.1.104.1.1.6.0| awk '{print \$4}'`;
chomp $str;
if($ber>1000)
{
$r = $ber % 10;
$ber = int($ber/10);
$ber = ($ber/100)*(10**(8-$r));
}
else
{
$ber = 0;
}
print "$str\n$ber\nunknown\nPBI-$ip\n";
И вот результат работы этой системы можно наблюдать на этом скриншоте (специально выбран день «поинтересней») Для каждого ресивера выводится в один ряд три картинки — Signal Strength и BER, C/No и Eb/No и картинка с битрейтом на тюнере.

Вчера весь день очень сильно валил снег и вот результат налицо — на некоторых ресиверах даже срывало полностью картинку.