Page 1 of 1

Bandwidth arguments

Posted: Thu Jul 07, 2016 4:58 am
by jjelinek
Hello
I didn't found same question here, but sorry if it is already here or if it is dumb question ;)

We have bandwidth checks with these arguments:
for warning 0.001:,0.001:
for critical 1.9,1.9
It's in Mbits. Idea is to have warning when bandwidth is below 1kbit and critical when it's over 1.9 Mbit.

But it looks like check_rrdtraf doesn't work correctly with that (especially with X: or :X arguments). Is it correct or is there any other way how to set it up?

Thanks in advance
Jakub

Re: Bandwidth arguments

Posted: Thu Jul 07, 2016 12:26 pm
by rkennedy
Looking at the check_rrdtraf plugin, you should be able to modify the section that deals with the warning / critical thresholds -

Code: Select all

    if [ $FILEAGE -gt $MAXAGE ]; then
        echo "WARNING - MRTG log file is older than maximum allowed threshold"
        exit $STATE_WARNING
    elif [ $(($DVALUEIN/${DIV:-1024})) -gt $INCRIT -o $(($DVALUEOUT/${DIV:-1024})) -gt $OUTCRIT ]; then
        echo -n "CRITICAL - Current BW in: $(echo "scale=$SCALE; ($VALUEIN/$SDIVIN)"| bc)"$SLABELIN"bps Out: $(echo "scale=$SCALE; ($VALUEOUT/$S$
        echo -n "|in=$(echo "scale=6; ($VALUEIN/$SDIVIN)"| bc)$SLABELIN""b/s;$INWARN;$INCRIT "
        echo "out=$(echo "scale=6; ($VALUEOUT/$SDIVOUT)"| bc)$SLABELOUT""b/s;$OUTWARN;$OUTCRIT"
        exit $STATE_CRITICAL
    elif [ $(($DVALUEIN/${DIV:-1024})) -gt $INWARN -o $(($DVALUEOUT/${DIV:-1024})) -gt $OUTWARN ]; then
        echo -n "WARNING - Current BW in: $(echo "scale=$SCALE; ($VALUEIN/$SDIVIN)"| bc)"$SLABELIN"bps Out: $(echo "scale=$SCALE; ($VALUEOUT/$SD$
        echo -n "|in=$(echo "scale=6; ($VALUEIN/$SDIVIN)"| bc)$SLABELIN""b/s;$INWARN;$INCRIT "
        echo "out=$(echo "scale=6; ($VALUEOUT/$SDIVOUT)"| bc)$SLABELOUT""b/s;$OUTWARN;$OUTCRIT"
        exit $STATE_WARNING
    else
        echo -n "OK - Current BW in: $(echo "scale=$SCALE; ($VALUEIN/$SDIVIN)"| bc)"$SLABELIN"bps Out: $(echo "scale=$SCALE; ($VALUEOUT/$SDIVOUT$
        echo -n "|in=$(echo "scale=6; ($VALUEIN/$SDIVIN)"| bc)$SLABELIN""b/s;$INWARN;$INCRIT "
        echo "out=$(echo "scale=6; ($VALUEOUT/$SDIVOUT)"| bc)$SLABELOUT""b/s;$OUTWARN;$OUTCRIT"
        exit $STATE_OK
    fi
Which would become something like this -

Code: Select all

    if [ $FILEAGE -gt $MAXAGE ]; then
        echo "WARNING - MRTG log file is older than maximum allowed threshold"
        exit $STATE_WARNING
    elif [ $(($DVALUEIN/${DIV:-1024})) -lt $INCRIT -o $(($DVALUEOUT/${DIV:-1024})) -lt $OUTCRIT ]; then
        echo -n "CRITICAL - Current BW in: $(echo "scale=$SCALE; ($VALUEIN/$SDIVIN)"| bc)"$SLABELIN"bps Out: $(echo "scale=$SCALE; ($VALUEOUT/$S$
        echo -n "|in=$(echo "scale=6; ($VALUEIN/$SDIVIN)"| bc)$SLABELIN""b/s;$INWARN;$INCRIT "
        echo "out=$(echo "scale=6; ($VALUEOUT/$SDIVOUT)"| bc)$SLABELOUT""b/s;$OUTWARN;$OUTCRIT"
        exit $STATE_CRITICAL
    elif [ $(($DVALUEIN/${DIV:-1024})) -lt $INWARN -o $(($DVALUEOUT/${DIV:-1024})) -lt $OUTWARN ]; then
        echo -n "WARNING - Current BW in: $(echo "scale=$SCALE; ($VALUEIN/$SDIVIN)"| bc)"$SLABELIN"bps Out: $(echo "scale=$SCALE; ($VALUEOUT/$SD$
        echo -n "|in=$(echo "scale=6; ($VALUEIN/$SDIVIN)"| bc)$SLABELIN""b/s;$INWARN;$INCRIT "
        echo "out=$(echo "scale=6; ($VALUEOUT/$SDIVOUT)"| bc)$SLABELOUT""b/s;$OUTWARN;$OUTCRIT"
        exit $STATE_WARNING
    else
        echo -n "OK - Current BW in: $(echo "scale=$SCALE; ($VALUEIN/$SDIVIN)"| bc)"$SLABELIN"bps Out: $(echo "scale=$SCALE; ($VALUEOUT/$SDIVOUT$
        echo -n "|in=$(echo "scale=6; ($VALUEIN/$SDIVIN)"| bc)$SLABELIN""b/s;$INWARN;$INCRIT "
        echo "out=$(echo "scale=6; ($VALUEOUT/$SDIVOUT)"| bc)$SLABELOUT""b/s;$OUTWARN;$OUTCRIT"
        exit $STATE_OK
    fi
I just flipped the 'gt' to 'lt' (greater than -> less than). It will probably take some testing in your environment, but should work. Hopefully this is a start! Let us know if you run into any issues.