一个基于新浪SAE的网站短信、邮件报警系统
2012-02-12我寒假期间写了一个基于新浪SAE的网站短信报警应用,今天和大家分享一下。
这个应用的原理很简单,就是每间隔一段时间,抓取监控网站上的内容并进行分析,一旦抓取出现错误,则判定为网站出现错误。如果错误次数超过设定值,该应用就调用短信和邮件发送API,向指定的手机和电子邮箱发送报警信息。待网站恢复正常后,系统依旧会向用户发送信息,告诉用户“你的网站已经恢复正常了”。
在使用这个应用前,大家做一些简单的配置:
第一、 打开config.php文件,填写监控的URL、最大尝试次数及短信、邮件的一些配置信息:
//受监控的url
define('MONITOR_URL',' 受监控的URL ');
define('TRY_TIMES',1); //失败尝试次数
define('MAX_TRY_TIMES',1); //最多信息发送次数
//EMAIL告警服务
define('EMAIL_ENABLED',FALSE); //是否启用
define('EMAIL_DEST','邮箱'); //告警邮件发送目标地址
define('SMTP_SERVER','SMTP服务器地址');
define('SMTP_USERNAME','发送邮箱的用户名');
define('SMTP_PASSWORD','密码');
//短信告警服务
define('SMS_ENABLED',TRUE); //是否启用
define('SMS_APID','天翼应用工场的APID'); //apid号码
define('SMS_PRODUCTID',' 产品号码 '); //产品号码
define('SMS_APKEY',' 产品密钥 '); //产品密钥
define('SMS_DEST',' 告警短信发送目标地址 '); //告警短信发送目标地址
第二、打开config.yaml,配置你的应用的名称和版本,其余不用改动。比如:
---
name: 改为你的应用名称
version: 你的应用的版本号
cron:
- description: 网站监控
url: monitor/index.php
schedule: every 15 mins
timezone: Beijing
...
需要注意的是,需要把该版本设置为应用的默认版本,Cron才可以自动执行,请使用者多多注意。
第三、因为我在该应用中使用了SAE的Counter服务作为抓取计数器,所以请使用者在SAE后台启用“计数器服务”,并新建四个名称分别为‘SuccessNum’、‘FailNum’、‘ErrorNum’、‘SendNum’的计数器,当前计数都设为0。
这四个计数器中,前两个的作用是统计自程序运行以来,抓取成功和失败的总次数,使用者可以通过这两个数据了解网站的运行情况。
至此,配置就完成了。
用SAE做监控服务的优点:
- SAE服务的在线率极高,国内顶级机房和线路,这样才能保证监控的准确性。我记得曾经使用某网站监控服务的时候,一看我的网站在线率,特别低,害的我以为是网站使用的虚拟主机的问题。后来才知道,监控用的服务器和线路本身就有问题,怎么能去统计别人的在线率呢?
- 抓取间隔时间短。根据SAE的说明,抓取间隔最少可以设置为1分钟;相对于此,目前免费的网站监控服务抓取间隔至少为5分。
- 可以进行深度定制。比如说,可以为网站增加敏感字检测功能,保证在网站出现“非法信息”的时候可以及时得知。
我把代码放在了我的155网盘上面,有兴趣的朋友可以下载试用。我需要提醒感兴趣的朋友,应用的邮件发送功能有时候无法使用,貌似是SAE邮件发送API的原因。短信没有问题的。
地址:http://115.com/file/dpxz1p9n#SAE_Monitor.rar
发表回复