基于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 ]
邮件报警效果如下:


基于Nginx+Keepalived的LB服务监控(邮件报警)的更多相关文章
- zabbix的nginx监控+邮件报警
nginx监控 下载nginx的监控模板
- Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)
说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- Docker+Nginx+Keepalived实现架构高可用
一.背景 通过keepalived实现nginx高可用,由于在家不想弄多台主机来搞,所以将运行环境用docker封装来模拟跨主机 docker基础镜像:centos 说之前,简单介绍一下: Keepa ...
- zabbix实现邮件报警
说明: Zabbix监控服务端.客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常. 实现目的: 在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报 ...
- centos7安装ZABBIX 3.0+ 邮件报警【OK】
设置主机名: vi /etc/hosts 10.0.0.252 zabbix-server hostnamectl set-hostname 关闭防火墙: systemctl stop firew ...
- Zabbix邮件报警设置方法
实现目的: 在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱. 具体操作: 以下操作在Zabbix监控服务端进行 备注:Zabbix监控服务端 操 ...
- linux中Zabbix邮件报警设置配置步骤
使用外部邮箱账号发送报警邮件设置 配置Zabbix服务端外部邮箱 vi /etc/mail.rc #编辑,添加以下信息 set from=xxx@163.com smtp=smtp.163.com s ...
- Zabbix邮件报警配置
一.安装sendmail或者postfix yum install sendmail #安装 service sendmail start #启动 chkconfig sendmail on #设置开 ...
随机推荐
- 将爬取的数据保存到mysql中
为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...
- 解决windows下git push卡住问题的方法
问题描述: 在windows下向使用git协议传输的Git Repo进行push时会卡住. -- 这是windows上的msysgit的bug,在新版本上已经修复,但要在.gitconfig中做一项配 ...
- Emacs中使用shell(调出terminal)
在Emacs中使用shell(调出terminal) 方法: M-x eshell 注意:不能使用 M-x shell,这样调用的是 cmd命令,一些命令无法使用
- php处理手机号中间的四位为星号****
在显示用户列表的场景中,一般用到手机号的显示时都需要对手机号进行处理,一般是把中间的四位换成星号****,我本人用php处理的思路是进行替换,用****替换手机号的中间四位 代码如下: $all_lo ...
- January 11th, 2018 Week 02nd Thursday
Live, travel, adventure, bless, and don't be sorry. 精彩地活着,不停地前行,大胆冒险,心怀感激,不留遗憾. Everything we do is ...
- Mac下配置apache
一.前言 今天遇到问题,怎么配置apache在Mac上,原来Mac自带apache,只需要自己开启配置一下就行了. 二.步骤: 1.修改apache的http_conf文件 打开finder前往/pr ...
- Linux下编辑、编译、调试命令总结——gcc和gdb描述
GCC gcc是linux系统集成的编译器.在linux环境下编辑程序,首先需要克服的便是没有集成开发环境的一键式操作所带来的麻烦.这其中涉及命令行操作.编译选项的设定.文件依赖关系的书写(makef ...
- 简单使用Vuex步骤及注意事项
使用Vuex的步骤: (1)安装: 1.使用npm安装: npm install vuex --save 2.使用script标签引入 <script src="/path/to/vu ...
- 美人鱼 hdu 5784
Peter has a sequence a1,a2,...,ana1,a2,...,an and he define a function on the sequence -- F(a1,a2,.. ...
- 0 vs工程添加sdk
配置64位 库目录:(VC++目录) 可选配置 VS SDK(如果报错缺少kernel32.lib) C:\Program Files (x86)\Microsoft SDKs\Windows\v7. ...