前段时间开发了http消息监控工具filterLogTool,同时也为此写了篇实践的论文。应用的结果由于涉及实际项目具体内容就不介绍了。该工具已经在现场作为监控使用。
在这里介绍论文的理论部分。
摘要
WEB系统的日常工作是处理每个HTTP请求,同时也会对每个请求作出响应。我们对每个请求的消息内容和响应时间等重要信息进行记录,并对这些数据进行分析,可以帮助我们从各个不同的方面去了解现在系统的性能和用户行为等方面的信息。本文描述了一个HTTP服务端消息监控分析方案的实现原理,以及在XX系统中该方案的实践情况。
关键词
HTTP、实时监控、数据挖掘、过滤器、白盒测试
1、引言
WEB系统的日常工作是处理每个HTTP请求,同时也会对每个请求作出响应。如果我们在服务端对每个请求的消息内容和响应时间等重要信息进行记录,那么这些数据是第一手的、真实的、精确的、服务端现状的数据。对于这些有巨大价值的数据,我们可以根据我们的需要进行挖掘,从而精确的分析,可以帮助我们从各个不同的方面去了解软件性能和用户行为等方面的信息。这个就是实时监控和数据挖掘的思想。
实时监控,可以监控实验室或者现场的系统,随时的自动收集数据,也可以有选择的监控数据。该数据的特点是,第一手的、真实的、精确的。蕴含巨大的价值。
数据挖掘,就是要挖掘出我们监控数据的价值。可以在性能方面分析,分析请求的处理能力。可以对请求频率进行分析统计,分析用户的行为。也可以对某些请求进行分析,判断异常的请求,预警系统。
2、设计实现
HTTP服务器有许多类型,而且不同的服务器还支持不同的语言。但是每种服务器都是基于“请求—响应“模式实现的。所以要实现获取“请求—响应“的重要信息在不同的服务器和语言有可能不一样,但是原理是一样的。当然,有些服务器也提供了请求数据的日志记录,但是里面包含的信息不一定存在我们需要的。所以我们采用自行开发的方式来取得“请求—响应“的重要信息。
下面介绍的这个实现方案是基于JAVA的WEB服务器的实现,采用过滤器作为获取“请求—响应“信息的切入点。
2.1 系统分析
2.1.1 典型web计算模式
由上图1我们可以知道,一个请求到达以后是会经过一层一层调用传递过去的。Servlert层是与http协议相关的,包装了有关协议的信息。其他层次,一般的软件架构会设计成与http协议无关。红色框起来的就是整个web的计算组件。最右边的一般就是数据库或者其他第三方应用了。