首先安装rabbitmqctl 命令
说明:rabbitmqctl 命令 可以获取Mysql对列的信息
rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm
启动rabbitmq-server
service rabbitmq-server start
在对应的机器创建脚本
vim /usr/local/sbin/mysql.sh#!/bin/bash #堵塞最大数量 maxNum=100 #接收者 email_reciver="anna_wqd@163.com" #smtp服务器地址 email_smtphost=smtp.exmail.126.com #发送者邮箱 email_sender=tinna_wu@126.com #邮箱用户名 email_username=tinna_wu#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务。 email_password=xxxxx#服务器ip local_ip=`ifconfig|grep inet|awk '{print $2}'|awk -F " " '{print $1}'|head -1` #主题 email_title="服务器${local_ip}消息队列堵塞" #Mysql的环境变量 export RABBITMQPATH=/usr/lib/rabbitmq/bin/ #获取所有队列的名字和每个队列中的消息数量,存入'queueNum'数组中 declare -A A queue Json queuelindex=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 #发送邮件 /usr/local/sbin/mysql.sh -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
写任务执行
crontab -e*/30 * * * * root sh /usr/local/sbin/mysql.sh