服务监控程序

上一篇 / 下一篇  2011-12-28 16:08:05 / 个人分类:其他技能

前段时间,服务器还不稳定,服务经常无故中断。所以老大给了我一个任务,写一个脚本,在相关服务中断之后,即时向相关人员发送email

相关联知识(perlcrontab)

开始设想用ping的方式检测服务器能否打开,但是服务挂掉了,可以ping通的情况肯定是会存在的。所以,必须检测该服务是否正常。开发那边给了我一个服务测试页,所以,我只需要检测该服务测试页的HTTP 状态代码一些常见的状态代码为:

· 200 - 服务器成功返回网页

· 404 - 请求的网页不存在

· 503 - 服务器暂时不可用

HTTP状态代码参考地址(http://support.google.com/webmasters/bin/answer.py?hl=zh-Hans&answer=40132 )。所以,我只需要检测返回的是不是200就行了,假如不是200就发送邮件到相关人员的邮箱。检测时间间隔,可以自己定。我定的是10分钟检测一次。OK,看代码了。


#!/usr/bin/perl -w

use strict;#启用严格代码检查

use Net::SMTP_auth;#使用SMTP_auth模块,注①

use LWP::UserAgent;#使用UserAgent模块

my $url = qq(http://www.abc.com);#定义监控的地址,可以定义多个,定义多个的情况,请参见perl数组的定义

my $lwp = LWP::UserAgent->new();

my $response = $lwp->get($url);

my $status = $response->status_line();

my $bool = ($status =~ /200 OK/);#正则匹配返回的状态

if(!$bool){

my $mailhost = 'smtp.163.com';

my $mailfrom = 'abcd@163.com';#定义发件人邮箱

my @mailto = ('ddfdf@163.com','def@139.com');#定义收件人邮箱,可以定义多个

my $user = 'abcd';#发件人邮箱登录名

my $passwd = qq(jkjdkf);#发件人邮箱密码

my $subject = qq(Service Error!);#邮件title,可自定义

##

my $text = qq(Server is not work now,need help! );#邮件内容,可以自定义

my $smtp = Net::SMTP_auth->new($mailhost,Timeout=>120,Debug => 1) or die "Error.\n";

$smtp->auth('LOGIN',$user,$passwd);

foreach my $mailto(@mailto) {

        $smtp->mail($mailfrom);

        $smtp->to($mailto);

        $smtp->data();

        $smtp->datasend("To: $mailto\n");

        $smtp->datasend("From:$mailfrom\n");

        $smtp->datasend("Subject: $subject\n");

        $smtp->datasend("\n");

        $smtp->datasend("$status\n$text\n");

        $smtp->dataend();

        }

        $smtp->quit;

}

注①:系统自带的perl没有安装SMTP_auth模块,需要用户自己安装。采用匿名发送邮件的形式可以不用安装SMTP_auth模块。

SMTP_auth模块安装过程



1、安装Perl模块Module::Build
# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.36_11.tar.gz
# tar xvf Module-Build-0.36_11.tar.gz 
# cd Module-Build-0.36_11
# perl Build.PL 
# ./Build 
# ./Build test
# ./Build install
# cd ..
2安装Perl模块Authen::SASL
# wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Authen-SASL-2.15.tar.gz
# tar xvf Authen-SASL-2.15.tar.gz 
# cd Authen-SASL-2.15
# perl Makefile.PL 
# make test
# make install
# cd ..
3安装Perl模块Net::SMTP_auth
# wget http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
# tar xvf Net-SMTP_auth-0.08.tar.gz 
# cd Net-SMTP_auth-0.08
# perl Makefile.PL 
# make test
# make install
# cd ..

OK,基础准备工作完成了,现在要让这个玩意每隔10分钟运行一次了。Linux crontab可以帮我们完成这个任务。Crontab 基础知识参考地址(http://www.itwhy.org/2011/07-31/728.html  和 http://www.sfzkx.info/technology/linuxstudy/590.html#more-590 ),再看不懂就跟我留言。任务完成,测试成功,撒花!~~~~~~~~~~~


TAG:

 

评分:0

我来说两句

Open Toolbar