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  

 

 



 

 

 

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
7月前
|
消息中间件 Java Spring
SpringBoot实现RabbitMQ的简单队列(SpringAMQP 实现简单队列)
SpringBoot实现RabbitMQ的简单队列(SpringAMQP 实现简单队列)
62 1
|
2月前
|
消息中间件 存储 监控
RabbitMQ 队列之战:Classic 和 Quorum 的性能洞察
RabbitMQ 是一个功能强大的消息代理,用于分布式应用程序间的通信。它通过队列临时存储消息,支持异步通信和解耦。经典队列适合高吞吐量和低延迟场景,而仲裁队列则提供高可用性和容错能力,适用于关键任务系统。选择哪种队列取决于性能、持久性和容错性的需求。
226 6
|
3月前
|
消息中间件 JSON Java
|
3月前
|
消息中间件
rabbitmq,&队列
rabbitmq,&队列
|
4月前
|
消息中间件 存储 NoSQL
MQ的顺序性保证:顺序队列、消息编号、分布式锁,一文全掌握!
【8月更文挑战第24天】消息队列(MQ)是分布式系统的关键组件,用于实现系统解耦、提升可扩展性和可用性。保证消息顺序性是其重要挑战之一。本文介绍三种常用策略:顺序队列、消息编号与分布式锁,通过示例展示如何确保消息按需排序。这些方法各有优势,可根据实际场景灵活选用。提供的Java示例有助于加深理解与实践应用。
137 2
|
3月前
|
消息中间件 JSON Java
玩转RabbitMQ声明队列交换机、消息转换器
玩转RabbitMQ声明队列交换机、消息转换器
103 0
|
5月前
|
消息中间件 RocketMQ
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
|
5月前
|
消息中间件 Java Kafka
说说RabbitMQ延迟队列实现原理?
说说RabbitMQ延迟队列实现原理?
93 0
说说RabbitMQ延迟队列实现原理?
|
5月前
|
消息中间件 NoSQL 关系型数据库
【RocketMQ系列十三】RocketMQ的集群核心概念之消费重试&死信队列&幂等消息的出现以及处理
【RocketMQ系列十三】RocketMQ的集群核心概念之消费重试&死信队列&幂等消息的出现以及处理
172 1
|
6月前
|
消息中间件 存储 监控
RabbitMQ 死信队列
RabbitMQ的死信队列(DLQ)是存储无法正常消费消息的特殊队列,常见于消息被拒绝、过期或队列满时。DLQ用于异常处理、任务调度和监控,通过绑定到普通队列自动路由死信消息。通过监听死信队列,可以对异常消息进行补偿和进一步处理,提升系统稳定性和可维护性。
121 1