#!/bin/bash
#PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin"
#export $PATH
# * this is a munin plugin to get ping respone by fping
# * @copyright by everyone
# * @author renothing
# * @Email:frankruder@qq.com
graph_id=$(basename $0|cut -d"_" -f2)
test -n "$ping_args" || ping_args="-c 10 -p 100 -r 1 -q"
test -n "$hosts" || hosts="182.237.3.12 180.92.185.67 180.92.185.70 50.97.237.130 66.55.88.48 76.74.154.100 67.215.234.178"
test -n "$names" || names="hk-worria-182.237.3.12 sg-voxel-180.92.185.67 sg-voxel-180.92.185.70 sj-softlayer-50.97.237.130 usa-gigenet-66.55.88.48 usa-peer1-76.74.154.100 usa-quadranet-67.215.234.178"
test -n $category || category="ping"
test -n "$title" || title="××× Ping"
case $1 in
config)
printf "multigraph ping_respone_$graph_id\n"
printf "graph_title $title respone\n";
printf "graph_args --base 1000 -l 0\n"
printf "graph_vlabel ping respone time\n"
printf "graph_category $category\n"
printf "graph_info this graph show the ping respone time\n"
k=0;
for name in $names; do
printf "respone$k.label $name-respone\n"
printf "respone$k.draw LINE2\n"
printf "respone$k.type GAUGE\n"
printf "respone$k.info $name average of ping to baidu respone times\n"
printf "respone$k.min 0\n"
k=$(($k+1))
done
printf "multigraph ping_loss_$graph_id\n"
printf "graph_title $title loss\n";
printf "graph_args --base 1000 -l 0 -u 100 -r\n"
printf "graph_scale no\n"
printf "graph_vlabel ping loss percent\n"
printf "graph_category $category\n"
printf "graph_info this graph show the ping respone time and package loss percent\n"
k=0
for name in $names; do
printf "loss$k.label $name-loss\n"
printf "loss$k.draw LINE2\n"
printf "loss$k.type GAUGE\n"
printf "loss$k.info $name ping respone loss percent\n"
printf "loss$k.min 0 \n"
printf "loss$k.max 100\n"
k=$(($k+1))
done
;;
*)
results=`fping $ping_args $hosts 2>&1|awk -F[:/%\=,] '{print $8,$15}'`
pingx=`echo "$results"|awk '{print $2}'`
pingy=`echo "$results"|awk '{print $1}'`
printf "multigraph ping_respone_$graph_id\n"
k=0;
for v in $pingx; do
printf "respone$k.value %.f\n" $v
k=$(($k+1))
done
printf "multigraph ping_loss_$graph_id\n"
k=0
for v in $pingy; do
printf "loss$k.value %.f\n" $v
k=$(($k+1))
done
;;
esac