#!/bin/sh # # Wildcard-plugin to monitor network interfaces. To monitor an # interface, link if_err_ to this file. E.g. # # ln -s /usr/share/munin/node/plugins-auto/if_err_ /etc/munin/node.d/if_err_eth0 # # ...will monitor eth0. # # Any devince found in /proc/net/dev can be monitored. Examples include # ipsec*, eth*, irda* and lo. Please note that aliases cannot be # monitored with this plugin. # # $Log$ # Revision 1.8.2.3 2005/02/16 20:59:58 jimmyo # Make suggest a tad less trigger happy. # # Revision 1.8.2.2 2005/02/16 17:08:11 jimmyo # linux/if* now treats ra* interfaces as wireless. # # Revision 1.8.2.1 2005/01/29 21:17:12 jimmyo # Added madwifi support to linux/if_* plugins. # # Revision 1.8 2004/12/10 10:47:49 jimmyo # Change name from ${scale} to ${graph_period}, to be more consistent. # # Revision 1.7 2004/12/09 22:12:56 jimmyo # Added "graph_period" option, to make "graph_sums" usable. # # Revision 1.6 2004/11/12 20:09:06 ilmari # Remove deprecated host_name outputting # # Revision 1.5 2004/11/12 20:08:01 ilmari # Fixed linux/if_(err_) braindamage affecting hosts with vlans or # multi-digit interface numbers. # # Revision 1.4 2004/09/26 22:28:42 jimmyo # Suggest wlan interfaces as well as eth interfaces. # # Revision 1.3 2004/09/25 22:29:16 jimmyo # Added info fields to a bunch of plugins. # # Revision 1.2 2004/05/20 13:57:12 jimmyo # Set categories to some of the plugins. # # Revision 1.1 2004/01/02 18:50:01 jimmyo # Renamed occurrances of lrrd -> munin # # Revision 1.1.1.1 2004/01/02 15:18:07 jimmyo # Import of LRRD CVS tree after renaming to Munin # # Revision 1.3 2003/11/07 22:12:50 jimmyo # Changed deprecated plugin options # # Revision 1.2 2003/11/07 17:43:16 jimmyo # Cleanups and log entries # # # # Magic markers (optional - used by munin-config and some installation # scripts): # #%# family=auto #%# capabilities=autoconf suggest INTERFACE=`basename $0 | sed 's/^if_err_//g'` if [ "$1" = "autoconf" ]; then if [ -r /proc/net/dev ]; then echo yes exit 0 else echo "no (/proc/net/dev not found)" exit 1 fi fi if [ "$1" = "suggest" ]; then if [ -r /proc/net/dev ]; then egrep '^ *(eth|wlan|ath|ra)[0-9]+:' /proc/net/dev | cut -f1 -d: | sed 's/ //g' exit 0 else exit 1 fi fi if [ "$1" = "config" ]; then echo "graph_order rcvd trans" echo "graph_title $INTERFACE errors" echo 'graph_args --base 1000' echo 'graph_vlabel packets in (-) / out (+) per ${graph_period}' echo 'graph_category network' echo "graph_info This graph shows the amount of errors on the $INTERFACE network interface." echo 'rcvd.label packets' echo 'rcvd.type COUNTER' echo 'rcvd.graph no' echo 'rcvd.warning 1' echo 'trans.label packets' echo 'trans.type COUNTER' echo 'trans.negative rcvd' echo 'trans.warning 1' exit 0 fi; # Escape dots in the interface name (eg. vlans) before using it as a regex awk -v interface="$INTERFACE" \ 'BEGIN { gsub(/\./, "\\.", interface) } \ $1 ~ "^" interface ":" { split($0, a, /: */); $0 = a[2]; \ print "rcvd.value " $3 "\ntrans.value " $11 \ }' \ /proc/net/dev