shell脚本监控rabbitmq队列消息数量(堵塞情况)

监控rabbitmq的queue中的消息数量,超过一定数量发送邮件

#!/bin/bash
##################################################
# vim /etc/crontab
# */30 * * * * root sh /mnt/rabbitmqMonitor/rabbitmq_monitor.cron
##################################################
#堵塞最大数量
maxNum=1000
#接收者
email_reciver="xxxx@qq.com xxx@163.com"
#smtp服务器地址
email_smtphost=smtp.exmail.qq.com
#发送者邮箱
email_sender=xxx@qq.com
#邮箱用户名
email_username=xxxx
#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务。
email_password=xxxxxx
#服务器ip
local_ip=`ifconfig|grep Bcast|awk -F: '{print $2}'|awk -F " " '{print $1}'|head -1`
#主题
email_title="服务器${local_ip}消息队列堵塞"
#rabbitmq的环境变量
export RABBITMQPATH=/usr/lib/rabbitmq/bin
#获取所有队列的名字和每个队列中的消息数量,存入'queueNum'数组中
declare -A queueJson 
queueIndex=0
for QUEUE in $(rabbitmqctl list_queues |grep -v 'Listing queues ...' | awk -F' ' '{print $1}');
do 
    #统计每个消息队列的数量
    queueJson[$QUEUE]=$(rabbitmqctl list_queues |grep $QUEUE | awk -F' ' '{print $2}')
    nums=${queueJson[$QUEUE]}
    # -ge  
    if [[ $nums -ge $maxNum ]]; then
        #存key
        queueName[$queueIndex]=$QUEUE
        queueIndex=`expr $queueIndex + 1`
    fi
done 
#如果有异常,发送邮件
exceptionNum=${#queueName[@]}
if [[ $exceptionNum -gt 0 ]]; then
    #有队列阻塞,exceptionName存放的为堵塞队列的名称,发送邮件
    #内容
    email_content="队列阻塞情况:"
    for name in ${queueName[*]}
    do
        email_content=$email_content"\\n${name}:${queueJson[${name}]}"
    done
    echo "###################count at $(date +'%d-%m-%Y %H:%M:%S') ######################"
    echo -e $email_content
    #发送邮件
    /mnt/rabbitmqMonitor/sendEmailTool/sendEmail -f ${email_sender} -t ${email_reciver} -s ${email_smtphost} -u ${email_title} -xu ${email_username} -xp ${email_password} -m ${email_content} -o message-charset=utf-8
fi

需要一个发送email的工具



放在 /mnt/rabbitmqMonitor/sendEmailTool/    目录下面

运行脚本即可 


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页