2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00

[plugins/upnpc_] Add upnpc-based router monitoring plugin

Signed-off-by: Olivier Mehani <shtrom@ssji.net>
This commit is contained in:
Olivier Mehani 2016-07-12 15:35:16 +10:00
parent d42751c908
commit 5b0aad0638

149
plugins/upnpc/upnpc_ Executable file
View File

@ -0,0 +1,149 @@
#!/bin/sh
# -*- sh -*-
: << =cut
=head1 NAME
upnpc_ - Plugin to monitor routers via UPnP
=head1 APPLICABLE SYSTEMS
Linux systems with upnpc installed.
=head1 CONFIGURATION
None needed.
=head1 AUTHOR
Olivier Mehani
=head1 LICENSE
GPLv2
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf suggest
=cut
autoconf() {
which upnpc >/dev/null && upnpc -s >/dev/null 2>&1 && echo yes || echo "no (No upnpc or no UPnP router)"
}
suggest () {
upnpc -s | sed -n " \
s/.*uptime=.*/uptime/p; \
s/.*MaxBitRate.*/bitrate/p; \
s/.*Bytes.*/traffic/p; \
s/.*Packets.*/pkts/p; \
"
}
config () {
case $1 in
"uptime")
cat << EOF
graph_title Uplink connection uptime
graph_args -l 0
graph_category network
graph_scale no
graph_vlabel uptime in hours
uptime.label uptime
uptime.draw AREA
uptime.cdef uptime,3600,/
EOF
;;
"bitrate")
cat << EOF
graph_title Uplink bitrate
graph_args --base 1000 -l 0
graph_category network
graph_vlabel bitrate down (-) / up (+)
down.label bps
down.warning 4194304:
down.critical 1048576:
up.label bps
up.warning 524288:
up.critical 131072:
down.graph no
up.negative down
EOF
;;
"traffic")
cat << EOF
graph_title Uplink traffic
graph_args --base 1024 -l 0
graph_category network
graph_vlabel bytes in (-) / out (+) per ${graph_period}
down.label Bps
down.type DERIVE
down.min 0
up.label Bps
up.type DERIVE
up.min 0
down.graph no
up.negative down
EOF
;;
"pkts")
cat << EOF
graph_title Uplink packets
graph_args --base 1000 -l 0
graph_category network
graph_vlabel packets in (-) / out (+) per ${graph_period}
down.label pps
down.type DERIVE
down.min 0
up.label pps
up.type DERIVE
up.min 0
down.graph no
up.negative down
EOF
;;
"*")
echo "$0: unknown mode '$1'" >&2
exit 1
esac
}
fetch () {
case $1 in
"uptime")
upnpc -s | sed -n "s/.*uptime=\([0-9]\+\)s.*/uptime.value \1/p"
;;
"bitrate")
upnpc -s | sed -n "s/^MaxBitRateDown : \([0-9]\+\) bps.*MaxBitRateUp \([0-9]\+\) bps.*/down.value \1\nup.value \2/p"
;;
"traffic")
upnpc -s | sed -n "s/^Bytes:\s*Sent:\s*\([0-9]\+\).*Recv:\s*\([0-9]\+\).*/up.value \1\ndown.value \2/p"
;;
"pkts")
upnpc -s | sed -n "s/^Packets:\s*Sent:\s*\([0-9]\+\).*Recv:\s*\([0-9]\+\).*/up.value \1\ndown.value \2/p"
;;
"*")
echo "$0: unknown mode '$1'" >&2
exit 1
esac
}
mode=`echo $0 | sed 's/.*_//'`
case $1 in
"autoconf")
autoconf
;;
"suggest")
suggest
;;
"config")
config $mode
;;
*)
fetch $mode
;;
esac