--- plugins/node.d.freebsd/if_packets_.in.orig 2014-12-10 15:34:51 UTC +++ plugins/node.d.freebsd/if_packets_.in @@ -0,0 +1,110 @@ +#!@@GOODSH@@ +# -*- sh -*- +# +# Wildcard-plugin to monitor network interfaces. To monitor an +# interface, link if_packets_ to this file. E.g. +# +# ln -s /usr/share/munin/node/plugins-auto/if_packets_ /etc/munin/node.d/if_packets_eth0 +# +# ...will monitor eth0. +# +# To aggregate all network interfaces on the system (except lo0), +# link if_packets_aggregated to this file. +# +# Any device found in /usr/bin/netstat can be monitored. +# +# Magic markers (optional - used by munin-config and some installation +# scripts): +# +#%# family=auto +#%# capabilities=autoconf suggest + +INTERFACE=${0##*if_packets_} + +if [ "$1" = "autoconf" ]; then + if [ -x /sbin/ifconfig -o -x /usr/bin/netstat ]; then + echo yes + exit 0 + else + echo "no (/usr/bin/netstat not found)" + exit 0 + fi +fi + +if [ "$1" = "suggest" ]; then + if [ -x /sbin/ifconfig ] + then + ifconfig -l | sed -Ee 's/[[:<:]](pfsync|faith|pf(log|sync)|lo|plip|carp|enc|fwe)[^ ]*//g' | xargs -n 1 echo + exit 0 + elif [ -x /usr/bin/netstat ]; then + netstat -i -b -n | sed -n -e '/^faith/d' -e '/^lo[0-9]/d' -e '/^pf(log|sync)/d' -e '//s/\** .*//p' + exit 0 + else + exit 1 + fi +fi + +if [ "$1" = "config" ]; then + + echo "graph_order rpackets opackets" + echo "graph_title $INTERFACE pps" + echo 'graph_args --base 1000' + echo 'graph_vlabel packets per ${graph_period} in (-) / out (+)' + echo 'graph_category network' + echo "graph_info This graph shows the packets counter of the $INTERFACE network interface. Please note that the traffic is shown in packets per second." + echo 'rpackets.label received' + echo 'rpackets.type COUNTER' + echo 'rpackets.graph no' + + echo 'rpackets.min 0' + echo 'opackets.label pps' + echo 'opackets.type COUNTER' + echo 'opackets.negative rpackets' + + echo 'opackets.min 0' + echo "opackets.info Packets sent (+) and received (-) on the $INTERFACE network interface." + exit 0 +fi + +if [ "$INTERFACE" = "aggregated" ]; then + /usr/bin/netstat -i -b -n | grep -v '^lo' | awk ' +BEGIN { rsum = 0; osum = 0; } +// { + if (NF == 10) { + rsum += $4; osum += $7; + } else if (NF == 11) { + if ($4 ~ /:/) { + rsum += $5; osum += $8; + } else { + rsum += $4; osum += $8; + } + } else { # NF == 12 + rsum += $6; osum += $9; + } +} +END { + printf "rpackets.value %i\n", rsum; + printf "opackets.value %i\n", osum; +}' + +else + /usr/bin/netstat -i -b -n -I $INTERFACE | awk ' +// { + if (NF == 10) { + print "rpackets.value", $4; + print "opackets.value", $7; + } else if (NF == 11) { + if ($4 ~ /:/) { + print "rpackets.value", $5; + print "opackets.value", $8; + } else { + print "rpackets.value", $4; + print "opackets.value", $8; + } + } else { # NF == 12 + print "rpackets.value", $5; + print "opackets.value", $9; + } +}' +fi +