用Linux中计划任务+PHP网页程序对服务器运行状况

利用Linux中的计划任务+PHP网页程序,实现对web服务器运行状况的监测【每5分钟监测一次,并邮件提醒】

一、我的监测服务器环境:
rhel5.5+apache2.2+php5

二、功能描述:
写一个PHP页面,实现如下功能:
请求要监控的WEB服务器的某一个页面的内容,如果返回不到数据,或者返回的数据里没有包含我期望的代码【用于自定义错误页面时的情况】,那我就认为WEB服务出问题了【宕机或者遭到内容改写攻击】,然后就发送一个邮件出来,这个邮件可以和手机进行绑定【139邮箱可以做到】
而我在计划任务里去做什么呢?每隔5分钟,就去请求我的这个监测页面。
最终,我实现了每隔5分钟对服务器的运行状况进行检查的目的。

三、说明
这里发送邮件的代码,也是参考了网友们的贡献,非原创。。
发送邮件有两个函数,一个是Wndows服务器下用的,一个是Linux服务器下用的,如果你是Lnux,请使用带_unix后缀的函数。


四、如何实现这个计划任务?
编辑 /etc/crontab,里面加入下面这行:
*/5 * * * * root /usr/bin/curl
【解释下,第一个字段,表示每5分钟执行一次】
保存后使用service crond restart命令重启crond服务

五、PHP代码:
贴源代码了:

monitor.php:

<?php

//发送邮件
function send_email($sendto_email,$subject,$body) {
require("smtp.php");
##########################################
$smtpserver = "linuxidc.linuxidc.com";//SMTP服务器
$smtpserverport = 25;//SMTP服务器端口
$smtpusermail = "linuxidc@linuxidc.com";//SMTP服务器的用户邮箱
$smtpemailto = $sendto_email;//发送给谁
$smtpuser = "linuxidc@linuxidc.com";//SMTP服务器的用户帐号
$smtppass = "linuxidc";//SMTP服务器的用户密码
$mailsubject = $subject;//邮件主题
$mailbody = $body;//邮件内容
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
##########################################
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$smtp->debug = true;//是否显示发送的调试信息
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
return true;
}

function send_emial_unix($sendto_email,$subject,$body)
{
    require 'class.phpmailer.php';
    try {
    $mail = new PHPMailer(true);
    $body             = $body;
    $mail->CharSet = "UTF-8";
    $mail->IsSMTP();                           // 启用SMTP
    $mail->SMTPAuth   = true;                  // 启用SMTP认证
    $mail->Port       = 25;                    // 端口
    $mail->Host       = "linuxidc.linuxidc.com"; // SMTP server
    $mail->Username   = "linuxidc@linuxidc.com";     // SMTP server username
    $mail->Password   = "linuxidc";            // SMTP server password
    //$mail->IsSendmail(); // tell the class to use Sendmail
    //$mail->AddReplyTo("linuxidc@linuxidc.com","First Last"); //发件人信息
    $mail->From       = "linuxidc@linuxidc.com";    //发给地址
    $mail->FromName   = "linuxidcname";   //
    $mail->AddAddress($sendto_email);

$mail->Subject = $subject;   //标题
    //$mail->AltBody    = ""; // optional, comment out and test
    $mail->WordWrap   = 50; // set word wrap
    $mail->MsgHTML($body);
    $mail->IsHTML(true); // send as HTML
    $mail->Send();
    echo 'OK';
    } catch (phpmailerException $e) {
    echo $e->errorMessage();
    }
}


function check($host, $find)
{
    $str= file_get_contents($host);
    if($str){
        if(strpos($str, $find)){
            //虽然有内容,但是包含了你自定义的错误报警内容,所以同样认定为网页不正常
            return false;
        }
        else{
            return true;
        }
    }
    else{
        return false;
    }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wydzgx.html