Вот, от нефиг делать сделал плагин check_iptv, мониторящий трафик через udp proxy, показывает бит-рейт! :)
wget'ает в теч. заданного времени ссылку "http://{HOST}/udp/{UDP}", определяет размер wget-нутого файла и определяет средний бит-рейт
Если wget-нутый файл нулевой, то стрима нет.
Мне более и не надо, и оч. наглядно оказалось.
Канал если на стримере упал, то он и не вещается в сеть. А если картинки или звука нет, то у меня такое за 3-года если и было, то не по вине стримеров - а именно так вещали источники.
в services прописываем check_iptv!{HOST}!{UDP}!, например check_iptv!10.10.10.10:14444!239.1.1.1:1234!
#!/bin/sh
#!/bin/sh
### CHECK HTTP STREAM through UDPXY###
if [ -z $1 ] || [ -z $2 ]; then
echo "Check IPTV stream through UDP PROXY for Nagios"
echo "Downloaded URL with WGET during defined TIME, analyse SIZE downloaded file and calculate bitrate"
echo "URL have next form: 'http://<UDP_PROXY_HOST:PORT>/udp/<MULTICAST_GROUP:PORT>'"
echo "Syntax: check_iptv <UDP_PROXY_HOST:PORT> <MULTICAST_GROUP:PORT> <THRESHOLD_MAX> <THRESHOLD_MIN> <TIME>"
echo " <UDP_PROXY_HOST:PORT> - UDP Proxy host (required)"
echo " <MULTICAST_GROUP:PORT> - Multicast group (required)"
echo " <THRESHOLD_MAX> - Threshold MAX, Mbit/s, for WARNING code in Nagios, default 6Mbit/s (optional)"
echo " <THRESHOLD_MIN> - Threshold Min, Kbit/s, for WARNING code in Nagios, default 500Kbit/s (optional)"
echo " <TIME> - Downloaded time, second, default 5 seconds (optional)"
exit 3
fi
host=$1
udp_host=$2
url="http://$host/udp/$udp_host"
#echo $url
tmp_file="/tmp/check_$udp_host"
#command="/usr/bin/curl $url | head -100 > $tmp_file"
if [ -z $5 ]; then
time=5
else
time=$5
fi
if [ -z $3 ]; then
threshold_max_mbit=6
else
threshold_max_mbit=$3
fi
if [ -z $4 ]; then
threshold_min_kbit=500
else
threshold_min_kbit=$4
fi
let threshold_bytes_max=($threshold_max_mbit*1024*1024)/8*$time
let threshold_bytes_min=($threshold_min_kbit*1024)/8*$time
#echo $threshold_bytes_min
command="/usr/bin/wget -O $tmp_file $url"
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
#echo "/usr/bin/curl $url | head -100 > $tmp_file"
($command > /dev/null)&
pid=$!
sleep $time
kill -9 $pid
s=`stat -c %s $tmp_file`
#let s=$s*8/1024/1024/$time
s_mbit=`expr \( $s \* 8 \) \* 100 / 1024 / 1024 / $time | sed 's/..$/.&/'`
if [ $s = 0 ]; then
echo $s_mbit"Mbit/s - http://$host/udp/$udp_host"
exit $STATE_CRITICAL
fi
if [ $s -gt $threshold_bytes_max ] || [ $s -lt $threshold_bytes_min ]; then
echo $s_mbit"Mbit/s - http://$host/udp/$udp_host"
exit $STATE_WARNING
fi
if [ $s -gt 0 ]; then
echo $s_mbit"Mbit/s - http://$host/udp/$udp_host"
exit $STATE_OK
else
echo "$s - UNKNOWN"
exit $STATE_UNKNOWN
fi
rm -Rf $tmp_file