服务器监测和实时SMS警报的思路

一直以来,
我手下的一台运行着ASP应用的Win2000服务器总是访问数据库会莫名其妙锁死,
然后用户端访问的页面就提示:数据库查询错误,编码AXXX
最终分析下来的原因是ASP程序本身的问题,所以每次都要人工去执行iisreset释放,

而我又不会ASP且开发方对这个缺陷的改进意见总是支支吾吾的,
每次出故障都是同事打电话过来提醒然后我再连接上服务器去执行重置,因为我不太用那个东西……
但老这样,领导也渐渐开始有点意见了,所以,需要一个能及时报警并自动解决IIS重置的方案。

最理想的状态是基本满足以下需求:

  1. 实时报警,宕机与恢复时通过MAIL/SMS/CALL等时效性较高的手段通知;
  2. 自动恢复,在发出警报的同时能执行一些额外的命令操作,以达到自动恢复的功能;
  3. 字词检测,能通过实时的页面关键字词的监测达到判断业务系统的正常性;
  4. 费用低廉,最好是免费了,不能免费的话,再说吧……

其中至关重要的就是状态监测这一块的,
因为是内网业务系统,无法通过站长保姆这类第三方的Uptime Monitor来监视,只能自己选择可靠的同机房其它服务器进行监测,并且为了排除线路故障外的原因,本机也要监测,同时兼顾到另一个工作现场的使用和线路故障检测,也需要上一个监测点。
总的来说就是三个监测点:服务器本机、机房旁路、远端现场;

最终我在chinaz里面用monitor为关键词找到了一个软件:A1Monitor
从官方网站看来,最新版的A1Monitor 2009支持有以下特性:

  1. Vista兼容性,已经完成了对Vista的测试和工作兼容检查;
  2. 没有任何限制免费试用45天(如果企业对正版化有要求,建议购买,$89.95);
  3. 可以监视任何TCP/IP服务器或网页(通过http, https, pop3, smtp, ftp, 或者任何你需要监视的端口);
  4. 支持通过关键字来判断任何网页的正常与否;
  5. 你可以在服务器状态监测失败的时候收到邮件、同时A1Monitor还可以重启服务器或者执行一些附加的命令;
  6. 可以PING任何IP地址
  7. 每次有效的监测状态都会自动生成HTML格式的监测报告

事实上,除了VISTA兼容性之外,
我在chinaz找到的A1Monitor 2007特别版具备以上所有功能并且在我的2000/XP上工作非常良好,
如果你有这方面的需要,可以去down.chinaz.com搜索A1Monitor:mrgreen:

基本上,
需求列表里面的自动恢复字词检测使用A1Monitor就可以解决,那实时报警呢?

这个时候我想起了通过飞信,因为飞信可以给机主和好友发短信并且免费,那么自己给自己发警报SMS是可行的,
通过Google我找到这篇文章,里面提到了几种发送短信的方式,免费方案就是利用fetion了,

于是乎我从里面选择了网页命令行的方式,该方式貌似通过Fetion API这个Google App项目开发的,
然后我构造了通过Fetion API发送警报的方式,因为可以在链接后面构造参数直接提交接收人和内容,格式如下:

调用的方式就是

缺点就是会打开一个IE窗口,并且不会自动关掉,如果要是故障频繁点,还需要人工来关大量的IE窗口。

之后我突然以前看到过的飞信机器人
一个可以通过CLI(Command Line Interface,命令行界面,也有称之为DOS、命令提示符)调用的飞信客户端,
同时适用于Windows/Linux平台,还有一些开发文档,而我们需要用到的只是其中一个非常小的功能,CLI发短信
格式如下:

看到这儿,大多数人应该能明白了,
既然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

PhpMyAdmin 2.9

在配置服务器发现新出的PMA 2.9.X都会出现一个问题,

我这里是设置为COOKIE登陆的,不论使用任何用户名,都会提示

不过,值得注意的是,其中的“MYSQL”不是真正的用户,而是另外的,
搜索了一下,有些人的提示是

理论上应该是我猜测有可能是IIS用户名或者目录名。

目前尚未解决。

————————–我更新啦!————————–

Update: March 25th, 2008
原因是启用了PHP的Safe_Mode,关闭就可以了。

PHP & Apache for Win

文章源自对Boiling Soul的回复

在Windows平台配置PHP+Apache,常见的问题之一就是[color=aaaaaa]Unable to load dynamic library (.dll)[/color]

而一般的做法是把 DLL 复制到 %systemroot%\system32 里面,
不过,这样的缺点显而易见:

  1. 如果需要大量的额外模块,那么会增加SYSTEM32的体积;
  2. 如果系统出现问题,备份是麻烦的事情;
  3. 如果需要对支持的模块进行整理/升级…

而我的方案是,把[color=aaaaaa]DLL模块文件放置到%Apache%\bin目录内[/color],
因为WINDOWS的寻找顺序会[color=aaaaaa]先从程序目录[/color]开始,所以DLL文件可以放在%Apache%\bin目录内。

需要什么模块,就把模块文件复制过去就行。
不过,缺点是把SYSTEM32的负担转移到了%Apache%\bin下,但是相对与SYSTEM32的文件数量来说,这么做是值得的。

另外附加一个我自己使用的关于PHP的诀窍。是关于[color=aaaaaa]同时在IIS内支持PHP4/5[/color]的办法。(之前询问过Prim@Hosting的销售代表,据说他们也没试过……)

手工配置PHP的时候,一般会建议把php.ini放置在%systemroot%内,不过这样一来就只能在WINDOWS内唯一支持PHP4或PHP5,
这样对程序开发者而言,同时[color=aaaaaa]测试对PHP4/5的兼容[/color]则会非常麻烦。

我做法是:[color=aaaaaa]把php.ini留在原PHP安装目录[/color],例如\php4\php.ini和\php5\php.ini,
在一个IIS上配置PHP4/PHP5,IIS的目录下的文件解释引擎因为支持单独设置,
所以可以在一个站点里面,建两目录,4/5,然后就可以分别设置PHP4/PHP5为4/5目录(两个目录也可以设置为虚拟目录指向同一目录)的PHP解释引擎。(因为PHP.ini在各自的目录里面,不会冲突的)
这样就可以在同一个IIS内测试程序对PHP4/5的兼容性。

相关:
Apache http://www.apache.org
PHP http://www.php.net

Little ASP Server by NetBox

从去年开始,一直在使用NetBox作为IIS/ASP的临时替代平台。
由于在CNFREE看到有人说需要“方便”、“简单”的ASP服务器,就推荐了这个,结果人家说:“NetBox没听过,…… ”,很不识货的行为。

NetBox内嵌ASP解析,并且程序体积微小(相对与IIS,算Tiny了)
官方介绍:

NetBox 编译器

  编译所有内部对象、引擎和脚本文件,并封装到独立可执行文件中,不需要安装任何补丁即可在 Windows 98、Windows NT/2000/XP/.NET 2003 RC1 上直接执行,极大的方便了部署和安装。编译后程序运行速度提高2~10倍,代码安全性好有效的保护了知识产权,解决了以往 ASP 开发的应用程序的发布问题。

可编程虚拟机

  NetBox 提供了强大的虚拟机对象,供开发商在应用程序中加入用户可编程特性(类似且强于Word 中的宏),提供用户订制计算、复杂商务逻辑的二次开发。由于虚拟机独立于应用程序,它安全可靠,可以控制并去除有害代码。NetBox 的虚拟机对象提供完整的错误回报和错误捕获功能。

应用服务器

  NetBox 提供了可编程的高性能 HTTP 服务器对象,直接编译到应用中无需独立部署。目前 NetBox 使用经业界广泛验证的 OpenSSL 来支持高效安全的 SSL 和 TLS 标准。

网络服务器

  NetBox 提供可编程的高性能 TCP 服务器对象用于编写多线程网络服务器软件,如 FTP,SMTP,POP3,Telnet,网络游戏服务器等。内置的 SSL、TLS 支持,无需编写代码直接支持安全传输。

强大的 HTML 对话框

  NetBox 提供一种新的快速创建桌面应用的方法,开发人员直接使用功能强大,设计容易的 HTML 作为软件界面,支持文字、图形、声音和流媒体的整合,支持数据库访问,支持 HTTP 和 TCP,支持 XML,支持各种加密算法,支持各种外设。NetBox 可以在很短的时间内开发功能强大的多媒体应用、网络应用(离线软件、下载工具等),商业软件客户端等。

当然,我们如果仅仅需要一个ASP服务器,那么就不用去下载那么麻烦的工程包(还需要申请授权,确保你的使用是合法的,至于为什么,后面告诉你),

只需要安装后目录中的Netbox.exe文件Just need it就行,而配合使用的就是一个任意文件名(例如main.txt)的配置文件,按照WINDOWS的拖放规则,只需要将配置文件拖放到Netbox.exe上,之后会在任务栏出现一个ICONNetBox Tray Icon,这时代表NETBOX已经在运行。
就这样,一个ASP服务器就开始运行了,没其它东西吗?没,仅此而已了!

当然,NetBox的诞生不是用来做这样的简单应用的。
据我的理解,NetBox.exe只是一个被用来嵌入于“ASP程序包”的服务程序,而整套NetBox是用来打包ASP程序以达到源码保密的目的(因为打包后为一个.exe程序,直接启动就打开该机80端口运行WEB服务,并不公开其中的ASP源码),也就是un-Open Source吧?
因此,可以利用NetBox将ASP程序打包为一个EXE文件,便可以随处演示了。

不过,这么简单的事情也就产生了一些麻烦,NetBox被作为WEB后门的打包程序用于“黑客”行为,这里就有该公司的一份声明。
产品无罪嘛,万一大家遇到了这样的东西出现在自己服务器上,原谅NetBox吧。

当然,NetBox的功能不仅于此,更多高级的功能,你需要参考技术文档

NetBox.exe 明天提供下载。如果谁觉得提供该程序违法了,请告之,我将撤消。
NetBox程序包: http://www.netbox.cn/download/nbsetup.EXE

Update: Aug 21st, 2005
NetBox Lite Package: http://www.live21.org/download/netbox.zip (Include netbox.exe and config file)

附 配置文件内容:
|inline