`

linux下网站状态监控实现(免费手机短信和MSN消息提醒)

 
阅读更多
linux下网站状态监控实现(免费手机短信和MSN消息提醒)

参考了张宴的《Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现》并结合飞信的免费短信接口为服务器做了个监控脚本,在监控端服务器(公司内部服务器)部署完之后,每隔5分钟检测一次网站是否能正常访问,如果有异常则通过飞信免费发送警报短信到指定手机或者MSN上。

首先需要有一个已开通飞信的手机号,并把接收警报短信的手机号加为飞信好友(也可以自己给自己发),然后申请一个专门用来发送警报消息的msn帐号,并加为自己的msn好友。

/var/cron/monitor/http.sh (博客的代码显示插件有点小问题,复制代码请单击编辑右上角的view source按钮,然后复制)

#!/bin/sh
LANG=C
 
#被监控服务器、端口列表
server_all_list=(
junnan.org 
)
 
telnum=已开通飞信的手机号
passwd=飞信密码
 
date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")
 
#采用HTTP POST方式发送检测信息给接口程序interface.php,接口程序负责分析信息,决定是否发送报警MSN消息、手机短信、电子邮件。
send_msg_to_interface()
{
 if [ $2 = "0" ] || [ $2 = "2" ]; then
  #开始发送警报短信,13500000000是接收方手机号
  curl -m 600 -d username=${telnum} -d password=${passwd} -d sendto=13500000000 -d message=$1  http://sms.api.bz/fetion.php
  #发送msn警报消息(如果不需要msn警报可以注释这行)
  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/monitor/interface.php
 fi;
 
}
 
server_all_len=${#server_all_list[*]}
i=0
while  [ $i -lt $server_all_len ]
do
   server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}')
   server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}')
   server_message=" "
   if curl -m 10 -G http://${server_all_list[$i]}/ > /dev/null 2>&1
   then
     #status:    0,http down    1,http ok    2,http down but ping ok
     status=1
           echo "服务器${server_ip},端口${server_port}能够正常访问!";
     server_message="服务器${server_ip},端口${server_port}能够正常访问!";
   else
       if curl -m 30 -G http://${server_all_list[$i]}/ > /dev/null 2>&1
       then
           status=1
           echo "服务器${server_ip},端口${server_port}能够正常访问!"
     server_message="服务器${server_ip},端口${server_port}能够正常访问!";
       else
           if ping -c 1 $server_ip > /dev/null 2>&1
           then
               status=2
               echo "服务器${server_ip},端口${server_port}无法访问,但是能够Ping通!";
      server_message="服务器${server_ip},端口${server_port}无法访问,但是能够Ping通!";
           else
               status=0
               echo "服务器${server_ip},端口${server_port}无法访问,并且无法Ping通!";
      server_message="服务器${server_ip},端口${server_port}无法访问,并且无法Ping通!";
           fi
       fi
   fi
 send_msg_to_interface "${server_message}" "${status}";
   let i++
done

interface.php (需要设置监控端服务器的让其可访问到,如:http://127.0.0.1/monitor/interface.php,与上面脚本对应)
这里需要一个PHP类sendMsg,用来通过PHP发送消息到MSN,下载后把目录解压到interface.php目录即可。

include('sendmsg/sendMsg.php');
 
//HTTP服务器监控
if (isset($_POST["menu"]))
{
 if (htmlspecialchars($_POST["menu"]) == "http")   
 {   
  $date = htmlspecialchars($_POST["date"]);   
  $ip = htmlspecialchars($_POST["ip"]);
  $port = htmlspecialchars($_POST["port"]);
  $status = htmlspecialchars($_POST["status"]);//状态,0表示无法访问,1表示正常,2表示无法访问但能ping通
 
  $message = '';
  switch($status)
  {
   case '0':
    $message = $ip . '服务器无法访问';
    break;
   case '1':
    $message = $ip . '服务器工作正常';
    break;
   case '2':
    $message = $ip . '服务器无法访问但能ping通';
    break;
  }
 
  if ($status == 0 && $status == 1)
  {
   $sendMsg = new sendMsg();
   $sendMsg->login('用来发消息的MSN帐号', '密码');
   $sendMsg->createSession('用来接收消息的MSN帐号');
   $sendMsg->sendMessage(iconv("GBK", "UTF-8", $message), 'Times New Roman', 'FF0000');
 
  }
 }
}

然后执行crontab -e,加入如下语句:

*/5 * * * * sh /var/cron/monitor/http.sh

好了,脚本将会每5分钟执行一次,如果想测试一下脚本是否有效,可以把http.sh里的send_msg_to_interface函数里的if语句注释掉(别忘记fi也要注释)。

分享到:
评论

相关推荐

    一种linux服务器sas卡硬盘状态的监控方法.docx

    Linux 服务器 SAS 卡硬盘状态监控方法 本资源摘要信息主要介绍了一种 Linux 服务器 SAS 卡硬盘状态监控方法,该方法基于 Shell 脚本作为监控脚本,在内存中驻留磁盘状态监控器,按照设定的周期遍历所有磁盘,通过...

    用Python脚本实现对Linux服务器的监控

    目前Linux下有一些使用Python语言编写的Linux系统监控工具比如inotify-sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的...

    linux主机状态监控python脚本

    为了监控 NAS主机的运行状态, 以流量和CPU温度为主.应该可运行所有linux环境. 参考网上资料整理代码 , 供参考. 监控 CPU 温度, 内存使用量MB, CPU单核使用率(此项不太准), 网络流入差量KB , 流出差量KB, 运行时间...

    基于SpringBoot+Bootstrap实现linux自动化运维监控系统,完美实现了分布式监控

    基于微服务springboot架构开发,是轻量高性能的分布式监控系统,核心采集指标包括:**cpu使用率,cpu温度,内存使用率,磁盘容量,磁盘IO,硬盘SMART健康状态,系统负载,连接数量,网卡流量,硬件系统信息等。...

    linux进程监控与自动重启的简单实现方法

    linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。 实现原理: 由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。 crontab...

    Linux远程监控设计与实现

    【Linux远程监控设计与实现】这篇文章主要探讨了如何在Linux环境下设计和实现一个远程监控系统,以实时监控服务器的CPU、内存和硬盘资源使用情况。该系统旨在提高网络管理的安全性和便利性。 1. **引言**: - 在...

    python实战练习之实现linux下服务器监控

    公司总是会让我们人肉监控服务器状态(因为技术还没到互联网层公司的技术,没有自动化---例如工具Ansible之类的,ε=(´ο`*)))唉) 所以,我觉得这种东西如果可以实现一个远程自动化的监控工具是再好不过了。...

    windows和linux平台下短信猫发送和读取短信代码

    综上所述,"windows和linux平台下短信猫发送和读取短信代码"涉及到的知识点包括短信猫的工作原理、API和库的使用、AT命令的掌握、平台兼容性的实现、源代码的结构和逻辑、以及多线程并发处理。这些内容对于理解如何...

    基于Linux平台下Nagios监控服务系统的设计与实现.pdf

    基于Linux平台下Nagios监控服务系统的设计与实现能够提供一个高效、可靠、安全的监控服务系统,能够满足IT基础设施和应用程序的监控需求。该系统的设计与实现需要考虑系统架构设计、服务器设置、插件开发、报警机制...

    Linux下mp3播放器的实现

    Linux 下 mp3 播放器的实现是 Linux 操作系统下的一种应用程序,使用 GTK 和 GStreamer 技术来实现图形用户界面。该播放器可以播放 mp3 音频文件,满足用户对音乐播放的需求。 GTK 是一个跨平台的 GUI 工具箱,...

    linux下监控进程程序

    1,应用范围:在linux系统下的监控程序,根据进程名称监控一些进程或程序,如果某个程序停止运行,则发送一个提醒邮件或者飞信通知。 通过crontab机制,在设定的时间间隔内反复执行监控程序,达到每隔一个时间间隔...

    python实现linux系统监控

    python实现linux系统监控,可以监控cpu,内存等

    海康威视监控LINUX版本和WINDOWS版本JAVA实例

    在这个主题中,我们将探讨如何使用JAVA语言在LINUX和WINDOWS操作系统上实现对海康威视监控设备的控制。 首先,我们来看标题“海康威视监控LINUX版本和WINDOWS版本JAVA实例”。这意味着我们将会有一个JAVA程序,它...

    采用Linux系统与GSM短消息实现无线远程监控.pdf

    标题中的“采用Linux系统与GSM短消息实现无线远程监控”指的是使用Linux操作系统结合GSM(全球移动通信系统)短消息服务,构建无线远程监控系统的技术方案。这种技术结合了现代通信技术和自动化控制技术,主要应用于...

    Linux下海康监控视频QTdemo源码

    在Linux环境下,开发和操作海康监控视频应用是一项常见的任务,尤其对于系统集成商和安全监控领域的专业人士来说。本文将详细解析"Linux下海康监控视频QTdemo源码"的相关知识点,帮助读者深入理解如何在Linux系统中...

    自己编的linux下的网络监控程序源码,可以监视局域网上的

    学习这部分源码可以帮助我们了解如何在Linux下进行网络监控,如何使用底层网络API,以及如何设计和实现这样的监控系统。 此外,对于网络监控程序来说,性能优化也是一个重要方面。由于可能需要处理大量的网络数据,...

    kafka消息监控(linux运行_window查看)

    "kafka消息监控(linux运行_window查看)"是一个工具,帮助用户监控Kafka集群中的Topic,以便更好地理解生产者和消费者的行为。这个工具通常用于实时查看消息的消费进度、监控延迟以及诊断可能的问题。 在Linux环境中...

    linux下视频WEB视频监控

    linux下视频WEB视频监控

    Linux进程实时监控技术的内核实现.pdf

    Linux 进程实时监控技术的内核实现是指在 Linux 操作系统中,实时监控和跟踪进程的运行状态和行为,以便及时发现和防止恶意进程的破坏活动。该技术的实现主要基于 Linux 内核的进程管理机制,通过 Hook 机制和 ...

    基于Linux的USB摄像头热插拔状态检测

    本文将深入探讨如何在Linux环境下,利用udev工具来实现USB摄像头的热插拔状态检测,并在终端中实时显示设备的“add”(添加)和“remove”(移除)状态。 首先,udev是Linux内核设备管理系统的一部分,它负责在系统...

Global site tag (gtag.js) - Google Analytics