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下有一些使用Python语言编写的Linux系统监控工具比如inotify-sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的...
为了监控 NAS主机的运行状态, 以流量和CPU温度为主.应该可运行所有linux环境. 参考网上资料整理代码 , 供参考. 监控 CPU 温度, 内存使用量MB, CPU单核使用率(此项不太准), 网络流入差量KB , 流出差量KB, 运行时间...
监控LINUX服务器内存、CPU、磁盘路径等信息钉钉、企业微信机器人发送消息提醒脚本,可使用定时任务来完成此功能
linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。 实现原理: 由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。 crontab...
在下linux 监控cup的使用率,实时频率(跟cpu频率不同) 内存使用率 网速监控 C语言实现
linux下实现状态机,利用多线程处理,直接make可以调试
一种linux服务器sas卡硬盘状态的监控方法.docx
Linux流量监控脚本 上下行流量监控shell脚本
C# 网卡状态监控C# 网卡状态监控C# 网卡状态监控C# 网卡状态监控C# 网卡状态监控C# 网卡状态监控C# 网卡状态监控
Linux下怎样利用Iptables实现网络防火墙的监控功能.pdf
这是一个linux平台下,用mrtg实现网络流量监控的课程设计
基于ARM_Linux的无线视频监控系统的设计与实现
主要分析red hat以及debian系列的linux操作系统启动过程以及进程监控实现的方法
1,应用范围:在linux系统下的监控程序,根据进程名称监控一些进程或程序,如果某个程序停止运行,则发送一个提醒邮件或者飞信通知。 通过crontab机制,在设定的时间间隔内反复执行监控程序,达到每隔一个时间间隔...
python实现linux系统监控,可以监控cpu,内存等
Linux远程监控设计与实现的过程 关于课程设计
目的:通过监控观察压测结果,根据各项数据尝试调整各项参数完成单机调优,主要关注内存、cpu等数据。 目前,自动化构建+压测是这么一个过程: 项目(java案例)提交时通过webhook执行jenkins构建 jenkins构建完成后...
做好Linux硬件实时监控(二)Linux下玩转硬件温度监控.pdf
本程序可实时监控linux下的一个目录,当目录中有新文件产生时本程序会进行简单的统计。另外把该程序写成服务chkpicd,把该程序放到/etc/init.d目录下即可,使用命令:service chkpic start/stop可控制服务开启/关闭。
基于Linux视频监控终端软件实现.pdf