网络通信 频道

使用Perl实现系统服务监控和报警

  一般的Web站点来说,都包括很多服务和应用,我们没法实时知道系统运行是否正常,特别是晚上的时候,如果服务器宕机或应用挂掉了,都会影响业务和用户访问,这时候一套对系统监控的错设就必须得当。目前有很多软件应的监控通知和报警服务,有收费的也有免费的,大家都可以选择。

  我们就尝试自己来实现一个服务监控和报警通知的程序,这样能够使用很小的代价,同样让我们的服务高可用性和高可靠性。


  【监控原理】

  远程服务
  对于远程机器来说,我们可以有一台监控服务器,或者随便找一台比较不容宕机的服务器来作为监控服务器,那么就能够监控其他的服务机上的服务了,远程监控是比较大家需要的方式了。一般远程监控就监控服务器和端口是否开放,比如说,我们的 Web 服务 Apache 一般都会开放 80 端口,那么我们就可以通过访问这台服务器的 80 端口来确定 Apache 是否在正常工作,如果无法连接上,那么说明该服务就停止了。

  本地服务
  对于本机来说,监控进程和日志文件都是可行的,一般来说,长期频繁工作的服务,比如 Apache 都会在每次访问后把访问信息记录到 access 访问日志文件里,如果这个文件长时间没有更新,就可以怀疑该服务已经停止了(当然了,不排除,这段时间内都没有人访问的情况)。另外对于进程来说,本机是很容易可以查看到进程情况的,对于 MySQL 等服务器来说,守护进程都是长期开放的,如果发现当前系统中没有了 MySQL 守护进程,那么也可以确认 MySQL 服务已经停止了。

   报警通知
   服务停止了,自然需要通知系统维护人员,那么一般就是通过邮件或者短信的方式,短信是最好的了,但是频繁短信同样让维护人员很郁闷,这个叫做短信炸弹(Message Bomb),所以邮件也许是个简单实在的方式,本地再配置上 Outlook/Foxmail 定期接收和通知方式,也比较快捷,但是晚上回家后,一般都无法收到邮件了,所以合理的方式是白天邮件通知,晚上和周末短信通知 的报警方式更合理。

0
相关文章