服务器宕机监控、检测、报警程序(139绑定手机短信报警)monitor_down.sh

宕机监控报警程序


一.  需求来源

宕机对运维人员来说,最痛苦了。如何检测一台服务器是否还在正常运行,如果该服务器宕机,如何在第一时间监测到并通知一线运维人员进行维护,最大化减少损失。

 

二.  程序功能

对指定服务器进行宕机监测,如果确实宕机,则发送email到139邮箱(绑定手机,实现短信报警)

 

三.源程序


#!/bin/bash
#author         longxibendi
#blog           http://blog.csdn.net/longxibendi
#function       ping  a  host   and   output  to  file     ping_longxibendi.log
#ping  destination
function_ping ()
{
 ping  -c 3     172.29.141.115  >  ping_longxibendi.log
}
#downtime detection and  send email to   SA
function_downtime_detection_AND_sendemail ()
{
         if  [ "`cat ping_longxibendi.log | grep Unreachable`"  !=  ""    ] ; then
                /usr/local/bin/sendEmail -f monitor_sys@163.com -t longxibendi@139.com -s smtp.163.com -u "Server downtime" -xu monitor_sys -xp 123456789 -m "`date;echo "172.29.141.115" ` "
         fi
}
#main function
function_main ()
{
while    true
do
        function_ping ;
        sleep   2
        function_downtime_detection_AND_sendemail ;
        sleep  2

done
}
function_main ;


四.程序说明

1.通过  function_ping    ,每隔4秒对 主机 172.29.141.115 进行ping 操作,(当然,如果主机172.29.141.115的防火墙,或者内过滤ICMP包,那么这个程序显然不能用)将输出重定向到ping_longxibendi.log 文件中

 

2.通过 function_downtime_detection_AND_sendemail  ,每隔4秒,通过ping_longxibendi.log判断是否有没有ping通的迹象,如果有,则调用 sendEmail 邮件(手机短信)报警。

 

3.监控间隔时间说明  ,可以将 第一个 sleep 改为   150   ,第二个 sleep 改为  150  ,这样每隔5分钟监控一次。

 

四.使用环境说明

 

1.主机 A(172.29.141.112)   主机B (172.29.141.115)    ,

   在A上部署该监控程序(monitor_down.sh),用于监控B

 

2.正常情况下A能ping通B

   因为用的ping命令,所以如果使用该程序,需要在正常情况下A ping 通 B  。对企业来说,这可能就需要防火墙和Linux内核参数(当然,如果之前没有修改net.ipv4.icmp_echo_ignore_all,则不需要调整)

 

3.安装了 sendEmail  并 在139邮箱注册(绑定手机),方可有邮件(短信)报警提示

 

五.程序测试

 

[root@localhost monitor]# sh  monitor_down.sh

May 21 20:33:46 localhost sendEmail[9175]: Email was sent successfully!

May 21 20:33:56 localhost sendEmail[9204]: Email was sent successfully!

Terminated

[root@localhost monitor]# 

 

六.程序扩展

这个程序,只是实现宕机监控并报警,但没有实现故障转移,自动切换功能。其实,只要稍微修改一下程序就可以实现故障转移,自动切换。故障转移,比如可以通过在热备机A上部署该程序,监控B,一旦B宕机,则A执行浮动改IP和更新下层服务器arp列表即可。可以参考

http://blog.csdn.net/longxibendi/archive/2011/05/21/6436606.aspx

 

声明:本文档可以随意更改,但必须署名原作者

作者:凤凰舞者 qq:578989855


好的,针对您的问题,我可以为您提供如下 redis_master.sh 脚本配置: ``` #!/bin/bash # redis_master.sh: redis master failover script for keepalived REDIS_CONF="/etc/redis/redis.conf" REDIS_CLI="/usr/local/bin/redis-cli" REDIS_PID=`cat /var/run/redis.pid` # promote the slave as the new master promote_new_master() { # get the IP address of the slave that will be promoted new_master_ip=$(/sbin/ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}') # promote the slave $REDIS_CLI SLAVEOF NO ONE # update the redis configuration file to reflect the new master sed -i "s/^\(slaveof\).*/\1 $new_master_ip 6379/" $REDIS_CONF # restart redis /etc/init.d/redis-server restart } # check if redis master is running if [ -z "$REDIS_PID" ]; then # redis master is not running, promote the slave promote_new_master else # redis master is running, check if it is responding redis_status=`$REDIS_CLI PING` if [ "$redis_status" != "PONG" ]; then # redis is not responding, promote the slave promote_new_master fi fi ``` 这是用于 Redis 双主模式下 keepalived 自动切换的脚本,当 keepalived 检测到 master 节点宕机后,会执行该脚本将 slave 节点提升为新的 master 节点。 该脚本的作用是检测当前 Redis 是否处于 master 节点状态,如果是,则检测 Redis 是否能够正常响应,如果不能,则将 slave 节点提升为新的 master 节点。如果 Redis 不处于 master 节点状态,则直接将 slave 节点提升为新的 master 节点。 需要注意的是,该脚本需要在 Redis 的 master 节点上运行,同时需要配置 keepalived 的 notify_master 和 notify_backup 选项,以便在 Redis 切换时自动执行该脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值