2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/network/mtr100_
Mike O'Driscoll 78bb6f750b Removing erroneous line from mtr output.
Newer versions of mtr outputs a "Start: <date here>" line which would be
picked up and incorrectly graphed in munin. Adding an additional inverse grep
field to remove this extra line if it is present. Also added case insensitive
flag to the grep.
2015-03-11 11:10:01 -04:00

90 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
#
# Plugin plotting the Percentage of time needed to reach each host on the way to a certain host
# Uses MTR http://www.bitwizard.nl/mtr/ to do the job
#
# Version: 1.0
# Author: tobias.geiger@vido.info
# Please email me bugs/suggestions
#
# Version: 1.1
# Author: charlie@evilforbeginners.com
# changed: munin eats 1 character ds-names. prefix with "hop_"
#
#
# HINT: Needs a bigger TIMEOUT-Value than the default (10) in /etc/munin/plugin-conf.d/munin-node ,
# e.g.:
# [mtr100_*]
# timeout 60
#
#
#
# Parameters:
#
# config (required)
# autoconf (optional - only used by munin-config)
#
# Magic markers (optional - used by munin-config and some installation
# scripts):
#%# family=contrib
#%# capabilities=autoconf
totrace=`basename $0 | sed 's/^mtr100_//g'`
if [ "$1" = "autoconf" ]; then
if ( mtr -nrc 1 localhost 2>/dev/null >/dev/null ); then
echo yes
exit 0
else
if [ $? -eq 127 ]
then
echo "no (mtr program not found - install the mtr(-tiny) package)"
exit 1
else
echo no
exit 1
fi
fi
exit 0
fi
dotrace() {
LC_ALL=C mtr -nrs 1024 -c 5 $totrace | grep -vi -E "^HOST:|^Start:" | LC_ALL=C awk -v C=$1 ' {
label=$2
x=gsub("\\.","_",label)
count=NR
lab[count]=count
name[count]=$2
val[count]=$6
total+=$6
}
END {
for (x=1; x<=count; x++) {
value=(val[x]/total)*100
if ( C != "config" ) { printf "%s.value %2.2f\n","hop_" lab[x],value }
if ( C == "config" ) { print "hop_" lab[x] ".label " name[x] }
if ( C == "config" ) { if ( x == 1 ) { print "hop_" lab[x]".draw AREA" } else { print "hop_" lab[x]".draw STACK" } }
}
}'
}
if [ "$1" = "config" ]; then
echo 'graph_title Traceroute (%) to '$totrace
echo 'graph_args --base 1000 -l 0 -u 100 -r'
echo 'graph_vlabel ms (percentage)'
echo 'graph_category network'
echo 'graph_scale no'
echo 'graph_period second'
echo 'graph_info This graph shows the Percentage needed for each hop on the way to '$totrace
dotrace config;
exit 0
else
dotrace;
fi