@139.com 邮箱实现服务器监测通知

  当你手上管理着好几台服务器,需要及时获取这些服务器网络断开或死机的消息通知,那么手机短信通知将是最好的途径。这点小事情不需要开通什么SMS短信端口的 :) 你只要注册一个 @139.com 邮箱即可,该邮箱带有手机短信通知功能(好像通过手机查看邮件内容是需要付费的 _-!! 但我只需知道 web 服务是否正常,就把服务器信息简单的写在标题即可)

使用 PHP 监测 web 服务 80 端口是否正常:

发送邮件的 class (smtp.txt),请自行修改文件名
[code]<?
include_once('smtp.php');
@ob_end_flush();
//请修改为自己的发信邮箱地址(用原来的@139.com邮箱无法发送成功 _-!!,错误不明)
$smtp = new smtp("smtp.163.com",25,true,"***@163.com" ,"***");

function testServer($ip){
// 如果服务器在1小时内出现过错误则跳过检测
if(file_exists("/tmp/check-$ip") && (time() - filemtime("/tmp/check-$ip")) < 3600)return false;
global $smtp;
$h = '';
echo "CHECK: $ip";
if($fs = @fsockopen($ip,80, $errno, $errstr, 10)){
@fwrite($fs, "GET / HTTP/1.0rnHost: oneoo.comrnrn");
$h .= @fgets($fs, 256);
@fclose($fs);}
if(strpos($h,'200') === false){
@touch("/tmp/check-$ip");
echo " Failn";
//请修改为自己的邮箱地址
$smtp -> sendmail( '***@139.com', "wesnet@163.com", "Yo!", "服务器 $ip 出现异常", $h, "TXT" );
return false;
}else @unlink("/tmp/check-$ip");
echo " OKn";
return true;
}

testServer('***.***.***.***');
testServer('***.***.***.***');//检测多个服务器

echo "Finish TEST!n";

?>

  把该程序放在相对最稳定的服务器上,并设置 crontab 定时执行该程序 (如果还担心这台服务器不稳定,可以在其他服务器上也搞个监测程序 :)

  程序虽然是非常简单,但作用不小哦。我就是用这个方法来监测 Yo2 的服务器,服务器一出现无法访问,就能在 10 分钟内短信通知我了。

  如果服务器没有 PHP 环境,也可以使用 perl 来写个 :D

使用 PRTG 软件监控服务器、网络状态

  PRTG 是一个 For Windows 的服务器远程监控工具,它可支持多种监控协议,比较常用的是 SNMP 协议,大部分路由器等网络设备都支持该协议。服务器只需要安装一个 snmpd 监控即可。

综合监控界面

以下介绍如何使用 PRTG 工具来监控服务器的资源、网络状态 :

第一、必须在服务器上安装 snmpd 工具

Linux: yum -y install snmpd && yum -y install net-snmp

第二、配置 snmpd 工具以提供 CPU、RAM、Disk和网络状态的监控

请编辑 /etc/snmp/snmpd.conf

加入配置内容:

access notConfigGroup “” any noauth exact mib2 none none
view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc

如需要监控 CPU 和disk等状态,请加入以下配置内容:

com2sec adminUser  default       admin
group   adminGroup v1           adminUser
view adminview included  .1.3.6
access adminGroup “” any noauth exact adminview none none

load 12 14 14
disk / 10000

红色部分是设置只允许 admin 用户才能获取 CPU 和disk等状态数据,如果服务器的状态数据敏感,可使用 v2 协议,并加上密码 :)

蓝色部分是设置监控某分区,当然也可以设置多个,以监控多个分区

第三、配置 PRTG 客户端监控服务器状态

 PRTG 添加监控项目

添加网络监控:

添加网络监控1 添加网络监控2 添加网络监控3 添加网络监控4 添加网络监控5 添加网络监控6

添加CPU、磁盘等的监控:

跟添加网络监控的步骤有些区别,在第三步选择协议的时候不选择Standard Traffic Sensor 而选择 Custom SNMP Sensor。

在输入服务器信息时,如果 snmpd 配置文件中设置 CPU、磁盘等监控信息不为 public 默认访问可读取时,SNMP Community String 需要输入你在配置文件中设置的用户名

第五步需要输入正确的 OID (附表),并设置数据类型为 Gauge ;如是磁盘、内存等数据可设置 Scale 为 1024

添加CPU、磁盘等的监控1 添加CPU、磁盘等的监控2 添加CPU、磁盘等的监控3

设置综合监控界面

设置综合监控界面

还可以针对某项监控数据加上报警设置,如高亮显示,甚至可以自动执行某程序和发送 email 通知。

OID 对照表:

1.3.6.1.4.1.2021.10.1.3.1  //CPU 每分钟的 Load
1.3.6.1.4.1.2021.4.6.0  //已使用内存空间大小

1.3.6.1.2.1.6.9.0 //系统的 TCP 端口连接数

1.3.6.1.4.1.2021.9.1.6.1 //第一个监测 Disk 的总空间大小
1.3.6.1.4.1.2021.9.1.8.1 //第一个监测 Disk 的已使用空间大小
1.3.6.1.4.1.2021.9.1.9.1 //第一个监测 Disk 的使用比率

更详细的 OID 可使用 snmptranslate -Tp 1.3.6.1.4.1.2021 命令获取