目前在公司或单位的信息化实施过程中,经常会遇到一个需求:监测系统运行状况。这里说的监测系统运行状况,并不是指单独对某个信息系统的运行状况进行详细的监测和统计报表,而是对整个公司或单位内部的所有信息系统进行监控,主要是监测其服务是否正常,运行是否健康。
这个需求的出现主要是因为企业或单位的信息化建设是一个分阶段的过程,而随着多个建设阶段的持续进行,目前在企业或单位内部,大多已形成多套系统同时运行,互不统属的关系。这些系统在功能上缺一不可,Down一个则坏全局,但是在实现和运行上却相互独立,互不统属,无法进行统一的管理和监测。
当然,实现这个功能并不是很困难,方法也是多种多样,但是问题在于因为要求实现的监测功能比较简单,至少是客户觉得很简单,只是想知道系统当前正常与否,因此一般不喜欢复杂的设计和实现,也不想对系统做什么修改。他们给你的建议最通常就是轮询。
轮询的实现就是建立一个应用,周期性的向各个系统发出访问请求,根据请求响应情况判断被访问系统的当前状况。轮询需要考虑的问题主要有两个:一是时效性,二是负载。时效性就是每隔多久进行一次询问,如果时间太长,则监测效果降低,如果时间太短,则系统和网络会产生令人不满意的负载,因此实现的设计就是尽可能的降低负载以保证好的时效。
本文介绍通过引入客户端辅助监测来减轻“监测系统运行状况”功能负载的方法。客户端包括多方面,如果是B/S系统,则指访问系统的用户浏览器端,如果是C/S系统,则指访问系统的Form端。
需要被监测的各个系统,可以在用户会主要访问的页面或Form中,加入一个额外提交功能,使用户在和系统进行某种交互时,同时对用户透明的向监测应用发送一个“正在使用通知”。这样一来,监测应用就知道此被监测系统当前正有用户在使用,从而确定了系统的运行健康。
“监测系统运行状况”应用的流程可以设计为,如果在设定时间段内接收到过“正在使用通知”,则判断为被监测系统健康。如果超出时间端没有接到“正在使用通知”,则由监测应用自身进行轮询以确定被监测系统是否健康。
这样做的好处在于,这个“正在使用通知”是由系统的使用用户端发出的,不产生系统服务自身和服务器端网络的负载。而“监测系统运行状况”应用对被监测系统服务端的轮询,在被减少了轮询次数的基础上,还将其控制在了系统访问较少的不繁忙时段。





