由于有些业务服务器托管在了二线城市的机房,第4天同事说服务器网络不正常是不是带宽没有给够,我们租用的是5M独享带宽。我登陆服务器,我们租用的是网通线路,就找了一163源下载 Centos 系统 检查了一下下载速度,下载速度居然在 250KB/S,也就是说实际带宽也就给了2M·拿起手机给IDC打电话,他们说让技术查一下,随后给我回电话说,不好意思某某个技术调交换机的时候调错了,然后我就怒了,你们什么职业道德。
随后我想了想,就写了这个脚本·检查下载速度,当然在网站流量大的时候速度会收到影响,你也可以设置nagios 晚上执行这个脚本。或者把阀值调相应低点。下面我贴我的脚本和使用方法。
#!/bin/bash
PROGNAME=`basename $0`
VERSION="Version 1.0"
AUTHOR="2010.11.17,www.nginxs.com"
ST_OK=0
ST_WR=1
ST_CR=2
ST_UK=3
interval=5
url="http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso"
print_version() {
echo "$VERSION $AUTHOR"
}
print_help() {
print_version $PROGNAME $VERSION
echo "$PROGNAME is a Nagios plugin to monitor download speed"
echo "Use of wget download url file"
echo "When using optional warning/critical thresholds all values except"
echo "Usage parameters:"
echo ""
echo "$PROGNAME [-i/--interval] [-u|--url] [-w/--warning] [-c/--critical]"
echo ""
echo "Options:"
echo " --interval|-i)"
echo " Defines the download file times"
echo " propose set < 5 second and > 10 second"
echo " Default is: 5 second"
echo ""
echo " --url|-u)"
echo " Sets url page"
echo " Defautl is :http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso"
echo " Please set Fastest url"
echo ""
echo " --warning|-w)"
echo " Sets a warning level for download speed. Defautl is: off"
echo ""
echo " --critical|-c)"
echo " Sets a critical level for download speed. Defaut l is: off"
exit $ST_UK
}
while test -n "$1";do
case "$1" in
--help|-h)
print_help
exit $ST_UK
;;
--url|-u)
url=$2
shift
;;
--interval|-i)
interval=$2
shift
;;
--warning|-w)
warn=$2
shift
;;
--critical|-c)
crit=$2
shift
;;
*)
echo "Unknown argument: $1"
print_help
exit $ST_UK
;;
esac
shift
done
val_wcdiff() {
if [ ${warn} -lt ${crit} ]
then
wcdiff=1
fi
}
get_speed() {
wget -b $url > /dev/null
sleep $interval
BS="`cat wget-log |tail -n20 |awk '{print $8}'|sed 's/K//'|awk '{sum+=$1 };END{print sum}'`"
speed=`echo $BS / 19|bc`
killall wget
rm CentOS*
rm wget-log
}
do_output() {
output="speed:${speed}"
}
do_perfdata() {
perfdata="'speed'=${speed}"
}
if [ -n "$warn" -a -n "$crit" ]
then
val_wcdiff
if [ "$wcdiff" = 1 ];then
echo "Please adjust your warning/critical thresholds. The critical must be lower than the warning level!"
exit $ST_UK
fi
fi
get_speed
do_output
do_perfdata
if [ -n "$warn" -a -n "$crit" ];then
if [ $speed -le $warn -a $speed -gt $crit ];then
echo "WARNING - $output |$perfdata"
exit $ST_WR
elif [ $speed -lt $crit ];then
echo "CRITICAL - $output|$perfdata"
exit $ST_CR
else
echo "OK - $output|$perfdata"
exit $ST_OK
fi
else
echo "OK - $output|$perfdata"
exit $ST_OK
fi
使用方法:
nagios $> ./check_speed.sh -h
Version 1.0 2010.11.17,www.nginxs.com
check_speed.sh is a Nagios plugin to monitor download speed
Use of wget download url file
When using optional warning/critical thresholds all values except
Usage parameters:
check_speed.sh [-i/--interval] [-u|--url] [-w/--warning] [-c/--critical]
Options:
--interval|-i)
Defines the download file times
propose set < 5 second and > 10 second
Default is: 5 second
--url|-u)
Sets url page
Defautl is :http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso
Please set Fastest url
--warning|-w)
Sets a warning level for download speed. Defautl is: off
--critical|-c)
Sets a critical level for download speed. Defautl is: off
由于我的服务器带宽5M
nagios $> ./check_speed.sh -i 8 -u http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso -w 400 -c 300 OK - speed:556|'speed'=556
本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/426369,如需转载请自行联系原作者