基于Nginx+Keepalived的LB服务监控(邮件报警)

IDC两台机器上部署了Nginx+Keepalived主从模式的LB代理负载层,现在需要对LB进行每日巡检和服务监控,利用SendEmail邮件监控。

0)SendEmail部署

参考:http://www.cnblogs.com/kevingrace/p/5961861.html

1)SendEmail脚本配置

[root@NG-LB01 ~]# vim /opt/sendemail.sh
#!/bin/bash
# Filename: SendEmail.sh
# Notes: 使用sendEmail
#
# 脚本的日志文件
LOGFILE="/tmp/Email.log"
:>"$LOGFILE"
exec 1>"$LOGFILE"
exec 2>&1
SMTP_server='smtp.test.com'
username='monit@test.com'
password='monit@123'
from_email_address='monit@test.com'
to_email_address="$1"
message_subject_utf8="$2"
message_body_utf8="$3"
# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"
# 转换邮件内容为GB2312,解决收到邮件内容乱码
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"
# 发送邮件
sendEmail='/usr/local/bin/sendEmail'
set -x
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
  

发送邮件测试(发送邮件到kevin@test.com邮箱里):
[root@NG-LB01 ~]# chmod 755 /opt/sendemail.sh
[root@NG-LB01 ~]# /opt/sendemail.sh  kevin@test.con "邮件测试" "sendemail发送邮件啦!"

2)LB每日巡检脚本(VIP资源为10.0.11.26)

[root@NG-LB01 ~]# cat /opt/LB_CHECK.sh
#!/bin/bash
HOSTNAME=$(hostname)
IP=$(ifconfig|grep 10.0.11|awk '{print $2}'|cut -d":" -f2)
DATE=$(date +%Y.%m.%d-%H.%M.%S)
 
 
NUM1=$(ps -ef|grep nginx|grep -v grep|wc -l)
NUM2=$(ps -ef|grep keepalived|grep -v grep|wc -l)
NUM3=$(ip addr|grep 10.0.11.26|grep -v grep|wc -l)
 
if [ $NUM1 -ne 0 -a $NUM2 -ne 0 -a $NUM3 -ne 0 ];then
  /bin/bash /opt/sendemail.sh kevin@test.com "IDC外网LB每日巡检" "各位兄弟,注意啦! \nIDC外网LB目前健康快乐地跑在$HOSTNAME-$IP服务器上呢,一切正常! \n大伙儿可以放心地去钓鱼吧"
fi
 
 
每天早上8:30进行巡检
[root@NG-LB01 ~]# chmod 755 /opt/LB_CHECK.sh
[root@NG-LB01 ~]# crontab -l
30 8 * * * source /etc/profile;/bin/bash -x /opt/LB_CHECK.sh > /dev/null 2>&1

由于手动执行脚本没问题,而在crontab里定时自动执行可能会出现问题,故加上source /etc/profile

3)LB监控脚本

[root@NG-LB01 ~]# cat /opt/LB_MONIT.sh
#!/bin/bash
HOSTNAME=$(hostname)
IP=$(ifconfig|grep 10.0.11|awk '{print $2}'|cut -d":" -f2)
DATE=$(date +%Y.%m.%d-%H.%M.%S)
 
 
NUM1=$(ps -ef|grep nginx|grep -v grep|wc -l)
NUM2=$(ps -ef|grep keepalived|grep -v grep|wc -l)
NUM3=$(ip addr|grep 10.0.11.26|grep -v grep|wc -l)
 
if [ $NUM1 -eq 0 -o $NUM2 -eq 0 -o $NUM3 -eq 0 ];then
   /bin/bash /opt/sendemail.sh kevin@test.com "IDC外网LB运行情况监控" "告警主机:$HOSTNAME \n主机IP: $IP \n告警时间:$DATE \n告警等级:十分严重啊 \n告警信息:外网LB目前已不在$HOSTNAME服务器上正常运行,快点查看VIP是否转移到另一个LB节点,并确认LB服务是否正常提供! \n问题详情:LB failed on $HOSTNAME \n当前状态: PROBLEM"
else
   echo "IDC外网LB目前运行良好"
fi
 
 
每1分钟监控一次
[root@NG-LB01 ~]# chmod 755 /opt/LB_MONIT.sh
[root@NG-LB01 ~]# crontab -l
* * * * * source /etc/profile;/bin/bash -x /opt/LB_MONIT.sh > /dev/null 2>&1

温馨提示

if [ $NUM1 -ne 0 -a $NUM2 -ne 0 -a $NUM3 -ne 0 ]  等同于  if [ $NUM1 -ne 0 ] && [ $NUM2 -ne 0 ] && [$NUM3 -ne 0 ] 
if [ $NUM1 -eq 0 -o $NUM2 -eq 0 -o $NUM3 -eq 0 ]  等同于  if [ $NUM1 -eq 0 ] || [ $NUM2 -eq 0 ] || [$NUM3 -eq 0 ]

邮件报警效果如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

GitHub项目推荐 | 用于对机器学习模型进行对抗性攻击、防御和基准测试的Python库:CleverHans 3.0.0

项目地址:https://github.com/tensorflow/cleverhans

4536
来自专栏网络

HTML 正文内容提取库 Boilerpipe

Boilerpipe 是一个能从 HTML 中剔除广告和其他附加信息,提取出目标信息(如正文内容、发布时间)的 Java 库。 授权协议:Apache 开发语言...

3606
来自专栏Python中文社区

手把手教你用1行代码实现人脸识别

專 欄 ❈Kangvcar,Python爱好者,简书活跃作者,欢迎关注,打赏支持。❈ 环境要求: Ubuntu17.10 Python 2.7.14 环境...

2.9K10
来自专栏Hadoop实操

模型训练和部署-Iris数据集

在前面的文章Fayson介绍了关于《CDSW1.4的新功能》、《Hadoop之上的模型训练 - CDSW1.4新功能模块》、《CDSW1.4的Experimen...

1992
来自专栏ATYUN订阅号

小白也可以操作的手机TensorFlow教程:Android版和iOS版

TensorFlow通常用于训练海量数据,但新兴的智能手机市场也不可忽略。那些不能等待未来和love Machine Learning的人正在通过制造工具来突破...

4046
来自专栏磨磨谈

利用火焰图分析ceph pg分布

性能优化大神Brendan Gregg发明了火焰图来定位性能问题,通过图表就可以发现问题出在哪里,通过svg矢量图来查看性能卡在哪个点,哪个操作占用的资源最多 ...

1252
来自专栏AI科技大本营的专栏

TensorFlow 1.8.0正式发布,Bug修复和改进内容都在这里了

【导语】TensorFlow 1.8.0 近日正式发布,新版本主要有以下改进内容,AI科技大本营对其编译如下。 ▌主要特点及改进 可以将 tf.contrib...

4159
来自专栏人工智能LeadAI

用python编写一个本地论文管理器

介绍和引入 最近初学NLP相关的深度学习,下了很多论文,数量一多,发现论文管理是个问题。 首先论文数目一多,必须要按类别放到子文件夹下。但是某一篇论文,往往有...

3879
来自专栏简书专栏

深度学习环境搭建-CUDA9.0、cudnn7.3、tensorflow_gpu1.10的下载

本文作者接触深度学习2个月后,开始进行目标检测实践。 本文作者的专题《目标检测》链接:https://www.jianshu.com/c/fd1d6f784c...

4982
来自专栏人工智能LeadAI

TensorFlow从0到1 | 第十八章: 升级手记:TensorFlow 1.3.0

《TensorFlow从0到1》写到现在,TensorFlow的版本也从当时的1.1.0迭代到了8月初发布的1.3.0。可以预见在未来很长一段时间里,它仍会持续...

3077

扫码关注云+社区

领取腾讯云代金券