1#!/bin/sh 2# 3# Plugin to monitor icecast2 streams / listeners 4# 5# Contributed by drew Roberts 6# 7# based on the postfix_mailqueue plugin as per below 8# 9# Plugin to monitor postfix mail spools 10# 11# Contributed by Nicolai Langfeldt 12# 13# $Log$ 14# Revision 1.0 2008/07/04 16:02:36 zotz 15# Initial work 16 17# 18# 19#%# family=auto 20#%# capabilities=autoconf 21 22# Can be set via environment, but default is /var/spool/postfix 23ICEDIR=${icedir:-/var/www/rrd/logs/stream_stats/} 24 25case $1 in 26 autoconf|detect) 27 if [ -d $ICEDIR/ ] ; then 28 echo yes 29 else 30 echo "no (icedir not found)" 31 fi 32 exit 0 33 ;; 34 config) 35 cat <<'EOF' 36graph_title Icecast2 Stream Listeners 37graph_args --base 1000 -l 0 38graph_vlabel Listeners for Streams 39graph_category streaming 40cool_ogg.label cool_ogg 41cool_ogg.draw AREA 42cool_ogg.type GAUGE 43cool_mp3.label cool_mp3 44cool_mp3.draw STACK 45cool_mp3.type GAGUE 46jamz_ogg.label jamz_ogg 47jamz_ogg.draw STACK 48jamz_ogg.type GAGUE 49jamz_mp3.label jamz_mp3 50jamz_mp3.draw STACK 51jamz_mp3.type GAGUE 52joy_ogg.label joy_ogg 53joy_ogg.draw STACK 54joy_ogg.type GAGUE 55joy_mp3.label joy_mp3 56joy_mp3.draw STACK 57joy_mp3.type GAGUE 58y_ogg.label y_ogg 59y_ogg.draw STACK 60y_ogg.type GAGUE 61y_mp3.label y_mp3 62y_mp3.draw STACK 63y_mp3.type GAGUE 64EOF 65 exit 0;; 66esac 67 68cd $ICEDIR >/dev/null 2>/dev/null || { 69 echo "# Cannot cd to $ICEDIR" 70 exit 1 71} 72 73/usr/bin/curl -s localhost:7144/status2.xsl > /tmp/ice.txt 74/usr/bin/tail -n 1 /tmp/ice.txt > /tmp/ice1.txt 75 76awk '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 77 78# Cool ogg stream 79grep cool.ogg /tmp/ice2.txt > /dev/null 2>&1 80if [ "$?" -ne "0" ]; then 81 coologg="0" 82else 83 coologg=`grep cool.ogg /tmp/ice2.txt | cut -d ":" -f 2 - ` 84 coologg=$(($coologg+0)) 85fi 86#echo $coologg 87 88# Cool mp3 stream 89grep coolmp3 /tmp/ice2.txt > /dev/null 2>&1 90if [ "$?" -ne "0" ]; then 91 coolmp3="0" 92else 93 coolmp3=`grep coolmp3 /tmp/ice2.txt | cut -d ":" -f 2 - ` 94 coolmp3=$(($coolmp3+0)) 95fi 96#echo $coolmp3 97 98# Jamz ogg stream 99grep jamz.ogg /tmp/ice2.txt > /dev/null 2>&1 100if [ "$?" -ne "0" ]; then 101 jamzogg="0" 102else 103 jamzogg=`grep jamz.ogg /tmp/ice2.txt | cut -d ":" -f 2 - ` 104 jamzogg=$(($jamzogg+0)) 105fi 106#echo $jamzogg 107 108# Jamz mp3 stream 109grep jamzmp3 /tmp/ice2.txt > /dev/null 2>&1 110if [ "$?" -ne "0" ]; then 111 jamzmp3="0" 112else 113 jamzmp3=`grep jamzmp3 /tmp/ice2.txt | cut -d ":" -f 2 - ` 114 jamzmp3=$(($jamzmp3+0)) 115fi 116#echo $jamzmp3 117 118# Joy ogg stream 119grep joy.ogg /tmp/ice2.txt > /dev/null 2>&1 120if [ "$?" -ne "0" ]; then 121 joyogg="0" 122else 123 joyogg=`grep joy.ogg /tmp/ice2.txt | cut -d ":" -f 2 - ` 124 joyogg=$(($joyogg+0)) 125fi 126#echo $joyogg 127 128# Joy mp3 stream 129grep joymp3 /tmp/ice2.txt > /dev/null 2>&1 130if [ "$?" -ne "0" ]; then 131 joymp3="0" 132else 133 joymp3=`grep joymp3 /tmp/ice2.txt | cut -d ":" -f 2 - ` 134 joymp3=$(($joymp3+0)) 135fi 136#echo $joymp3 137 138# Y ogg stream 139grep "/y.ogg" /tmp/ice2.txt > /dev/null 2>&1 140if [ "$?" -ne "0" ]; then 141 yogg="0" 142else 143 yogg=`grep "/y.ogg" /tmp/ice2.txt | cut -d ":" -f 2 - ` 144 yogg=$(($yogg+0)) 145fi 146#echo $yogg 147 148# Y mp3 stream 149grep "/ymp3" /tmp/ice2.txt > /dev/null 2>&1 150if [ "$?" -ne "0" ]; then 151 ymp3="0" 152else 153 ymp3=`grep "/ymp3" /tmp/ice2.txt | cut -d ":" -f 2 - ` 154 ymp3=$(($ymp3+0)) 155fi 156#echo $ymp3 157 158# total streams 159grep total /tmp/ice2.txt > /dev/null 2>&1 160if [ "$?" -ne "0" ]; then 161 totals="0" 162else 163 totals=`grep total /tmp/ice2.txt | cut -d ":" -f 2 - ` 164 totals=$(($totals+0)) 165fi 166#echo $totals 167 168# output=`echo $coologg:$coolmp3:$jamzogg:$jamzmp3:$joyogg:$joymp3:$yogg:$ymp3:$totals` 169 170 171cat <<EOF 172cool_ogg.value $coologg 173cool_mp3.value $coolmp3 174jamz_ogg.value $jamzogg 175jamz_mp3.value $jamzmp3 176joy_ogg.value $joyogg 177joy_mp3.value $joymp3 178y_ogg.value $yogg 179y_mp3.value $ymp3 180EOF 181 182