RabbitMQ 队列监控
下面脚本可以监控RabbitMQ 队列,可以看到剩余队列数量,已经增加数量。
#!/bin/bash ################################################## # Website http://www.netkiller.cn # Author netkiller<[email protected]> # OSCM https://github.com/oscm/shell ################################################## # You have to clean data at midnight # crontab -e # 05 00 * * * /www/queue.gnuplot.sh clean ################################################## QUEUE=example ################################################## PROG=$(basename $0 .sh) LOGFILE=/var/tmp/$PROG.log PIDFILE=/var/tmp/$PROG.pid GNUPLOTDATA=/var/tmp/queue.$PROG.$QUEUE.dat PNGFILE=/www/example.com/www.example.com/public/img/queue ################################################## function collector(){ datetime=$(date '+%H:%M:%S') queue=$(rabbitmqctl list_queues | grep $QUEUE | awk -F' ' '{print $2}') echo "$datetime $queue" >> $GNUPLOTDATA } function generate(){ datetime=$(date '+%Y-%m-%d %H:%M:%S') gnuplot << EOF set terminal png truecolor size 1024,480 set output "$PNGFILE-day.png" set autoscale set xdata time set timefmt "%H:%M" set format x "%H:%M" set style data lines set xlabel "$datetime GMT+800" set ylabel "Burndown" set title "RabbitMQ Burndown - Day" set grid plot "$GNUPLOTDATA" using 1:2 title "Burndown" EOF hour=$(date '+%H') gnuplot << EOF set terminal png truecolor size 1024,480 set output "$PNGFILE-hour.png" set autoscale set xdata time set timefmt "%H:%M" set xrange ["$hour:00":"$hour:60"] set format x "%H:%M" set style data lines set xlabel "$datetime GMT+800" set ylabel "Burndown" set title "RabbitMQ Burndown - Hour" set grid plot "$GNUPLOTDATA" using 1:2 title "Burndown" EOF minute=$(date '+%H:%M') minute5=$(date --date='5 minutes ago' "+%H:%M") gnuplot << EOF >> $LOGFILE.minute set terminal png truecolor size 1024,480 set output "$PNGFILE-minute.png" set autoscale set xdata time set timefmt "%H:%M:%S" set xrange ["$minute5:00":"$minute:60"] set format x "%H:%M:%S" set style data lines set xlabel "$datetime GMT+800" set ylabel "Burndown" set title "RabbitMQ Burndown - Minute" set grid plot "$GNUPLOTDATA" using 1:2 title "Burndown" EOF } function daemon(){ for (( ; ; )) do collector generate sleep 60 done & echo $! > $PIDFILE } function start(){ if [ ! -f $RRDDATA ]; then create fi daemon } function stop(){ [ -f $PIDFILE ] && kill `cat $PIDFILE` && rm -rf $PIDFILE } function status(){ ps ax | grep $PROG | grep -v grep | grep -v status } function clean(){ rm -rf $GNUPLOTDATA } function usage(){ echo $"Usage: $0 {start|stop|restart|status|clean}" echo $" Options -v, --verbose increase verbosity -q, --quiet suppress non-error messages -h, --help show this help (-h works with no other options) Website http://www.netkiller.cn Author netkiller<[email protected]> " } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; -d) daemon ;; clean) clean ;; *) usage ;; esac RETVAL=$? exit $RETVAL