#!/bin/sh # # Plugin to monitor icecast2 streams / listeners # # Contributed by drew Roberts # # based on the postfix_mailqueue plugin as per below # # Plugin to monitor postfix mail spools # # Contributed by Nicolai Langfeldt # # $Log$ # Revision 1.0 2008/07/04 16:02:36 zotz # Initial work # # #%# family=auto #%# capabilities=autoconf # Can be set via environment, but default is /var/spool/postfix ICEDIR=${icedir:-/var/www/rrd/logs/stream_stats/} case $1 in autoconf|detect) if [ -d $ICEDIR/ ] ; then echo yes else echo "no (icedir not found)" fi exit 0 ;; config) cat <<'EOF' graph_title Icecast2 Stream Listeners graph_args --base 1000 -l 0 graph_vlabel Listeners for Streams graph_category streaming cool_ogg.label cool_ogg cool_ogg.draw AREA cool_ogg.type GAUGE cool_mp3.label cool_mp3 cool_mp3.draw STACK cool_mp3.type GAGUE jamz_ogg.label jamz_ogg jamz_ogg.draw STACK jamz_ogg.type GAGUE jamz_mp3.label jamz_mp3 jamz_mp3.draw STACK jamz_mp3.type GAGUE joy_ogg.label joy_ogg joy_ogg.draw STACK joy_ogg.type GAGUE joy_mp3.label joy_mp3 joy_mp3.draw STACK joy_mp3.type GAGUE y_ogg.label y_ogg y_ogg.draw STACK y_ogg.type GAGUE y_mp3.label y_mp3 y_mp3.draw STACK y_mp3.type GAGUE EOF exit 0;; esac cd $ICEDIR >/dev/null 2>/dev/null || { echo "# Cannot cd to $ICEDIR" exit 1 } /usr/bin/curl -s localhost:7144/status2.xsl > /tmp/ice.txt /usr/bin/tail -n 1 /tmp/ice.txt > /tmp/ice1.txt awk 'BEGIN {FS=","} {tot = 0 ; i = (NF-1)/6 ; j=1 ; while (j <= i) {tot = (tot + $(((j-1)*6)+4)) ; print $(((j-1)*6)+1), ":", $(((j-1)*6)+4) > "/tmp/ice2.txt" ; j++}; print "total :", tot >> "/tmp/ice2.txt"} ' /tmp/ice1.txt # Cool ogg stream grep cool.ogg /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then coologg="0" else coologg=`grep cool.ogg /tmp/ice2.txt | cut -d ":" -f 2 - ` coologg=$(($coologg+0)) fi #echo $coologg # Cool mp3 stream grep coolmp3 /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then coolmp3="0" else coolmp3=`grep coolmp3 /tmp/ice2.txt | cut -d ":" -f 2 - ` coolmp3=$(($coolmp3+0)) fi #echo $coolmp3 # Jamz ogg stream grep jamz.ogg /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then jamzogg="0" else jamzogg=`grep jamz.ogg /tmp/ice2.txt | cut -d ":" -f 2 - ` jamzogg=$(($jamzogg+0)) fi #echo $jamzogg # Jamz mp3 stream grep jamzmp3 /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then jamzmp3="0" else jamzmp3=`grep jamzmp3 /tmp/ice2.txt | cut -d ":" -f 2 - ` jamzmp3=$(($jamzmp3+0)) fi #echo $jamzmp3 # Joy ogg stream grep joy.ogg /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then joyogg="0" else joyogg=`grep joy.ogg /tmp/ice2.txt | cut -d ":" -f 2 - ` joyogg=$(($joyogg+0)) fi #echo $joyogg # Joy mp3 stream grep joymp3 /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then joymp3="0" else joymp3=`grep joymp3 /tmp/ice2.txt | cut -d ":" -f 2 - ` joymp3=$(($joymp3+0)) fi #echo $joymp3 # Y ogg stream grep "/y.ogg" /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then yogg="0" else yogg=`grep "/y.ogg" /tmp/ice2.txt | cut -d ":" -f 2 - ` yogg=$(($yogg+0)) fi #echo $yogg # Y mp3 stream grep "/ymp3" /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then ymp3="0" else ymp3=`grep "/ymp3" /tmp/ice2.txt | cut -d ":" -f 2 - ` ymp3=$(($ymp3+0)) fi #echo $ymp3 # total streams grep total /tmp/ice2.txt > /dev/null 2>&1 if [ "$?" -ne "0" ]; then totals="0" else totals=`grep total /tmp/ice2.txt | cut -d ":" -f 2 - ` totals=$(($totals+0)) fi #echo $totals # output=`echo $coologg:$coolmp3:$jamzogg:$jamzmp3:$joyogg:$joymp3:$yogg:$ymp3:$totals` cat <