PHP实现服务器状态监控的方法
程序员文章站
2022-06-19 23:24:27
本文实例讲述了php实现服务器状态监控的方法。分享给大家供大家参考。具体分析如下:
php服务器状态监控对于很多朋友来讲都没做,只有看到网站挂了才知道,这种半夜网站关了是...
本文实例讲述了php实现服务器状态监控的方法。分享给大家供大家参考。具体分析如下:
php服务器状态监控对于很多朋友来讲都没做,只有看到网站挂了才知道,这种半夜网站关了是不知道情况了,对于网站也非常不好,为此这两天抽空写了个网页服务器状态监控,看到有朋友说需要,那我就放出来吧。很简单的东西。
使用方法:
打开压缩包里面的status.php文件。编辑这里的内容为你自己的邮箱信息。代码如下:
复制代码 代码如下:
$mail->host = 'smtp.exmail.qq.com'; // smtp 服务器
$mail->port = 25; // smtp服务器的端口号
$mail->username = 'admin@xxx.com'; // smtp服务器用户名
$mail->password = 'password'; // smtp服务器密码
$mail->setfrom('admin@xxx.com','status');
$mail->addreplyto('admin@xxx.com','status');
$mail->subject = $subject;
$mail->altbody = 'to view the message, please use an html compatible email viewer!'; // optional, comment out and test
$mail->msghtml($body);
$address = 'admin@admin.com'; //接收邮箱
//更改这里的内容为你要监控的ip:
$server_ip_list = array(
'61.135.169.121',
'221.204.173.200',
'173.194.127.83'
);
$mail->port = 25; // smtp服务器的端口号
$mail->username = 'admin@xxx.com'; // smtp服务器用户名
$mail->password = 'password'; // smtp服务器密码
$mail->setfrom('admin@xxx.com','status');
$mail->addreplyto('admin@xxx.com','status');
$mail->subject = $subject;
$mail->altbody = 'to view the message, please use an html compatible email viewer!'; // optional, comment out and test
$mail->msghtml($body);
$address = 'admin@admin.com'; //接收邮箱
//更改这里的内容为你要监控的ip:
$server_ip_list = array(
'61.135.169.121',
'221.204.173.200',
'173.194.127.83'
);
然后访问你http://yourdomain.com/status.php文件,即可看到当前服务器状态并且自动发送邮件到你设置的邮箱。如果需要自动监控,请添加cron任务或者使用什么监控宝之类的!
完整代码如下:
复制代码 代码如下:
<?php
/*
* 服务器状态监控
*/
header('content-type:text/html;charset=utf-8');
include './smtp/class.smtp.php';
include './smtp/class.phpmailer.php';
function sendmail($subject = '',$body = '') {
date_default_timezone_set('asia/shanghai');//设定时区东八区
$mail = new phpmailer(); //new一个phpmailer对象出来
// $body = eregi_replace("[]",'',$body); //对邮件内容进行必要的过滤
$mail->charset ="utf-8";//设定邮件编码,默认iso-8859-1,如果发中文此项必须设置,否则乱码
$mail->issmtp(); // 设定使用smtp服务
$mail->smtpauth = true; // 启用 smtp 验证功能
$mail->host = 'smtp.exmail.qq.com'; // smtp 服务器
$mail->port = 25; // smtp服务器的端口号
$mail->username = 'admin@xxx.com'; // smtp服务器用户名
$mail->password = 'password'; // smtp服务器密码
$mail->setfrom('admin@xxx.com','status');
$mail->addreplyto('admin@xxx.com','status');
$mail->subject = $subject;
$mail->altbody = 'to view the message, please use an html compatible email viewer!'; // optional, comment out and test
$mail->msghtml($body);
$address = 'admin@admin.com'; //接收邮箱
$mail->addaddress($address, '');
//$mail->addattachment("images/phpmailer.gif"); // attachment 附件
//$mail->addattachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->send()) {
echo 'mailer error: ' . $mail->errorinfo;
} else {
// echo "message sent!恭喜,邮件发送成功!";
}
}
//check server status
function checkserversatatus($ip) {
$str = null;
$fp = @fsockopen($ip,80,$errno,$errstr,10);
if (!$fp) {
return false;
} else {
fclose($fp);
return true;
}
}
$server_ip_list = array(
'61.135.169.121',
'221.204.173.200',
'173.194.127.83'
);
?>
<!doctype html>
<html lang="zh_cn">
<head>
<meta charset="utf-8">
<title>服务器状态监控</title>
<style>
* {
margin: 0px;
padding: 0px;
}
body {
font-family: "microsoft yahei",arial;
font-size:14px;
}
header {
height: 40px;
background-color: #2e2e2e;
width: 100%;
line-height: 35px;
}
header > h3 {
color: #fff;
margin-left: 20px;
}
footer {
text-align: center;
}
a {
color: #424242;
text-decoration: none;
}
.wrap {
height: auto;
zoom:1;
overflow: auto;
max-width: 500px;
width: 100%;
margin: 50px auto;
}
.table {
border-collapse: collapse;
border: 1px solid #eee;
width: 100%;
}
tr,td{
color: #424242;
border-collapse: collapse;
border: 1px solid #f0f0f0;
height: 30px;
text-align: center;
}
tr:nth-child(2n+1) {
background-color: #f7f8fc;
}
tr:hover {
background-color: #f7f8fc;
}
.online,.offline {
height: 20px;
background-color: #2ecc71;
width: 40px;
margin: 0px auto;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
color: #fff;
}
.offline {
width: 50px;
background-color: #e74c3c;
}
</style>
</head>
<body>
<header>
<h3>服务器在线状态监控</h3>
</header>
<div class="wrap">
<table class="table">
<tbody>
<tr><td>id</td><td>location</td><td>address</td><td>status</td></tr>
<?php
$i = 0;
foreach ($server_ip_list as $key => $val) {
$api = file_get_contents('http://ip.taobao.com/service/getipinfo.php?ip='.$server_ip_list[$key].'');
$json = json_decode($api);
$result = $json->data;
$i++;
if (checkserversatatus($server_ip_list[$key])) {
echo "<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><div class="online">在线</div></td></tr>";
} else {
echo "<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><div class="offline">不在线</div></td></tr>";
$subject = "您的服务器 {$server_ip_list[$key]} 无法访问!";
$body = "您的服务器{$server_ip_list[$key]} 无法访问,此邮件根据你设置的监控频率发送,当服务器恢复正常邮件自动停止发送!";
sendmail($subject,$body);
}
}
?>
</tbody>
</table>
</div>
</body>
</html>
/*
* 服务器状态监控
*/
header('content-type:text/html;charset=utf-8');
include './smtp/class.smtp.php';
include './smtp/class.phpmailer.php';
function sendmail($subject = '',$body = '') {
date_default_timezone_set('asia/shanghai');//设定时区东八区
$mail = new phpmailer(); //new一个phpmailer对象出来
// $body = eregi_replace("[]",'',$body); //对邮件内容进行必要的过滤
$mail->charset ="utf-8";//设定邮件编码,默认iso-8859-1,如果发中文此项必须设置,否则乱码
$mail->issmtp(); // 设定使用smtp服务
$mail->smtpauth = true; // 启用 smtp 验证功能
$mail->host = 'smtp.exmail.qq.com'; // smtp 服务器
$mail->port = 25; // smtp服务器的端口号
$mail->username = 'admin@xxx.com'; // smtp服务器用户名
$mail->password = 'password'; // smtp服务器密码
$mail->setfrom('admin@xxx.com','status');
$mail->addreplyto('admin@xxx.com','status');
$mail->subject = $subject;
$mail->altbody = 'to view the message, please use an html compatible email viewer!'; // optional, comment out and test
$mail->msghtml($body);
$address = 'admin@admin.com'; //接收邮箱
$mail->addaddress($address, '');
//$mail->addattachment("images/phpmailer.gif"); // attachment 附件
//$mail->addattachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->send()) {
echo 'mailer error: ' . $mail->errorinfo;
} else {
// echo "message sent!恭喜,邮件发送成功!";
}
}
//check server status
function checkserversatatus($ip) {
$str = null;
$fp = @fsockopen($ip,80,$errno,$errstr,10);
if (!$fp) {
return false;
} else {
fclose($fp);
return true;
}
}
$server_ip_list = array(
'61.135.169.121',
'221.204.173.200',
'173.194.127.83'
);
?>
<!doctype html>
<html lang="zh_cn">
<head>
<meta charset="utf-8">
<title>服务器状态监控</title>
<style>
* {
margin: 0px;
padding: 0px;
}
body {
font-family: "microsoft yahei",arial;
font-size:14px;
}
header {
height: 40px;
background-color: #2e2e2e;
width: 100%;
line-height: 35px;
}
header > h3 {
color: #fff;
margin-left: 20px;
}
footer {
text-align: center;
}
a {
color: #424242;
text-decoration: none;
}
.wrap {
height: auto;
zoom:1;
overflow: auto;
max-width: 500px;
width: 100%;
margin: 50px auto;
}
.table {
border-collapse: collapse;
border: 1px solid #eee;
width: 100%;
}
tr,td{
color: #424242;
border-collapse: collapse;
border: 1px solid #f0f0f0;
height: 30px;
text-align: center;
}
tr:nth-child(2n+1) {
background-color: #f7f8fc;
}
tr:hover {
background-color: #f7f8fc;
}
.online,.offline {
height: 20px;
background-color: #2ecc71;
width: 40px;
margin: 0px auto;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
color: #fff;
}
.offline {
width: 50px;
background-color: #e74c3c;
}
</style>
</head>
<body>
<header>
<h3>服务器在线状态监控</h3>
</header>
<div class="wrap">
<table class="table">
<tbody>
<tr><td>id</td><td>location</td><td>address</td><td>status</td></tr>
<?php
$i = 0;
foreach ($server_ip_list as $key => $val) {
$api = file_get_contents('http://ip.taobao.com/service/getipinfo.php?ip='.$server_ip_list[$key].'');
$json = json_decode($api);
$result = $json->data;
$i++;
if (checkserversatatus($server_ip_list[$key])) {
echo "<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><div class="online">在线</div></td></tr>";
} else {
echo "<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><div class="offline">不在线</div></td></tr>";
$subject = "您的服务器 {$server_ip_list[$key]} 无法访问!";
$body = "您的服务器{$server_ip_list[$key]} 无法访问,此邮件根据你设置的监控频率发送,当服务器恢复正常邮件自动停止发送!";
sendmail($subject,$body);
}
}
?>
</tbody>
</table>
</div>
</body>
</html>
注意:
include './smtp/class.smtp.php';
include './smtp/class.phpmailer.php';
文件可以下载phpmailer包然后我们在包里面这两个文件复制出来然后即可使用了。
ps:这个只是一个非常的简单的不能很好的监控到服务器了,现在有很多成熟的免费产品都可以更好的达到我们要求,如dnspod里面有一个d监控了,然后我们就可以操作。
希望本文所述对大家的php程序设计有所帮助。