mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-25 18:38:30 +00:00
Adding simple and useful ping plugin
This commit is contained in:
parent
7cac42ed09
commit
8d941d04d0
2 changed files with 98 additions and 0 deletions
98
plugins/network/ping/ping
Executable file
98
plugins/network/ping/ping
Executable file
|
@ -0,0 +1,98 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ping revision 2 (Jul 2012)
|
||||||
|
#
|
||||||
|
# This plugin shows ping statistics for several hosts on a single graph
|
||||||
|
#
|
||||||
|
# Configuration:
|
||||||
|
# Add [ping] section with 'hosts' set to space-separated list of hostnames or addresses.
|
||||||
|
# You can prefix host name with '<type>:' to change IP resolution mode,
|
||||||
|
# e.g. 'AAAA:domain.tld' will request IPv6 record.
|
||||||
|
# Always prefix IPv6 addresses with 'AAAA:' (internal limitation).
|
||||||
|
#
|
||||||
|
# Dependencies:
|
||||||
|
# host util is required
|
||||||
|
#
|
||||||
|
# OS:
|
||||||
|
# Linux
|
||||||
|
#
|
||||||
|
# Author: Artem Sheremet <dot.doom@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
function normalize() {
|
||||||
|
echo ${1//[^a-zA-Z0-9]/_}
|
||||||
|
}
|
||||||
|
|
||||||
|
function host_type() {
|
||||||
|
case $1 in
|
||||||
|
*:*)
|
||||||
|
echo ${1/:*/}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo A
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function host_name() {
|
||||||
|
echo "${1/*:/}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function ipof() {
|
||||||
|
host -t $(host_type $1) $(host_name $1) |
|
||||||
|
sort | grep -Eo 'address .*' | cut -d' ' -f2 | head -1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$1" == "config" ]]; then
|
||||||
|
echo 'graph_title Ping statistics
|
||||||
|
graph_vlabel Time,ms
|
||||||
|
graph_category network
|
||||||
|
graph_info ping statistics for several hosts'
|
||||||
|
for host in $hosts; do
|
||||||
|
echo "$(normalize $host).label $(host_name $host) ($(ipof $host))"
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
SYNC_FILE=/tmp/munin-ping-sync
|
||||||
|
echo -n >"$SYNC_FILE"
|
||||||
|
|
||||||
|
COUNT=0
|
||||||
|
for host in $hosts; do
|
||||||
|
{
|
||||||
|
case $(host_type $host) in
|
||||||
|
AAAA)
|
||||||
|
PING=ping6
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PING=ping
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
TIME=$($PING -w 1 -c 1 `host_name $host` | awk '
|
||||||
|
BEGIN {
|
||||||
|
found = 0
|
||||||
|
t = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$1 == "rtt" { found = 1; t = $4; }
|
||||||
|
|
||||||
|
END {
|
||||||
|
if (found == 1) {
|
||||||
|
split(t, parts, "/");
|
||||||
|
print parts[1]
|
||||||
|
} else {
|
||||||
|
print "U"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
')
|
||||||
|
|
||||||
|
echo $(normalize $host).value $TIME
|
||||||
|
echo ok >>"$SYNC_FILE"
|
||||||
|
} &
|
||||||
|
let COUNT=$COUNT+1
|
||||||
|
done
|
||||||
|
|
||||||
|
# wait for background processes to finish
|
||||||
|
while [ $(wc -l <"$SYNC_FILE") -lt $COUNT ]; do
|
||||||
|
sleep 0.2
|
||||||
|
done
|
BIN
plugins/network/ping/ping-year.png
Normal file
BIN
plugins/network/ping/ping-year.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Loading…
Add table
Add a link
Reference in a new issue