当前位置

网站监控程序的开发需求

James Qi 在 2013年9月18日 - 14:46 提交
内容摘要:对于持久化专业运营网站来说,对网站的监控必不可少,以我们自己的理解,网站监控需要做的两件基本事情: 监控网站健康状态,当网站出现故障的时候,及时发现并报警; 监控网站性能表......

  对于持久化专业运营网站来说,对网站的监控必不可少,以我们自己的理解,网站监控需要做的两件基本事情:

  1. 监控网站健康状态,当网站出现故障的时候,及时发现并报警;
  2. 监控网站性能表现,获取网站访问速度,利于用数据来分析优化。

  说到网站监控,以我们的了解,可以采取的办法有以下几种:

  1. 使用现成的网上监控服务,例如site24x7.com提供收费和免费的专业服务;
  2. 自己安装现成的监控软件,例如radar website monitor;
  3. 开发一套适合自己需要的监控软件,这只在需求特殊以及有能力开发的情况下才进行。

  前面1、2两种办法我们都曾经采取过,但随着子网站数量的不断增长,用已有的现场服务或者软件就显得不足了,需要监控的子网站数量达到数百个之多,各个子网站还希望能监控不同的页面(例如首页、列表页、内页以及桌面版、手机版、多语言版等),主要问题:

  • 如果采用现成的网上监控服务,没有地方可以提供这么多免费监控的,而收费都是按照站点数量计算的,显然花费太高;
  • 采用现成软件是一个办法,但例如radar website monitor这样的软件也存在不足,例如启动程序的时候几百个站点同时开启访问导致很多失败、设置监控周期过长则不能及时发现问题、设置监控周期过短则又对网站服务器造成负载过高。

  所以近期我们一直在筹划搞一套自己的监控程序,虽然复杂、麻烦一些,但利于长期使用,突出特点是符合我们自己的需求、能智能化设定系列网站的监控,几点设想:

  • 基本功能:能监控网站的状态、及时发现故障并报警、能记录访问的速度、便于分析统计找规律。
  • 智能特点:多层次划分网站结构,制定模仿人的检查策略,既能及时发现问题又不造成负载过高。

  所谓多层次划分网站结构,我们的初步划分想法是:

  1. 服务器群:由多台物理服务器组成服务器群,例如由5台国内服务器组成国内服务器群、由10台国外服务器组成国外服务器群;
  2. 服务器:一台物理服务器,上面可以放置N个网站和/或N个网站系列;
  3. 网站系列:一般是用子域名或者子目录的方式设置类似的一批网站,例如sicxx.bizdirlib.com或者industry.bizdirlib.com/sicxx这样的网站系列;
  4. 网站:单独的一个网站,一般采用单独的子域名或者子目录,可以有桌面版、手机版和多语言版,都算作一个网站;
  5. 网页:一个网站内的不同功能或者版本的页面,例如首页、列表页、内容页,或桌面版、手机版及多语言版的页面。

  其中“网站”居于监控的核心位置,向下可以包含各种网页,向上可以归类到网站系列、服务器去,而服务器群的作用主要是根据网络线路划分,以便更精确记录访问速度。

  对于一个网页的监控,已经另外画了流程图,比较规范、简单,主要是监控、记录这几个方面:

  • 网页返回代码,是否为正常的200,还是其它的报错;
  • 网页中是否包含应该包含的文字或者代码;
  • 网页中是否包含不应该包含的文字或者代码;
  • 网页的访问时间。

  而对于所谓智能特点有以下设想:

  • 一个网站可以自由设置需要监控的N个典型网页,轮流监控,例如设置这样几个需要监控的页面:英文版桌面版首页、中文版桌面版列表页、英文版手机版分类页、中文版手机版内容页、robots.txt页面、sitemap.xml页面等,有不同的网址和包含、不包含代码设置,按照5分钟一次的循环来轮流监控上面几种页面,每种页面之间的访问可以间隔30秒,如果某种页面出现问题则间隔2分钟再访问同一个页面,如果连续出现第3次故障则报警;
  • 网站系列中的每个网站不需要都像上面这样一个网站来监控,可以轮流进行,例如某个系列网站有51个子网站,则51个网站轮流按照5分钟一次的循环来进行监控,这样检查一轮这个系列网站所用的时间为51*5分钟=255分钟(4小时15分钟),或者对系列网站每个站点都进行10分钟一次的首页检查,然后加上前面说的轮流重点监控;
  • 智能判断:如果发现某种页面出现问题,而该网站的其它页面都正常,则可能是网站的某种功能或者版本出现故障;如果某个网站出现故障,而该系列的其它网站都正常,则可能是某个网站的单独设置出现问题;如果某台服务器上的多个网站系列都出现同样问题,则可能是服务器的设置或者状态出现问题。类似这样的判断还有很多,也就是模拟人去检查的过程;
  • 进一步的智能检查、处理:模拟人工检查服务器的状态、对常见问题进行干预处理(例如与Linux下的一些Shell脚本结合,重启Apache服务、MySQL服务等);
  • 数据统计、性能分析,除了故障报错以外,能对访问速度进行记录,超过设定的阈值(例如访问时长超过20秒或者24小时内访问超过10秒的比例达到15%以上,等等)也进行提醒。

  这套监控还有些复杂,如果要做得很智能、很完善的话,需要比较长的时间,可以先做出基本的功能,替代现在用的Radar Website Monitor,逐步来进行完善。

  准备使用PHP+MySQL来做,一些设置、状态可以用Web界面,在国内、国外服务器上部署两套。

  这是初步的需求先记下,等有进展再继续记录。

 

评论

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符