目錄
shell腳本監控rocketmq集羣代碼如下:
1、配置文件:
serviceNames=namesrv,broker
[email protected]
sendEmailTitle=測試郵件主題
sendEmailContent=測試郵件內容
2、代碼:
注意:不同linux設備的sh路徑可能不同,需通過which sh查看sh的絕對路徑修改即可。
#!/bin/sh
#防止中文亂碼
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
#file_conf.txt文件路徑
file_conf="/data/shell/check_rocketmq_conf.txt"
#判斷文件是否存在
if [ -f "${file_conf}" ];then
echo $(date +'%Y-%m-%d %H:%M:%S')" 配置信息文件存在"
#獲取等號前內容,作爲map中的Key值
dbArrOne=($(awk -F'[=]' '{print $1}' ${file_conf} ))
#獲取等號後內容,作爲map中的value值
dbArrTwo=($(awk -F'[=]' '{print $2}' ${file_conf}))
#創建一個空map
declare -A map=()
#通過循環,將db_backups_conf配置文件中的信息存儲在map中
for((i=0;i<${#dbArrOne[@]};i++))
do
map[${dbArrOne[i]}]=${dbArrTwo[i]}
done
#獲取收件人的郵件賬號的字符串
semdEmailTo=${map["semdEmailTo"]}
#獲取服務名的字符串
serviceNamesStr=${map["serviceNames"]}
#獲取默認的字符串分隔符
old_ifs="$IFS"
#設置字符串分隔符爲逗號
IFS=","
#將收件人的郵件賬號value值的字符串進行分隔,獲取一個數組
semdEmailToArr=($semdEmailTo)
#將服務名的名稱value值得字符串進行分隔,獲取一個數組
serviceNamesArr=($serviceNamesStr)
#將字符串的分隔符重新設置爲默認的分隔符
IFS="$old_ifs"
#記錄有問題服務的服務名
problemServiceName="";
for serviceName in ${serviceNamesArr[@]}
do
rabbitmq=`ps -ef|grep ${serviceName} | grep -v 'grep\|tail' | awk '{print $2}'`
if test -z ${rabbitmq};
then
problemServiceName=${problemServiceName}""${serviceName}","
echo $(date +'%Y-%m-%d %H:%M:%S')":rabbitmq服務不正常:"${serviceName}
else
echo $(date +'%Y-%m-%d %H:%M:%S')":rabbitmq服務正常:"${serviceName}
fi
done
#判斷有問題的服務是否不爲空串,如果不是空串就發送郵件給管理員
if [ ${problemServiceName} != "" ];
then
#遍歷收件人的郵箱地址,逐個發送郵件
for email in ${semdEmailToArr[@]};
do
echo ""${map["sendEmailContent"]}","${problemServiceName} | mail -s ""${map["sendEmailTitle"]} ${email}
done
else
echo $(date +'%Y-%m-%d %H:%M:%S')":rabbitmq服務全都正常"
fi
else
echo "文件不存在"
fi
3、配置參數說明:
參數意義如下:
serviceNames=軟件rocketmq需要監控的服務,namesrv和broker這兩個就
semdEmailTo=收件人郵箱,多個收件人郵箱用逗號隔開
sendEmailTitle=測試郵件主題(文本內容中一定不能包含=)
sendEmailContent=測試郵件內容(文本內容中一定不能包含=)
4、使用注意事項:
使用注意事項:
1、默認的是.sh、.txt文件都要放在/data/shell腳本下,如果放置的路徑變了,需要修改.sh中讀取.txt配置文件的路徑
2、對於不同的Linux環境下,要修改db_backups_conf.txt文件中的配置信息,比如filePath的路徑等信息
3、備份異常發送郵件提醒採用的是mail,運行的linux上提前先安裝好mail並配置到mail.rc發送郵件的信息纔可以。