消息隊列——rocketmq——shell腳本監控集羣節點異常發送郵件通知

目錄

1、配置文件:

2、代碼:

3、配置參數說明:

4、使用注意事項:


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發送郵件的信息纔可以。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章