Skip to content

Instantly share code, notes, and snippets.

@xufan6
Created January 20, 2012 15:23
Show Gist options
  • Save xufan6/1647868 to your computer and use it in GitHub Desktop.
Save xufan6/1647868 to your computer and use it in GitHub Desktop.
rrd更新用的脚本。-p rrd位置 -n rrd名字 -h要ping的ip -d debug用
#!/bin/bash
RRD_DIR="/tmp"
RRD_NAME="gateway"
while getopts f:p:n:h:d OPTS
do
case $OPTS in
p) RRD_DIR="$OPTARG" ;;
n) RRD_NAME="$OPTARG" ;;
h) HOST_NAME="$OPTARG" ;;
d) DEBUGGER="true" ;;
f) CONF_FILE="$OPTARG" ;;
?) echo "Usage: $0 [-p RRD_DIR] [-n RRD_NAME] [-h HOST_NAME/IP] [-d]"
echo "Usage: $0 <-f conf_file > [-d]"
echo "the conf_file format:--> RRD_DIR=\"/tmp\" HOST_LIST=\"example.com example.net\""
exit 3 ;;
esac
done
shift $(( $OPTIND -1 ))
[ $DEBUGGER ] && echo "Houston, We've Had a Problem (DEBUGGER is working...)"
read_conf(){
source $CONF_FILE
for HOST_NAME in $HOST_LIST ;do
RRD_NAME=$HOST_NAME
main
done
}
main(){
RRD_DIR=${RRD_DIR%/}
RRD_NAME=${RRD_NAME%.rrd}
[ $HOST_NAME ] && [ $RRD_NAME = gateway ] && RRD_NAME=$HOST_NAME
[ -z $HOST_NAME ] && HOST_NAME=$RRD_NAME
RRD_PATH=$RRD_DIR/$RRD_NAME.rrd
[ $DEBUGGER ] && echo "RRD_PATH is:" $RRD_PATH
[ $HOST_NAME = gateway ] && HOST_NAME="`/sbin/route -n |awk '$1 ~ "0.0.0.0" && $2 ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $2}'|head -1`"
[ $DEBUGGER ] && echo "HOST_NAME is:" $HOST_NAME
if [ ! -w $RRD_PATH ] ;then
echo "We will create $RRD_PATH"
[ -d $RRD_DIR ] || mkdir -p $RRD_DIR
rrdtool create $RRD_PATH --step 60 \
DS:rtt:GAUGE:120:0:10000 \
DS:pl:GAUGE:120:0:100 \
RRA:AVERAGE:0.5:1:2880 \
RRA:AVERAGE:0.5:5:2016 \
RRA:MAX:0.5:5:2016 \
RRA:AVERAGE:0.5:30:2880 \
RRA:MAX:0.5:30:2880 \
RRA:AVERAGE:0.5:120:2160 \
RRA:AVERAGE:0.5:360:2880
fi
echo -n "ping ing... $HOST_NAME: "
UPDATE="`/usr/lib/nagios/plugins/check_ping -H $HOST_NAME -w 300,5% -c 500,10% -p 15 -t 10 |perl -ne 'print "$1:$2" if /rta=([\d.]+)ms.*pl=([\d.]+)%/'`"
echo $UPDATE
[ -w $RRD_PATH ] && rrdtool update $RRD_PATH N:$UPDATE
[ $DEBUGGER ] && echo -n "$RRD_PATH now: `date +%s` . rrdtool last: "
[ $DEBUGGER ] && rrdtool last $RRD_PATH
}
[ -z $CONF_FILE ] && main
[ $CONF_FILE ] && [ -r $CONF_FILE ] && read_conf
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment