`

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

 
阅读更多
转至: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脚本,它们各自提供了不同的作用。另外重要的是解决问题的思路,如何在不可能的情况下绕过问题从另外一个方面考虑解决方案。
分享到:
评论

相关推荐

    服务器自动部署和远程性能监控

    而服务器托管程序则负责辅助远程部署、自启动和状态监控,同样具备开机自启动和托盘区域功能,能监控托管服务器的状态,包括自动重启功能。 远程部署的条件包括:服务器主控程序需要预置各种服务器类型的安装程序,...

    远程重启服务器

    "远程 重启 服务器"的标签进一步确认了我们要探讨的主题:如何安全、有效地执行远程服务器重启。通常,这需要一种远程访问协议,如SSH(Secure Shell)对于Linux服务器,或者RDP(远程桌面协议)对于Windows服务器。...

    怎样远程重启服务器.docx

    远程重启服务器解决方案 远程重启服务器是许多公司、网站、论坛所面临的一个共性问题,因为服务器大多数都放在机房,需要托管机房来管理和维护服务器,但是当服务器宕机时,托管机房的技术人员不一定能够及时地重启...

    网络眼睛云服务器监控系统使用教程

    《网络眼睛云服务器监控系统使用教程...总的来说,网络眼睛云服务器监控系统通过其详尽的监控和预警机制,为企业提供了一套高效且可靠的服务器管理解决方案,确保了服务器的稳定运行,降低了运维成本,提高了服务质量。

    jprofiler 远程监控 tomcat 服务器

    你可以通过JProfiler客户端连接到远程服务器,查看CPU使用率、内存分配、线程状态等关键指标,帮助诊断性能问题和内存泄漏。 总之,通过JProfiler远程监控Tomcat服务器,我们可以实时了解服务器性能状况,及时发现...

    浪潮老M4服务器命令行冷重启BMC

    - **BMC的工作原理**:BMC是一种嵌入式微控制器,主要用于监控服务器的硬件状态,如温度、电压和风扇转速等,并能够远程控制服务器的开关机。 - **其他管理工具**:除了通过命令行接口外,还可以利用浪潮服务器自带...

    教你如何远程重启服务器.docx

    一旦安装好,只需拨打与开机卡关联的电话号码或手机号,经过短暂的等待时间,根据语音提示输入登录密码,即可对远程服务器进行开机或关机操作。具体操作包括: - 按1#键:模拟手动开机。 - 按2#键:模拟手动关机,...

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

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

    UPS远程监控解决方案.pdf

    3.支持远程自测、关机及重启UPS功能(需UPS支持):让用户能够通过远程控制UPS,保护多达250台网络服务器/工作站,按照设定实现安全关机,以避免因UPS电池电力耗尽所造成的数据丢失、设备损坏。 4.完善的UPS事 件...

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

    远程监控软件是信息技术领域中的一种重要工具,它允许用户通过网络在不同的地理位置对目标设备进行...通过C#和Visual Studio这样的工具,开发者可以构建出强大且易用的远程监控解决方案,满足各种企业或个人的需求。

    教你如何远程重启服务器.doc

    网络人(Netman)个人版是一个免费且安全的远程控制工具,能穿透内网限制,提供实时屏幕监控、远程键盘和鼠标控制、文件的上传下载等功能,使得用户如同坐在自己的电脑前一样操作远程服务器。此外,它还提供了企业版,...

    java远程监控,有源码的

    - "java-remote-control"很可能包含了一个简单的JMX远程监控示例,包括服务器端的MBean实现、MBean Server配置以及客户端的连接和控制代码。 - 开发者可以通过阅读源码了解如何创建和注册MBean,设置JMX连接器,并...

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

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

    短信管理重启服务器

    总的来说,"短信管理重启服务器"是一种高效且灵活的远程服务器管理技术,结合了IIS服务控制和远程桌面管理,为IT管理员提供了更加便利的运维手段。通过短信,管理员可以在任何时间、任何地点对服务器进行监控和管理...

    delphi 远程计算机监控

    在IT领域,远程监控是一种重要的技术,它允许用户在远离目标设备的位置进行管理和控制。Delphi,作为一种强大的Object Pascal编程环境...通过巧妙地组合和利用这些技术,可以构建出功能强大且可靠的远程监控解决方案。

    IBM服务器远程管理解决方案.doc

    IBM服务器远程管理解决方案主要聚焦于如何通过硬件级别的远程管理系统,尤其是IBM的Remote Supervisor Adapter II (RSA II)来实现对服务器的高效、安全和稳定的远程监控与管理。在现代IT环境中,尤其是在分布式和...

    电信设备-一种基于手机APP应用和加密短信息的服务器远程重启方法.zip

    这种方法结合了移动设备的便携性和现代加密技术的安全性,确保了远程服务器管理的高效和可靠。然而,为了保障系统的稳定运行,必须定期更新和维护APP,以及监控服务器管理平台的安全状况,以抵御潜在的威胁。

    远程监控及其实现技术

    这种软件采用C/S(客户端/服务器)架构,分为监控服务程序(mService)和控制台(mConsole)。mService安装在每台需要监控的主机上,收集如屏幕画面、运行进程等监控信息;mConsole则安装在管理员的计算机上,与...

Global site tag (gtag.js) - Google Analytics