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  

 

 


 

 

 

时间: 2024-10-17 11:41:01

RabbitMQ 队列监控的相关文章

RabbitMQ之监控(2)

本文接RabbitMQ之监控(1). 不管是通过HTTP API接口还是客户端,获取的数据都是为了提供监控视图之用,不过这一切都基于RabbitMQ服务运行完好的情况下.虽然可以通过某些其他工具或方法来检测RabbitMQ进程是否在运行(如:ps aux | grep rabbitmq),或者5672端口是否开启(如:telnet xxx.xxx.xxx.xxx 5672),但是这样依旧不能真正的评判RabbitMQ是否还具备服务外部请求的能力.这里就需要使用AMQP协议来构建一个Ping的检测

RabbitMQ之监控(3)

确保RabbitMQ能够健康的运行还不足以让人放松警惕.考虑这样一种情况:小明为小张创建了一个队列并绑定了一个交换器,之后某人由于疏忽而阴差阳错的删除了这个队列而无人得知,最后小张在使用这个队列的时候就会报出"NOT FOUND"的错误.如果这些在测试环境中发生,那么还可以弥补.如果在实际生产环境中,如果误删了一个队列,那必然会造成不可估计的影响.此时业务方如果正在使用这个队列,正常情况下会立刻报出异常,相关人员迅可以迅速做出动作以尽可能的降低影响.试想如果是一个定时任务调用此队列,并

RabbitMQ之监控(1)

RabbitMQ作为一个工业级的消息中间件,肯定是缺少不了监控的,RabbitMQ提供了WEB版的页面监控(访问地址:http://xxx.xxx.xxx.xxx:15672/,默认端口号是15672.原文:The web UI is located at: http://server-name:15672/),类似于如下: 当然,需要有相关功能的前提是开启了:rabbitmqctl rabbitmq_management. 如果小用用的话,这个web管理界面就够了,如果公司有专门的团队,比如中

RabbitMQ 队列监听

问题描述 在使用RabbitMQ的时候维护了两个队列A和B,A的优先级高于B,只有A的消息消费完后才会消费B,而在之后的过程中如果A又有消息,则马上转向处理A中的消息这里有个问题,怎么样才能监听队列A内的消息信息呢,

Spring学习笔记3之消息队列(rabbitmq)发送邮件功能_java

rabbitmq简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过 队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求.其中较为成熟的MQ产品有IBM WEBSPHERE MQ. 本节的内容是用户注册时,将邮

RabbitMQ原理

RabbitMQ原理 前一段时间研究RabbitMQ的时候,发现官网.网上博客的内容比较零散,所以整理了一下官网内容以及其他人的博客内容,整理出下面一篇RabbitMQ原理.主要内容如下: 基础概念:Exchange, Routing key, Binding, Binding key, Exchange Types, RPC, 通信过程 架构相关:Virtual host, 消息存储, GC过程, 性能优化, Message,流控 队列详解:普通队列, 镜像队列 集群原理:基础概念, 服务可用

C#消息队列(MQ)零基础从入门到实战演练

一.课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次<C#消息队列零基础从入门到实战演练>分享课让您对消息队列有一个实质性的了解和认识,达到实际的灵活贯通和运用.本次分享课您将学习到以下知识点: 1.微软MSMQ的基本使用技能以及MSMQ在WCF技术中的运用. 2.企业级RabbitMQ消息队列的两种消费模式(生产消费和发布订阅)的介绍和使用. 3.如何实现RabbitMQ客户端(Client

百万级PHP网站架构工具箱

在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网站架构:Poppen.de.Poppen.de是德国的一个社交网站,相对Facebook.Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,如 Nigix.MySql.CouchDB.Erlang.Memcached.RabbitMQ.PHP.Graphite.Red5以及Tsung. Poppen.de目前有200万注册用户数.2万并发用户数.每天20万条私有消息.每天25万

消息中间件收录集

本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能. 这里会持续收录相关知识,包括安装.部署.使用示例.监控.运维.原理等. 所有新撰写的与中间件有关的文章都会收录与此,注意保存本文链接. Last Update Time: 2017-10-26 08:23 Update Content: RabbitMQ管理(5)--集群管理 通用 什么是Zero-Copy?(sendfile) 1.