1. 程式人生 > >shell指令碼監控rabbitmq佇列訊息數量(堵塞情況)

shell指令碼監控rabbitmq佇列訊息數量(堵塞情況)

#!/bin/bash
##################################################
# vim /etc/crontab
# */30 * * * * root sh /mnt/rabbitmqMonitor/rabbitmq_monitor.cron
##################################################
#堵塞最大數量
maxNum=1000
#接收者
email_reciver="[email protected] [email protected]"
#smtp伺服器地址
email_smtphost=smtp.exmail.qq.com
#傳送者郵箱
[email protected]
#郵箱使用者名稱 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/    目錄下面 執行指令碼即可