mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
78bb6f750b
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.
90 lines
2.0 KiB
Bash
Executable File
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
|
|
|