RabbitMQ 队列监控
2023-09-14 08:59:51 时间
##################################################
# Website http://www.netkiller.cn
# Author netkiller netkiller@msn.com
# 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 netkiller@msn.com
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
-d)
daemon
;;
clean)
clean
;;
*)
usage
;;
esac
RETVAL=$?
exit $RETVAL
RabbitMQ学习(十):幂等性、优先级队列、惰性队列 以支付为例,用户购买商品后支付,扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了;用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误 立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等。
RabbitMQ学习(九):延迟队列 延时队列中,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理。简单来说,延时队列就是用来存放需要在指定时间内被处理的 元素的队列。 其实延迟队列就是死信队列的一种。
RabbitMQ学习(八):死信队列 死信,顾名思义就是无法被消费的消息,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有 后续的处理,就变成了死信。
springcloud:RabbitMQ死信队列与延迟交换机实现(四) 死信队列是消息队列中非常重要的概念,同时我们需要业务场景中都需要延迟发送的概念,比如12306中的30分钟后未支付订单取消。那么本期,我们就来讲解死信队列,以及如何通过延迟交换机来实现延迟发送的需求。
rabbitMQ延时队列与TTL和DLX、延迟队列的相关介绍 TTL是Time To Live的缩写, 也就是生存时间。 RabbitMq支持对消息和队列设置TTL,对消息这设置是在发送的时候指定,对队列设置是从消息入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会自动清除。 如果两种方式一起使用消息的TTL和队列的TTL之间较小的为准,也就是消息5s过期,队列是10s,那么5s的生效。 默认是没有过期时间的,表示消息没有过期时间;如果设置为0,表示消息在投递到消费者的时候直接被消费,否则丢弃。
netkiller Nickname:netkiller | English name: Neo chen | QQ: 291379 | 订阅号:netkiller-ebook | 网站:http://www.netkiller.cn
RabbitMQ学习(十):幂等性、优先级队列、惰性队列 以支付为例,用户购买商品后支付,扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了;用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误 立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等。
RabbitMQ学习(九):延迟队列 延时队列中,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理。简单来说,延时队列就是用来存放需要在指定时间内被处理的 元素的队列。 其实延迟队列就是死信队列的一种。
RabbitMQ学习(八):死信队列 死信,顾名思义就是无法被消费的消息,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有 后续的处理,就变成了死信。
springcloud:RabbitMQ死信队列与延迟交换机实现(四) 死信队列是消息队列中非常重要的概念,同时我们需要业务场景中都需要延迟发送的概念,比如12306中的30分钟后未支付订单取消。那么本期,我们就来讲解死信队列,以及如何通过延迟交换机来实现延迟发送的需求。
rabbitMQ延时队列与TTL和DLX、延迟队列的相关介绍 TTL是Time To Live的缩写, 也就是生存时间。 RabbitMq支持对消息和队列设置TTL,对消息这设置是在发送的时候指定,对队列设置是从消息入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会自动清除。 如果两种方式一起使用消息的TTL和队列的TTL之间较小的为准,也就是消息5s过期,队列是10s,那么5s的生效。 默认是没有过期时间的,表示消息没有过期时间;如果设置为0,表示消息在投递到消费者的时候直接被消费,否则丢弃。
netkiller Nickname:netkiller | English name: Neo chen | QQ: 291379 | 订阅号:netkiller-ebook | 网站:http://www.netkiller.cn
相关文章
- linux性能监控利器20个
- PostgreSQL监控指标
- 011 - JDK自带的性能监控工具
- Apache ZooKeeper在Kafka中的角色 - 监控和配置
- 演进实录|不同阶段的企业如何搭建监控体系?
- url拨测,url访问检测,监控网站url是否正常
- 监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet - 邀月 - 博客园
- zabbix 实现对服务器的负载监控
- 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
- 池与线程池 技术点 目录 1. 线程池作用: 提升性能1 2. 使用流程1 3. 线程与线程池的监控 jvisual1 4. 线程常用方法2 5. 线程池相关概念2 5.1. 队列
- Android Crash监控方案
- SpringBoot三种方式配置Alibaba Druid用于监控或者查看SQL状况:yml或properties配置;Java bean代码配置;注解配置 yml和properties的在线相互转换
- Linux发送监控指标到内部邮箱
- Zabbix 监控
- 数据质量监控:你们一直都做错了
- 【Zabbix实战之部署篇】Zabbix使用SNMP监控Linux系统