-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathif_.sh
112 lines (103 loc) · 2.97 KB
/
if_.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/local/bin/bash
# -*- sh -*-
#
# Wildcard-plugin to monitor network interfaces. To monitor an
# interface, link if_<interface> to this file. E.g.
#
# ln -s /usr/share/munin/node/plugins-auto/if_ /etc/munin/node.d/if_eth0
#
# ...will monitor eth0.
#
# To aggregate all network interfaces on the system (except lo0),
# link if_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
. $MUNIN_LIBDIR/plugins/_database.new
INTERFACE=${0##*if_}
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 '/<Link#[0-9]*>/s/\** .*//p'
exit 0
else
exit 1
fi
fi
if [ "$1" = "config" ]; then
echo "graph_order rbytes obytes"
echo "graph_title Interface ${INTS[$INTERFACE]} traffic"
echo 'graph_args --base 1000'
echo 'graph_vlabel in (-) / out (+)'
echo 'graph_category network'
echo "graph_info This graph shows the traffic of the $INTERFACE network interface. Please note that the traffic is shown in bits per second, not bytes. IMPORTANT: Since the data source for this plugin use 32bit counters, this plugin is really unreliable and unsuitable for most 100Mb (or faster) interfaces, where bursts are expected to exceed 50Mbps. This means that this plugin is unsuitable for most production environments."
echo 'rbytes.label received'
echo 'rbytes.type DERIVE'
echo 'rbytes.graph no'
echo 'rbytes.cdef rbytes,8,*'
echo 'rbytes.min 0'
echo 'obytes.label bps'
echo 'obytes.type DERIVE'
echo 'obytes.negative rbytes'
echo 'obytes.cdef obytes,8,*'
echo 'obytes.min 0'
echo "obytes.info Traffic 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; }
/<Link#[0-9]*>/ {
if (NF == 10) {
rsum += $6; osum += $9;
} else if (NF == 11) {
if ($4 ~ /:/) {
rsum += $7; osum += $10;
} else {
rsum += $7; osum += $10;
}
} else { # NF == 12
rsum += $8; osum += $11;
}
}
END {
printf "rbytes.value %i\n", rsum;
printf "obytes.value %i\n", osum;
}'
else
/usr/bin/netstat -i -b -n -I $INTERFACE | awk '
/<Link#[0-9]*>/ {
if (NF == 10) {
print "rbytes.value", $6;
print "obytes.value", $9;
} else if (NF == 11) {
if ($4 ~ /:/) {
print "rbytes.value", $7;
print "obytes.value", $10;
} else {
print "rbytes.value", $7;
print "obytes.value", $10;
}
} else { # NF == 12
print "rbytes.value", $8;
print "obytes.value", $11;
}
}'
fi