RabbitMQ 队列监控-阿里云开发者社区

开发者社区> 开发与运维> 正文

RabbitMQ 队列监控

简介:

RabbitMQ 队列监控

 

下面脚本可以监控RabbitMQ 队列,可以看到剩余队列数量,已经增加数量。

 

Bash代码  收藏代码
  1. #!/bin/bash  
  2. ##################################################  
  3. # Website http://www.netkiller.cn  
  4. # Author netkiller<netkiller@msn.com>  
  5. # OSCM https://github.com/oscm/shell  
  6. ##################################################  
  7. # You have to clean data  at midnight  
  8. # crontab -e  
  9. 05 00 * * * /www/queue.gnuplot.sh clean  
  10. ##################################################  
  11. QUEUE=example  
  12. ##################################################  
  13. PROG=$(basename $0 .sh)  
  14. LOGFILE=/var/tmp/$PROG.log  
  15. PIDFILE=/var/tmp/$PROG.pid  
  16. GNUPLOTDATA=/var/tmp/queue.$PROG.$QUEUE.dat  
  17. PNGFILE=/www/example.com/www.example.com/public/img/queue  
  18. ##################################################  
  19.   
  20. function collector(){  
  21.     datetime=$(date '+%H:%M:%S')  
  22.     queue=$(rabbitmqctl list_queues | grep $QUEUE | awk -F' ' '{print $2}')  
  23.     echo "$datetime $queue" >> $GNUPLOTDATA  
  24. }  
  25.           
  26.   
  27. function generate(){          
  28.   
  29. datetime=$(date '+%Y-%m-%d %H:%M:%S')  
  30. gnuplot << EOF  
  31. set terminal png truecolor size 1024,480  
  32. set output "$PNGFILE-day.png"  
  33. set autoscale  
  34. set xdata time  
  35. set timefmt "%H:%M"  
  36. set format x "%H:%M"  
  37. set style data lines  
  38. set xlabel "$datetime GMT+800"  
  39. set ylabel "Burndown"  
  40. set title "RabbitMQ Burndown - Day"  
  41. set grid  
  42. plot "$GNUPLOTDATA" using 1:2 title "Burndown"  
  43. EOF  
  44.   
  45. hour=$(date '+%H')  
  46. gnuplot << EOF  
  47. set terminal png truecolor size 1024,480  
  48. set output "$PNGFILE-hour.png"  
  49. set autoscale  
  50. set xdata time  
  51. set timefmt "%H:%M"  
  52. set xrange ["$hour:00":"$hour:60"]  
  53. set format x "%H:%M"  
  54. set style data lines  
  55. set xlabel "$datetime GMT+800"  
  56. set ylabel "Burndown"  
  57. set title "RabbitMQ Burndown - Hour"  
  58. set grid  
  59. plot "$GNUPLOTDATA" using 1:2 title "Burndown"  
  60. EOF  
  61.   
  62. minute=$(date '+%H:%M')  
  63. minute5=$(date --date='5 minutes ago' "+%H:%M")  
  64. gnuplot << EOF >> $LOGFILE.minute  
  65. set terminal png truecolor size 1024,480  
  66. set output "$PNGFILE-minute.png"  
  67. set autoscale  
  68. set xdata time  
  69. set timefmt "%H:%M:%S"  
  70. set xrange ["$minute5:00":"$minute:60"]  
  71. set format x "%H:%M:%S"  
  72. set style data lines  
  73. set xlabel "$datetime GMT+800"  
  74. set ylabel "Burndown"  
  75. set title "RabbitMQ Burndown - Minute"  
  76. set grid  
  77. plot "$GNUPLOTDATA" using 1:2 title "Burndown"  
  78. EOF  
  79.       
  80. }  
  81. function daemon(){  
  82.       
  83.     for (( ; ; )) do  
  84.         collector  
  85.         generate  
  86.         sleep 60  
  87.     done &  
  88.     echo $! > $PIDFILE  
  89. }     
  90. function start(){  
  91.     if [ ! -f $RRDDATA ]; then  
  92.         create  
  93.     fi  
  94.     daemon  
  95. }  
  96. function stop(){  
  97.     [ -f $PIDFILE ] && kill `cat $PIDFILE` && rm -rf $PIDFILE  
  98. }  
  99. function status(){  
  100.     ps ax | grep $PROG | grep -v grep | grep -v status  
  101. }  
  102. function clean(){  
  103.     rm -rf $GNUPLOTDATA  
  104. }  
  105. function usage(){  
  106.         echo $"Usage: $0 {start|stop|restart|status|clean}"  
  107.         echo $"  
  108. Options  
  109.  -v, --verbose               increase verbosity  
  110.  -q, --quiet                 suppress non-error messages  
  111.  -h, --help                  show this help (-h works with no other options)  
  112.   
  113.  Website http://www.netkiller.cn  
  114.  Author netkiller<netkiller@msn.com>  
  115. "  
  116. }  
  117.   
  118. case "$1" in  
  119.     start)  
  120.         start  
  121.     ;;  
  122.     stop)  
  123.         stop  
  124.     ;;  
  125.     restart)  
  126.         stop  
  127.         start  
  128.     ;;  
  129.     status)  
  130.         status  
  131.         ;;  
  132.     -d)  
  133.         daemon  
  134.         ;;  
  135.     clean)  
  136.         clean  
  137.         ;;  
  138.     *)  
  139.         usage  
  140.         ;;  
  141. esac  
  142.   
  143. RETVAL=$?  
  144.   
  145. exit $RETVAL  

 

 



 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章