一直以来,
我手下的一台运行着ASP应用的Win2000服务器总是访问数据库会莫名其妙锁死,
然后用户端访问的页面就提示:数据库查询错误,编码AXXX;
最终分析下来的原因是ASP程序本身的问题,所以每次都要人工去执行iisreset释放,
而我又不会ASP且开发方对这个缺陷的改进意见总是支支吾吾的,
每次出故障都是同事打电话过来提醒然后我再连接上服务器去执行重置,因为我不太用那个东西……
但老这样,领导也渐渐开始有点意见了,所以,需要一个能及时报警并自动解决IIS重置的方案。
最理想的状态是基本满足以下需求:
- 实时报警,宕机与恢复时通过MAIL/SMS/CALL等时效性较高的手段通知;
- 自动恢复,在发出警报的同时能执行一些额外的命令操作,以达到自动恢复的功能;
- 字词检测,能通过实时的页面关键字词的监测达到判断业务系统的正常性;
- 费用低廉,最好是免费了,不能免费的话,再说吧……
其中至关重要的就是状态监测这一块的,
因为是内网业务系统,无法通过站长保姆这类第三方的Uptime Monitor来监视,只能自己选择可靠的同机房其它服务器进行监测,并且为了排除线路故障外的原因,本机也要监测,同时兼顾到另一个工作现场的使用和线路故障检测,也需要上一个监测点。
总的来说就是三个监测点:服务器本机、机房旁路、远端现场;
最终我在chinaz里面用monitor为关键词找到了一个软件:A1Monitor;
从官方网站看来,最新版的A1Monitor 2009支持有以下特性:
- Vista兼容性,已经完成了对Vista的测试和工作兼容检查;
- 没有任何限制免费试用45天(如果企业对正版化有要求,建议购买,$89.95);
- 可以监视任何TCP/IP服务器或网页(通过http, https, pop3, smtp, ftp, 或者任何你需要监视的端口);
- 支持通过关键字来判断任何网页的正常与否;
- 你可以在服务器状态监测失败的时候收到邮件、同时A1Monitor还可以重启服务器或者执行一些附加的命令;
- 可以PING任何IP地址
- 每次有效的监测状态都会自动生成HTML格式的监测报告
事实上,除了VISTA兼容性之外,
我在chinaz找到的A1Monitor 2007特别版具备以上所有功能并且在我的2000/XP上工作非常良好,
如果你有这方面的需要,可以去down.chinaz.com搜索A1Monitor,
基本上,
需求列表里面的自动恢复和字词检测使用A1Monitor就可以解决,那实时报警呢?
这个时候我想起了通过飞信,因为飞信可以给机主和好友发短信并且免费,那么自己给自己发警报SMS是可行的,
通过Google我找到这篇文章,里面提到了几种发送短信的方式,免费方案就是利用fetion了,
于是乎我从里面选择了网页命令行的方式,该方式貌似通过Fetion API这个Google App项目开发的,
然后我构造了通过Fetion API发送警报的方式,因为可以在链接后面构造参数直接提交接收人和内容,格式如下:
1 | https://fetionAPI.appspot.com/api/?from=您手机号&pw=您的密码&to=接收方手机号&msg=短信内容 |
调用的方式就是
1 | iexplore https://fetionAPI.appspot.com/api/?from=您手机号&pw=您的密码&to=接收方手机号&msg=短信内容 |
缺点就是会打开一个IE窗口,并且不会自动关掉,如果要是故障频繁点,还需要人工来关大量的IE窗口。
之后我突然以前看到过的飞信机器人,
一个可以通过CLI(Command Line Interface,命令行界面,也有称之为DOS、命令提示符)调用的飞信客户端,
同时适用于Windows/Linux平台,还有一些开发文档,而我们需要用到的只是其中一个非常小的功能,CLI发短信,
格式如下:
1 2 | fetion --mobile=你的号码 --pwd=密码 --to=目标号码 --msg-gb=内容 fetion --sid=你的飞信ID --pwd=密码 --to=目标号码 --msg-gb=内容 |
看到这儿,大多数人应该能明白了,
既然A1Monitor允许执行额外的命令,而我的故障处理方式iisreset,并且同时执行一个飞信机器人发送短信的命令,
那么只要随便写一个cmd文件,包含上面两条命令,然后放在磁盘方便访问机器人的地方,等着A1执行就好了。
基本上解决方法就是这些了,并且试验过确实有效,当然,整个机房掉电的情况下就比较麻烦了,
不过因为设置了三个监测点,3D防护,基本上可以解决服务器死机、线路故障、机房掉电等情况的近实时(0s~你设定的监测时间间隔)SMS警报,但要求监测机24×7开机。
思路写的有点混乱,如果需要教程的话,请关注后续文章。
Btw,
你当然也可以用这个办法在你的电脑上监控你Web空间的Uptime,
但问题是我想没有多少人能保持电脑24×7并且网络线路一直通常无故障的对吧,比较有难度而已。
本文参考:
利用飞信fetion发送短信,实现服务器报警等: http://zhouzaibao.javaeye.com/blog/378631
fetion机器人2009版说明及下载: http://bbs.it-adv.net/viewthread.php?tid=155
09版fetion机器人安装说明: http://bbs.it-adv.net/viewthread.php?tid=186
Wed, Jun 24th, 2009 at 12:32
明年我去做学院的网络维护员…貌似就很需要这个东西了…
Mon, Jun 29th, 2009 at 11:49
故障的时候可以及时处理,我觉得就起个这样的作用,
不至于出问题了,上面找下来才知道……
Wed, Jun 24th, 2009 at 21:56
以前做过这个的实验,的确很有用的。哈
Mon, Jun 29th, 2009 at 11:51
前提是外网不出问题……
Sun, Jun 28th, 2009 at 09:46
这个我两年前就读过此类一片文章,不过是用在蜜罐测试上用的!呵呵!
Mon, Jun 29th, 2009 at 11:53
两年前貌似这么方便的飞信机器人还没出来吧~
其实监测的办法有很多,我认为关键的地方在于怎么实现这个SMS通知,
不过要是能用短信群发机+COM编程的话,工作起来更可靠~