基于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 #设置开 ...
随机推荐
- JQuery实战中遇到的两个小问题$(document).ready() 、bind函数的参数传递问题
一.$(document).ready() 与 window.onload的区别 1.执行时间 window.onload 必须等到页面内所有元素(包括图片 css js等)加载完毕后才会执行. $( ...
- C# RSA 加密
class Sign_verifySign { #region prepare string to sign. //example format: a=123&b=xxx&c (wit ...
- Ubuntu下matplotlib的中文显示
真真地被matplotlib的中文显示折磨的不行了.简要记下解决方案,防止以后重新配又是蛋疼菊紧. 我的环境:系统是Ubuntu 13.04,Python是系统自带的,matplotlib是apt安装 ...
- SQL 三范式
第一范式:无重复的列,一列只能包含一个字段 第二范式:主键约束,一行只能被唯一标识 第三范式:非主键字段要严格依赖于主键字段
- 使用Maven分环境打包:dev sit uat prod
使用Maven管理的项目,经常需要根据不同的环境打不同的包,因为环境不同,所需要的配置文件不同,比如database的连接信息,相关属性等等. 在Maven中,我们可以通过P参数和profiles元素 ...
- Java设计模式之十二 ---- 备忘录模式和状态模式
前言 在上一篇中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern).本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pat ...
- 【BZOJ4310】跳蚤
[BZOJ4310]跳蚤 Description 很久很久以前,森林里住着一群跳蚤.一天,跳蚤国王得到了一个神秘的字符串,它想进行研究. 首先,他会把串分成不超过 k 个子串,然后对于每个子串 S,他 ...
- (13)Python文件操作
- tomcat7的catalina.sh配置说明
捞财宝项目8G内存tomcat7的配置JAVA_OPTS="-Xms1024m -Xmx2048m -XX:PermSize=128M -XX:MaxNewSize=2048M -XX:M ...
- SQL优化思路大全
一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断 ...