diff --git a/plugins/network/hfsc_sep b/plugins/network/hfsc_sep index 40e3a413..114458d6 100755 --- a/plugins/network/hfsc_sep +++ b/plugins/network/hfsc_sep @@ -1,189 +1,189 @@ -#!/bin/sh -# -# Munin plugin for HFSC Traffic Shaping Statistics UP/DOWN -# -# It shows the download and upload statistic graph of a used net bandwidth per a user. -# -# This plugin was tailored to the HFSC solution -# presented at http://www.elessar.one.pl/article_kernel2.6.php -# -# You can find the plugin description and the installation notes here: -# http://www.elessar.one.pl/article_munin.php -# -### -# Written by Rafal Rajs -# Date: 2007/06/19 -# Email: elessar1@poczta.wp.pl -# WWW: http://www.elessar.one.pl -### - -# path to the file with global defs -. /etc/scripts/globals - -# imported from HFSC script -# set class numbers - -N_CLASS_D_1=70 -N_CLASS_D_2=100 -N_CLASS_U_1=130 -N_CLASS_U_2=160 -SH_TMP="/etc/scripts/tmp1.txt" - -if [ "$1" = "config" ]; then - - echo "graph_title HFSC Traffic Shaping Stats - UP/DOWN" - echo 'graph_vlabel bytes DOWN(-)/UP(+) per ${graph_period}' - echo 'graph_width 450' - echo 'graph_category network' - - j=1 - - while [ $j -le $L_USERS ] - do - echo "${USERNAMES[${j}]}_down.label ${USERNAMES[${j}]}" - echo "${USERNAMES[${j}]}_down.type COUNTER" - echo "${USERNAMES[${j}]}_down.graph no" - - if [ $j == 1 ]; then - echo "${USERNAMES[${j}]}_down.draw AREA" - else - echo "${USERNAMES[${j}]}_down.draw STACK" - fi; - - echo "${USERNAMES[${j}]}_down.info Stats for ${USERNAMES[${j}]} - ${USER_IP[${j}]}" - echo "${USERNAMES[${j}]}_down.min 0" - echo "${USERNAMES[${j}]}_down.max 130000" - - echo "${USERNAMES[${j}]}_up.label ${USERNAMES[${j}]}" - echo "${USERNAMES[${j}]}_up.type COUNTER" - echo "${USERNAMES[${j}]}_up.negative ${USERNAMES[${j}]}_down" - - if [ $j == 1 ]; then - echo "${USERNAMES[${j}]}_up.draw AREA" - else - echo "${USERNAMES[${j}]}_up.draw STACK" - fi; - - echo "${USERNAMES[${j}]}_up.info Stats for ${USERNAMES[${j}]} - ${USER_IP[${j}]}" - echo "${USERNAMES[${j}]}_up.min 0" - echo "${USERNAMES[${j}]}_up.max 30000" - - - j=$[$j+1] - - done; - -#customized colours - echo 'Serwer_down.colour 000000' - echo 'Serwer_up.colour 000000' - - exit 0 - -fi; - -#### DOWNLOAD - -temp1=`/sbin/tc -s class show dev imq0 > $SH_TMP` - -while read line -do - test_hfsc=`echo $line | grep "hfsc"` - - j=1 - - while [ $j -le $L_USERS ] - do - case $test_hfsc in - - *hfsc[\ ]1:$[$N_CLASS_D_1+$j]*) - # check N_CLASS_D_1 stats for every user - read line - temp1=`echo $line | awk '{ print $2; }'` - STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] -# echo "N_CLASS_D_1="$temp1 -# echo "N_CLASS_D_1_SUM "$j" ="${STAT_USER[$j]} - ;; - *hfsc[\ ]1:$[$N_CLASS_D_2+$j]*) - # check N_CLASS_D_2 stats for every user - read line - temp1=`echo $line | awk '{ print $2; }'` - STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] -# echo "N_CLASS_D_2="$temp1 -# echo "N_CLASS_D_2_SUM "$j" ="${STAT_USER[$j]} - ;; - esac - - j=$[$j+1] - - done; - -done < $SH_TMP - - -#### - -j=1 -while [ $j -le $L_USERS ] -do - echo ${USERNAMES[${j}]}"_down.value "${STAT_USER[$j]} - j=$[$j+1] -done; - -#reset values - -j=1 -while [ $j -le $L_USERS ] -do - STAT_USER[$j]=0 - j=$[$j+1] -done; - -#### UPLOAD - -temp1=`/sbin/tc -s class show dev imq1 > $SH_TMP` - -while read line -do - test_hfsc=`echo $line | grep "hfsc"` - - j=1 - - while [ $j -le $L_USERS ] - do - case $test_hfsc in - - *hfsc[\ ]1:$[$N_CLASS_U_1+$j]*) - # check N_CLASS_U_1 stats for every user - read line - temp1=`echo $line | awk '{ print $2; }'` - STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] -# echo "N_CLASS_U_1="$temp1 -# echo "N_CLASS_U_1_SUM "$j" ="${STAT_USER[$j]} - ;; - *hfsc[\ ]1:$[$N_CLASS_U_2+$j]*) - # check N_CLASS_U_2 stats for every user - read line - temp1=`echo $line | awk '{ print $2; }'` - STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] -# echo "N_CLASS_U_2="$temp1 -# echo "N_CLASS_U_2_SUM "$j" ="${STAT_USER[$j]} - ;; - esac - - j=$[$j+1] - - done; - -done < $SH_TMP - -j=1 -while [ $j -le $L_USERS ] -do - echo ${USERNAMES[${j}]}"_up.value "${STAT_USER[$j]} - j=$[$j+1] -done; - - -## clean temp file -temp1=`echo "" > $SH_TMP` - +#!/bin/bash +# +# Munin plugin for HFSC Traffic Shaping Statistics UP/DOWN +# +# It shows the download and upload statistic graph of a used net bandwidth per a user. +# +# This plugin was tailored to the HFSC solution +# presented at http://www.elessar.one.pl/article_kernel2.6.php +# +# You can find the plugin description and the installation notes here: +# http://www.elessar.one.pl/article_munin.php +# +### +# Written by Rafal Rajs +# Date: 2007/06/19 +# Email: elessar1@poczta.wp.pl +# WWW: http://www.elessar.one.pl +### + +# path to the file with global defs +. /etc/scripts/globals + +# imported from HFSC script +# set class numbers + +N_CLASS_D_1=70 +N_CLASS_D_2=100 +N_CLASS_U_1=130 +N_CLASS_U_2=160 +SH_TMP="/etc/scripts/tmp1.txt" + +if [ "$1" = "config" ]; then + + echo "graph_title HFSC Traffic Shaping Stats - UP/DOWN" + echo 'graph_vlabel bytes DOWN(-)/UP(+) per ${graph_period}' + echo 'graph_width 450' + echo 'graph_category network' + + j=1 + + while [ $j -le $L_USERS ] + do + echo "${USERNAMES[${j}]}_down.label ${USERNAMES[${j}]}" + echo "${USERNAMES[${j}]}_down.type COUNTER" + echo "${USERNAMES[${j}]}_down.graph no" + + if [ $j == 1 ]; then + echo "${USERNAMES[${j}]}_down.draw AREA" + else + echo "${USERNAMES[${j}]}_down.draw STACK" + fi; + + echo "${USERNAMES[${j}]}_down.info Stats for ${USERNAMES[${j}]} - ${USER_IP[${j}]}" + echo "${USERNAMES[${j}]}_down.min 0" + echo "${USERNAMES[${j}]}_down.max 130000" + + echo "${USERNAMES[${j}]}_up.label ${USERNAMES[${j}]}" + echo "${USERNAMES[${j}]}_up.type COUNTER" + echo "${USERNAMES[${j}]}_up.negative ${USERNAMES[${j}]}_down" + + if [ $j == 1 ]; then + echo "${USERNAMES[${j}]}_up.draw AREA" + else + echo "${USERNAMES[${j}]}_up.draw STACK" + fi; + + echo "${USERNAMES[${j}]}_up.info Stats for ${USERNAMES[${j}]} - ${USER_IP[${j}]}" + echo "${USERNAMES[${j}]}_up.min 0" + echo "${USERNAMES[${j}]}_up.max 30000" + + + j=$[$j+1] + + done; + +#customized colours + echo 'Serwer_down.colour 000000' + echo 'Serwer_up.colour 000000' + + exit 0 + +fi; + +#### DOWNLOAD + +temp1=`/sbin/tc -s class show dev imq0 > $SH_TMP` + +while read line +do + test_hfsc=`echo $line | grep "hfsc"` + + j=1 + + while [ $j -le $L_USERS ] + do + case $test_hfsc in + + *hfsc[\ ]1:$[$N_CLASS_D_1+$j]*) + # check N_CLASS_D_1 stats for every user + read line + temp1=`echo $line | awk '{ print $2; }'` + STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] +# echo "N_CLASS_D_1="$temp1 +# echo "N_CLASS_D_1_SUM "$j" ="${STAT_USER[$j]} + ;; + *hfsc[\ ]1:$[$N_CLASS_D_2+$j]*) + # check N_CLASS_D_2 stats for every user + read line + temp1=`echo $line | awk '{ print $2; }'` + STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] +# echo "N_CLASS_D_2="$temp1 +# echo "N_CLASS_D_2_SUM "$j" ="${STAT_USER[$j]} + ;; + esac + + j=$[$j+1] + + done; + +done < $SH_TMP + + +#### + +j=1 +while [ $j -le $L_USERS ] +do + echo ${USERNAMES[${j}]}"_down.value "${STAT_USER[$j]} + j=$[$j+1] +done; + +#reset values + +j=1 +while [ $j -le $L_USERS ] +do + STAT_USER[$j]=0 + j=$[$j+1] +done; + +#### UPLOAD + +temp1=`/sbin/tc -s class show dev imq1 > $SH_TMP` + +while read line +do + test_hfsc=`echo $line | grep "hfsc"` + + j=1 + + while [ $j -le $L_USERS ] + do + case $test_hfsc in + + *hfsc[\ ]1:$[$N_CLASS_U_1+$j]*) + # check N_CLASS_U_1 stats for every user + read line + temp1=`echo $line | awk '{ print $2; }'` + STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] +# echo "N_CLASS_U_1="$temp1 +# echo "N_CLASS_U_1_SUM "$j" ="${STAT_USER[$j]} + ;; + *hfsc[\ ]1:$[$N_CLASS_U_2+$j]*) + # check N_CLASS_U_2 stats for every user + read line + temp1=`echo $line | awk '{ print $2; }'` + STAT_USER[$j]=$[${STAT_USER[$j]}+$temp1] +# echo "N_CLASS_U_2="$temp1 +# echo "N_CLASS_U_2_SUM "$j" ="${STAT_USER[$j]} + ;; + esac + + j=$[$j+1] + + done; + +done < $SH_TMP + +j=1 +while [ $j -le $L_USERS ] +do + echo ${USERNAMES[${j}]}"_up.value "${STAT_USER[$j]} + j=$[$j+1] +done; + + +## clean temp file +temp1=`echo "" > $SH_TMP` +