在 MeterSphere 使用过程中,正常情况下所有组件服务状态都是 healthy ,但是某些特殊操作会导致个别服务出现异常(不符合资源配置的压力测试、异常的脚本执行等)。特别是当前微服务架构,某个服务异常并不会影响其他服务的正常使用,只有当与模块进行通信时,才有异常信息提示,感知被动且有一定的滞后性和。为了避免服务长时间中断,需要建立定时服务监控机制,并通过邮件的方式主动通知 MeterSphere 系统管理员,及时恢复异常服务。
1、准备内容
(1)邮件服务安装包
(2)邮件服务器(网络可通)
此处是以QQ邮箱作为邮件服务器
(3)MeterSphere 服务监控安装脚本(包括邮件服务安装)
#!/bin/bash
echo 开始安装 MeterSphere 服务监控
mkdir -p /opt/metersphere/check
cp ./ms_check.sh /opt/metersphere/check
chmod +x /opt/metersphere/check/ms_check.sh
# 安装邮件发送端
mail_account=邮箱信息
mail_passwd=xxxx
smtp_server=smtps://smtp.qq.com:465
# 配置收件人,多个收件人用英文,分割
mail_receipt=收件人邮箱地址
sed -i "s/mail_address/$mail_receipt/g" /opt/metersphere/check/ms_check.sh
# MS平台
title="MeterSphere测试平台"
sed -i "s/title_content/$title/g" /opt/metersphere/check/ms_check.sh
# 服务器ip
ip=xx.xx.xx.xx
sed -i "s/ip_address/$ip/g" /opt/metersphere/check/ms_check.sh
# 配置监控执行时间间隔,默认10分钟
min=10
# 配置定时任务
echo "*/$min * * * * root /opt/metersphere/check/ms_check.sh" >> /etc/crontab
systemctl restart crond.service
# 安装邮件服务与配置
rpm -ivh ./mailx-12.5-19.el7.x86_64.rpm
cat << EOF >> /etc/mail.rc
set bsdcompat
set from=$mail_account
set smtp=$smtp_server
set smtp-auth-user=$mail_account
set smtp-auth-password=$mail_passwd
set smtp-auth=login
EOF
echo "安装完成,发送测试邮件至收件人邮箱"
echo "This is a test mail for metersphere" | mail -s "metersphere TEST" $mail_receipt
(4)服务检测及邮件发送脚本
#!/bin/bash
#配置项
title=MeterSphere测试平台
mail_receipt=zhaojun@fit2cloud.com
service_check(){
touch /tmp/ms_status
for ServiceName in `msctl status | awk 'NR >= 4{print $1}'`;
do
exist=`docker inspect --format '{{.State.Running}}' ${ServiceName}`
if [ "$exist" != "true" ];then
echo "$title主机 $ip 的 $ServiceName 服务模块未启动" >> /tmp/ms_status
else
echo "${ServiceName} is up"
fi
done
error_num=`cat /tmp/ms_status | wc -l`
if [ $error_num -ge 1 ];then
cat /tmp/ms_status | mail -s "$title应用服务器服务故障" $mail_receipt
fi
rm -rf /tmp/ms_status
}
service_check
2 、安装和验证过程
(1)将附件中所有的文件拷贝到服务器的某一个目录下, 如果安装目录下不是默认的/opt/metersphere ,记得修改install.sh脚本中的目录。
(2)修改并配置 install.sh 及 ms_check.sh 中的邮件信息等关键参数。
(3)执行 install.sh,然后关掉某一个服务,例如:docker stop ms-node-controller。
(4)等待 10 分钟之后,查看是否收到对应的监控提醒邮件。
(5)收到邮件之后,执行 msctl reload,恢复 MeterSphere 服务。
效果如下: