Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现

 最近,在我原有的“Linux服务器系统监控程序”基础上,完善了HTTP、TCP、MySQL主动监控与MSN、E-mail、手机短信报警。监控程序以shell和PHP程序编写,以下为主要框架与部分代码:

  一、系统监控接口程序(interface.php)具有的报警方式
  1、MSN实时报警
  ①、监控程序每次检测到故障存在、或者故障恢复,都会发送短消息到管理员的MSN。
   点击在新窗口中浏览此图片

   点击在新窗口中浏览此图片

  发送MSN短消息用了一个PHP类: sendMsg,使用该PHP类发消息,必须将发送、接收双方的MSN加为联系人,发送中文时,先用iconv将字符集转为UTF-8:
引用
$sendMsg->sendMessage(iconv("GBK", "UTF-8", $message), 'Times New Roman', '008000');




  2、手机短信报警
  ①、工作日早上10点之前,晚上6点之后,以及周六、周日,监控程序检测到故障,会调用手机短信接口,发送短信给管理员的手机。
  ②、如果监控程序多次检测到同一台服务器的同一类故障,只会在第一次检测到故障时发送一条“故障报警”短信。服务器故障恢复后,监控程序会再发送一条“故障恢复”短信。

  如果没有手机短信网关接口,可以试试中国移动通信的 www.139.com邮箱,具有 免费的邮件到达手机短信通知功能,可以将收到的邮件标题以短信的形式发送到手机上。



  3、电子邮件报警
  ①、如果监控程序多次检测到同一台服务器的同一类故障,只会在第一次检测到故障时发送一封“故障报警”邮件。服务器故障恢复后,监控程序会再发送一封“故障恢复”邮件。

  系统监控接口程序interface.php(核心部分,仅提供部分代码):
  1. <?php   
  2. //HTTP服务器监控   
  3. if (htmlspecialchars($_POST["menu"]) == "http")      
  4. {      
  5.     $date = htmlspecialchars($_POST["date"]);      
  6.     $ip = htmlspecialchars($_POST["ip"]);   
  7.     $port = htmlspecialchars($_POST["port"]);   
  8.     $status = htmlspecialchars($_POST["status"]);//状态,0表示无法访问,1表示正常,2表示无法访问但能ping通   
  9.     //...下一步处理(省略)...     
  10. }   
  11.   
  12. //TCP服务器监控   
  13. if (htmlspecialchars($_POST["menu"]) == "tcp")      
  14. {      
  15.     $date = htmlspecialchars($_POST["date"]);      
  16.     $ip = htmlspecialchars($_POST["ip"]);   
  17.     $port = htmlspecialchars($_POST["port"]);   
  18.     $status = htmlspecialchars($_POST["status"]);//状态,0表示无法访问,1表示正常,2表示无法访问但能ping通   
  19.     //...下一步处理(省略)...   
  20. }   
  21.   
  22. //MySQL服务器监控   
  23. if (htmlspecialchars($_POST["menu"]) == "mysql")      
  24. {      
  25.     $date = htmlspecialchars($_POST["date"]);      
  26.     $ip = htmlspecialchars($_POST["ip"]);   
  27.     $port = htmlspecialchars($_POST["port"]);   
  28.     $abstract = htmlspecialchars($_POST["abstract"]);//故障摘要(必须为全角)   
  29.     $info = htmlspecialchars($_POST["info"]);//故障详细描述   
  30.     $failback = htmlspecialchars($_POST["failback"]);//如果服务器存活,此处接收的值为active   
  31.     //...下一步处理(省略)...   
  32. }   
  33. ?>  


  二、主动探测监控(“监控机”主动探测“被监控机”)
  1、HTTP服务器监控
  脚本:/data0/monitor/http.sh
引用
#!/bin/sh
LANG=C

#被监控服务器、端口列表
server_all_list=(/
192.168.1.1:80 /
192.168.1.2:80 /
192.168.1.3:80 /
)

date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")

#采用HTTP POST方式发送检测信息给接口程序interface.php,接口程序负责分析信息,决定是否发送报警MSN消息、手机短信、电子邮件。
send_msg_to_interface()
{
   /usr/bin/curl -m 600 -d menu=http -d date=$date -d ip=$server_ip -d port=$server_port -d status=$status http://127.0.0.1:8888/interface.php
}

server_all_len=${#server_all_list[*]}
i=0
while  [ $i -lt $server_all_len ]
do
   serve
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值