`

简单远程服务器监控重启方案

 
阅读更多
转至:http://blog.csdn.net/hfahe/article/details/6627033
摘要:如果你的服务器主要服务不定期被kill掉,如何来尽可能保证服务正常?

    前几天某台服务器出现了问题,主要的进程(包括Web服务、top、vi这样的命令)都会不定期被kill掉,经过分析认为这台服务器的系统出现了问题,必须要进行重装。而这台服务器上面挂载了很重要的Web服务,要保证服务还能够正常的运行,必须要进行服务的迁移。

    但是新服务器到位还需要一定时间,这段时间内我们如何来保证服务的正常性呢?采用人工的方式费时费力,而且0点到8点全时段监控是不太可能的。采用crontab的方式可行,但是问题是crontab最小的运行间隔为1分钟,服务在1分钟内出现问题的几率很大,那么服务最长不可用的时间为1分钟,影响很大。用执行脚本的方式可行,但是也会被kill掉,无法起到一直监控的作用。有什么好的方式呢?

    解决问题的思路是我们在其他服务器上监控服务状态(这个很容易实现),并且通过远程执行脚本的方式来进行服务的重启。

1、  监控服务状态

    监控服务状态的方式有多种,例如远程获取系统进程列表分析和HTTP请求。我们用最简单的方式:通过HTTP请求的状态判断服务的可用性。

1)  先在被监控的服务器(下文用服务器1代替)上写一个简单的PHP页面,只需要输出固定的内容。
<?php
           echo “alive”;
?>

2)  在监控服务器(下文用服务器2代替)上用Perl脚本访问这个Web页面,如果取得的内容和确定的内容不一致,视为服务不可用(也可以使用HTTP状态码判断)。下面是check_down.pl代码:
use LWP::Simple;
use POSIX qw(strftime);
 
sub convert_format_time {
   my $time = shift;
   my $utc = strftime( "%z", localtime );
   $utc = substr( $utc, 0, -2 );
   return strftime( "%Y-%m-%d %H:%M:%S", localtime( ( 8 - $utc )* 60 * 60 + $time ) );
}
 
while(true) {
        open($FH,">>check_result.out") or die "$!";
        $result =LWP::Simple::get("http://xxx.xxx.xxx.xxx/check_down.php");
        $time = convert_format_time(time);
 
        if($result ne 'alive') { # server error
                print $FH "serverdown!-" . $result . "-" . $time . "\n";
        }
       else  { # server alive
                print $FH "serveralive.-" . $time . "\n";
        }
 
        close($FH);
        sleep(1);
}

2、  远程执行重启脚本

    检测到服务不可用,下面是最关键的步骤,远程执行重启脚本。

1)下面是服务器1上检测并重启的Shell脚本check_down.sh。
#!/bin/bash
php_procs=`psaux | grep php-fpm | grep -v grep | wc -l`
 
if [ $php_procs-lt 1 ]
then
        /etc/init.d/nginx start
        /etc/init.d/php5-fpm start
fi

2)我们要在服务器2上调用服务器1上的此脚本,可以采用ssh的方式,但是关键是执行ssh命令时不需要输入密码。

    执行ssh命令不需要密码的方式如下:

        在服务器2上执行"ssh-keygen-t rsa",一路回车即可。
        在服务器1进入/root/.ssh目录,执行“viauthorized_keys”,将服务器2上/root/.ssh/id_rsa.pub文件中的内容追加到此文件中。
        可以直接在服务器2上使用“ssh root@服务器1的ip”的方式登陆了,远程执行重启脚本的方式是“ssh root@服务器1的ip '/path/check_down.sh'”。

3)  调整Perl脚本,在服务器down掉的情况下加入远程执行重启脚本的调用。
if($result ne 'alive') { # server error
        $restart_result = `ssh root\@ip'/usr/local/bin/check_down.sh'`;
        print $FH "serverdown!-" . $result . "-" . $time . "\n";
        print$FH "$restart_result" . "\n";
}


大功告成!

    在服务器2上启动Perl脚本“perl check_down.pl&”,然后就可以在输出的日志文件里看到结果了:
server alive.-2011-07-10 21:05:25
server down!--2011-07-22 21:05:26
Starting nginx: nginx.
 * Starting PHP5 FPM...
   ...done.
 
server alive.-2011-07-10 21:05:29

总结:

    如上的方案很简单,但是编写了Shell、Perl、PHP脚本,它们各自提供了不同的作用。另外重要的是解决问题的思路,如何在不可能的情况下绕过问题从另外一个方面考虑解决方案。
分享到:
评论

相关推荐

    西西服务器流量监控管家 v1.4.0

     【软件功能】* 实时监控服务器流量,支持图形化显示流量走势图* 实时监控服务器IIS状态* 一键连接远程桌面* 支持远程重启服务器/重启IIS* 支持远程获取服务器基本信息、获取IIS主机头信息等。 Version 1.4.0.0 ...

    Web服务器运行状态实时监控 v2.0

    可以随意增加、删除、修改需要监控的服务,具有锁定本机桌面、重启远程IIS 服务、对服务器发送DOS 命令、远程重启关闭服务器、远程桌面控制、远程文件传输、网络校时等功能。如果监控的任何一个服务出现问题,监控端...

    基于JAVA CS远程监控系统软件的实现(源代码+WORD论文文档论文).zip

    远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。本系统从系统需求分析、概要设计、详细设计到具体的编码实现和后期的代码优化、功能测试都严格遵循了软件工程的思想。 关键词:远程监控;Java Robot...

    远程监控软件(包括服务器端和客户端)

    挺实用的远程监控软件,包括远程重启,开机,远程桌面。。。

    基于JAVA CS远程监控系统软件的实现.rar

    服务器端:部署在管理员端的服务器程序,接收和处理来自客户端的监控数据,提供远程控制和管理功能。 管理界面:管理员通过管理界面登录系统,查看监控画面、执行远程操作等。 技术实现: 远程桌面协议:使用基于...

    Web服务器运行状态实时监控 v2.0.rar

    可以随意增加、删除、修改需要监控的服务,具有锁定本机桌面、重启远程IIS 服务、对服务器发送DOS 命令、远程重启关闭服务器、远程桌面控制、远程文件传输、网络校时等功能。如果监控的任何一个服务出现问题,监控端...

    西西服务器流量监控管家 V1.4.0.zip

    * 支持远程重启服务器/重启IIS * 支持远程获取服务器基本信息、获取IIS主机头信息等。 Version 1.4.0.0 (2012-06-14) - 修正一处程序退出时可能引起的线程错误 - 优化一处引起程序启动慢的问题 - ...

    网络眼睛服务器监控系统企业版客户端-v6.0.3

    功能介绍:可以手机远程管理服务器,可以执行dos命令,内部关机,重启,锁屏,等等功能,可以添加预设定命令 端口监控&ping监控(云监控模式,需要登录web管理端进行添加服务器进行端口监控和ping值监控) 登录...

    WEB服务器运行状况监控 v1.3.3

    可以实时监控您的WEB...网络恢复检测,非法重启检测,设定是否远程手动重启客启端功能:以半透明的工具条方式总置顶显示,接收服务器运行状况数据并滚动显示,服务器时断线警笛声报警,支持输入密码远程重启服务器

    web服务器监控器

    是一款服务器监控器,希望大家下载 实现了实时监控,预警,远程重启

    一种基于PHP基于Linux的远程管理系统客户端的设计与实现(含php源码和文章说明和数据库)

    在此系统中实现了文件操作管理、远程运行shell命令、对系统进程的监控、对系统的关机/重启、对系统用户/组的操作、rpm包组的管理、对网络参数的查看与配置、对常见服务器的基本管理等功能。系统管理员可使用系统中的...

    服务器监控软件4.6

    如防止asp加密的木马运行,定时重启服务器和iis。修改远程桌面端口等等. . 2011年7月24日 4.5 软件升级: 修正了些软件的错误,增加了换皮肤功能. . 2011年6月2日 4.4 软件升级: 修正了导入日志慢的错误. . 2011...

    使用IPMI控制/监控Linux服务器

     2、在设备A上,通过命令,控制远程设备B,开机、关机、重启。(看到这个有没有一点想做坏事的冲动,哈哈)  IPMI的介绍,基本原理,和必备条件,可参考[1]中说明,很详细畅。  [1]:使用ipmitool实现Linux系统...

    Linux系统监控shell程序包-含内存cpu硬盘监控进程监控进程守护删除过期日志url监控webservice监控

    sysWeblogicMonitorRestart.sh:系统weblogic监控重启(守护进程),当weblogic进程停止时调用脚本(startPssc.sh)自动重启 startPssc.sh:重启weblogic并生成带日期的日志文件 sh\utils:工具文件夹 ...

    VSIP服务器虚拟化解决方案.pptx

    运行虚拟机的宿主服务器,CPU必须支持VT技术,CPU总核心数量至少8核,内存容量大于16GB 运行VSIP管理服务的主控服务器,单台服务器CPU总核心数量至少4核,内存容量大于8GB 主管理服务器监控与远程管理宿主服务器的...

    远程定时关机重启工具 v1.0免费版

    为您提供远程定时关机重启工具下载,远程定时关机重启工具是网友自制小工具,远程关闭、重启电脑,适用于服务器假死,相信有朋友会用得到!开发介绍 今天搜帖子,发现一个悬赏贴,内网服务器总是假死,又能ping通,...

    PHP基于Linux的远程管理系统服务器端的实现(源代码+论文)

    在此系统中实现了文件操作管理、远程运行shell命令、对系统进程的监控、对系统的关机/重启、对系统用户/组的操作、rpm包组的管理、对网络参数的查看与配置、对常见服务器的基本管理等功能。系统管理员可使用系统中的...

    远程控制任我行 v8.3

    远程命令控制:包括远程关机、远程重启计算机、锁定鼠标、锁定桌面及锁定任务栏等多项功能限制; 远程注册表操作:对主键的浏览、增删、复制、重命名和对键值的读写等所有注册表操作功能; 远程其他控制:获取远程...

Global site tag (gtag.js) - Google Analytics