目录
shell脚本监控rocketmq集群代码如下:
1、配置文件:
serviceNames=namesrv,broker
semdEmailTo=117495555874@qq.com
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发送邮件的信息才可以。