RabbitMQ队列监控

Idle:通过自动发现队列,获取各个队列中的ready,unackd等值

sudo !!!

 1  #!/bin/sh
 2   discovery(){
 3    Queue=(`rabbitmqctl list_queues |grep -v List |awk ‘{print $1}‘`)
 4    len=${#Queue[@]}
 5    printf "{\n"
 6    printf  ‘\t‘"\"data\":["
 7    for ((i=0;i<$len;i++))
 8    do
 9      printf ‘\n\t\t{‘
10      printf "\"{#MQ_NAME}\":\"${Queue[$i]}\"}"
11      if [ $i -lt $[$len-1] ];then
12        printf ‘,‘
13      fi
14    done
15    printf  "\n\t]\n"
16    printf "}\n"
17
18    }
19 20
21
22  messages(){
23           QUEUE=$1
24           ROW=`rabbitmqctl list_queues |grep -n $QUEUE  |awk -F : ‘{print $1}‘`
25           MESSAGES=`rabbitmqctl list_queues messages |awk ‘NR=="‘‘‘$ROW‘‘‘"{print}‘`
26           echo $MESSAGES
27   }
28   ready(){
29           QUEUE=$1
30           ROW=`rabbitmqctl list_queues |grep -n $QUEUE  |awk -F : ‘{print $1}‘`
31           READY=`rabbitmqctl list_queues messages_ready |awk ‘NR=="‘‘‘$ROW‘‘‘"{print}‘`
32           echo $READY
33   }
34   unack(){
35           QUEUE=$1
36           ROW=`rabbitmqctl list_queues |grep -n $QUEUE  |awk -F : ‘{print $1}‘`
37           UNACK=`rabbitmqctl list_queues  messages_unacknowledged |awk ‘NR=="‘‘‘$ROW‘‘‘"{print}‘`
38           echo $UNACK
39   }
40
41
42   if [ $1 == "discovery" ]; then
43      discovery
44   elif [ $1 == "messages" ]; then
45      messages $2
46   elif [ $1 == "ready" ]; then
47      ready $2
48   elif [ $1 == "unack" ]; then
49      unack $2
50   fi


  1 UserParameter=rabbitmq.discovery_queue[*],sh /etc/zabbix/zabbix_source/rabbitmq.sh  $1        ###自动发现队列
  2 UserParameter=rabbitmq.queue.list,  sudo rabbitmqctl  list_queues |wc -l                  ###队列个数
  3 UserParameter=rabbitmq.consumer.list,  sudo rabbitmqctl  list_consumers |wc -l                  ###消费者个数
  4 UserParameter=rabbitmq.total.messages[*],  sh /etc/zabbix/zabbix_source/rabbitmq.sh  messages $1  ###总消息
  5 UserParameter=rabbitmq.message.ready[*],   sh /etc/zabbix/zabbix_source/rabbitmq.sh  ready    $1  ###生产数
  6 UserParameter=rabbitmq.message.unackd[*],  sh /etc/zabbix/zabbix_source/rabbitmq.sh  unack    $1  ###未消费数
时间: 2024-10-20 09:25:46

RabbitMQ队列监控的相关文章

rabbitMQ队列处理导致连接池耗尽Tomcat假死问题排查处理

背景: 监听器针对RabbitMQ队列做业务数据处理 系统问题表现: 业务系统无法正常使用,所有请求均不予相应,报404异常 控制台问题表现: 接收队列数据的logger日志打印,但是相关sql不打印(之前sql打印) 报错异常: dbcp连接池(开始使用) [WARN ] 19:01:05.762 [SimpleAsyncTaskExecutor-1] o.h.util.JDBCExceptionReporter - SQL Error: 1040, SQLState: 08004 [ERRO

Python自动化 【第十一篇】:Python进阶-RabbitMQ队列/Memcached/Redis

 本节内容: RabbitMQ队列 Memcached Redis 1.  RabbitMQ 安装 http://www.rabbitmq.com/install-standalone-mac.html 安装python rabbitMQ module pip install pika or easy_install pika or 源码 https://pypi.python.org/pypi/pika 实现最简单的队列 send 端 received 端 1.1 Work Queues 在这

python RabbitMQ队列/redis

RabbitMQ队列 安装 http://www.rabbitmq.com/install-standalone-mac.html 安装python rabbitMQ module 1 2 3 4 5 6 7 pip install pika or easy_install pika or 源码   https://pypi.python.org/pypi/pika 实现最简单的队列通信 produce 1 import pika 2 connection = pika.BlockingConn

Python并发编程-RabbitMQ队列

RabbitMQ队列 安装 http://www.rabbitmq.com/install-standalone-mac.html 安装python rabbitMQ module 1 2 3 4 5 6 7 pip install pika or easy_install pika or 源码   https://pypi.python.org/pypi/pika 实现最简单的队列通信 send端 1 #!/usr/bin/env python 2 import pika 3 4 connec

Python开发【十一章】:RabbitMQ队列

RabbitMQ队列 rabbitMQ是消息队列:想想之前的我们学过队列queue:threading queue(线程queue,多个线程之间进行数据交互).进程queue(父进程与子进程进行交互或者同属于同一父进程下的多个子进程进行交互):如果两个独立的程序,那么之间是不能通过queue进行交互的,这时候我们就需要一个中间代理即rabbitMQ 消息队列: RabbitMQ ZeroMQ ActiveMQ ........... 原理: 1.安装和基本使用 安装RabbitMQ服务  htt

Rabbitmq队列

一. RabbitMQ队列 rabbitmq 消息队列 解耦:一个程序间 把两个耦合度降低 异步:天生解决耦合 优点:解决排队问题 缺点:不能保证任务被及时的执行 应用场景:去哪儿网 12306网站 同步 优点:保证任务及时执行 缺点:不能解决排队问题,导致时间被浪费 大并发 Web Linux上 近几年使用的是nginx 内部epoll异步 承载10000-20000并发 pv=page visit 页面访问量 每天上亿 10server web cluster集群 uv=user visit

# 进程/线程/协程 # IO:同步/异步/阻塞/非阻塞 # greenlet gevent # 事件驱动与异步IO # Select\Poll\Epoll异步IO 以及selectors模块 # Python队列/RabbitMQ队列

1 # 进程/线程/协程 2 # IO:同步/异步/阻塞/非阻塞 3 # greenlet gevent 4 # 事件驱动与异步IO 5 # Select\Poll\Epoll异步IO 以及selectors模块 6 # Python队列/RabbitMQ队列 7 8 ############################################################################################## 9 1.什么是进程?进程和程序之间有什么

rabbitmq队列中消息过期配置

最近公司某个行情推送的rabbitmq服务器由于客户端异常导致rabbitmq队列中消息快速堆积,还曾导致过内存积压导致rabbitmq客户端被block的情况.考虑到行情信息从业务上来说可以丢失部分消息,并不要求完全可靠.为了尽量避免某个客户端未及时消费影响整个mq,故考虑对某些队列中的消息设置TTL.如下: rabbitmqctl set_policy TTL "ttl.*" '{"message-ttl":60000}' --apply-to queues具体

python RabbitMQ队列使用(入门篇)

---恢复内容开始--- python RabbitMQ队列使用 关于python的queue介绍 关于python的队列,内置的有两种,一种是线程queue,另一种是进程queue,但是这两种queue都是只能在同一个进程下的线程间或者父进程与子进程之间进行队列通讯,并不能进行程序与程序之间的信息交换,这时候我们就需要一个中间件,来实现程序之间的通讯. RabbitMQ MQ并不是python内置的模块,而是一个需要你额外安装(ubunto可直接apt-get其余请自行百度.)的程序,安装完毕