基于JAVA的网络应用监控设计
关键词:设备监控,网络监控,网络应用监控,服务监控,性能监控
摘 要
随着企业信息化程度的提高,信息系统已成为企业必不可少的组成部分,信息系统的监控与维护也成为了企业运营的重要环节,信息系统监控主要内容是监控各个子系统,如主机,服务器,路由器等设备,以及各设备上运行的各种服务。传统的网络监控系统只能针对主机,服务器,路由器等孤立设备进行监控和管理,即只能确定单一的节点是否正常工作,而无法综合地确定整个系统的健康状况。
当今的企业信息系统的内部各部分之间的依赖程序相对较高。很多因素都可能影响信息系统各应用服务的性能和可用性。而这些影响基本上都无法完全避免的,且很难进行预测。但是,我们可以创建一个监控系统来监控信息系统的各应用程序和服务的状态,信息系统的内部各部分之间的依赖将会体现在各个部分的内部状态与性能数据上,因此我们可以通过系统内部各部分的状态与性能数据建立与系统相对应的模型,这些模型内的关系将反映系统内各部分之间的关系,通过这个模型可以高效地确定系统的整体状况,从而显著降低那些灾难事件的严重性和持续时间,提高信息系统的运行效率。
本系统将初步实现一个可以监控各种不同应用和服务的框架,并实现很高的可定制性和扩展性,如可以自定义这不同的监控节点性能数据之间的关系,从而做出综合判断,提高系统的可用性。
第1章 绪论
1.1课题背景
信息系统是现在企业必不可少的组成部分,它支撑企业各部门的正常运行,为各部门提供数据和业务的管理服务,因此信息系统的可用性关系到整个企业的正常运作,信息系统的监控与维护也成为了企业运营的重要环节,信息系统由硬件系统和软件系统组成,硬件系统包括主机,服务器,路由器等设备,软件系统就是硬件系统中各设备上运行的各种应用程序和服务。当今的企业信息系统的内部各部分之间的依赖程序相对较高。很多因素都可能影响信息系统各应用服务的性能和可用性。使系统无法正常工作,而这些影响基本上都无法完全避免的,且很难进行预测。虽然我们可以创建一个监控系统来监控信息系统的各应用程序和服务的状态,但是传统的网络监控系统只能针对主机,服务器,路由器等孤立设备进行监控和管理,即只能确定单一的节点是否正常工作,也无法对软件系统进行监控,无法综合地确定整个系统的健康状况。
1.2 需要解决的问题
1. 异构系统监控
信息系统有多种多样的网络设备,如服务器,路由器,还有各种不同的应用程序的服务程序,对于这些不同的网络设备与网络应用服务器,协议和访问方式的存在很大的差异,因此状态数据的收集方法也不尽相同。如要从网络路由器读取统计数据,收集器可以使用简单网络管理协议SNMP,对于数据库服务器则使用JDBC,Java平台的应用则应使用JMX。
2. 整合多个孤立监控
传统的一对一的监控工具集收集的数据是孤立的,各异构系统之间无法交流它们的状态数据,以此产生的单一的视图是无法反映整体情况的,这就产生了孤立监控。较为复杂和难以诊断的故障通常涉及多个相关的应用程序或服务。孤立监控收集的孤立数据往往无法反映这样的问题,如JDBC连接池连接泄漏问题,应用程序管理者发现自己的服务器与数据库保持了50个连接。但是数据库管理员(DBA)查看数据库管理控制台却看到该应用程序与数据库有80多个连接,并且数量正在增加。在孤立监控系统中分别收集到这两个数据,而单一两个数据并不能反映其中隐藏的问题。如果整合的监控系统同时收集到这两个数据并按给写的规则去判断,就可以很快确定问题的所在之处,系统甚至可以自动通知相关人员去解决该问题。
3.2 各个模块功能分析
1. 数据收集器
数据源是监控数据的来源,如性能或可用性数据的来源,这些数据对于反映组件的相对健康状况非常有用。例如,Java Management Extensions (JMX) 服务通常可以提供关于 JVM 健康状况的丰富数据。可用JMX此获取Java平台之上的大多数应用,如应用服务器JBoss、Tomcat等,大多数关系数据库通过 SQL 接口发布性能数据,通过JDBC可以很好地兼容各种不同的数据库。通常网络设备可能有多个数据源。
收集是从数据源获取性能或可用性数据的流程。对于不同的网络设备与网络应用服务器,由于通信协议和访问方式的存在很大的差异,收集器通常实现一些相应的 API 来访问该数据源。如要从网络路由器读取统计数据,收集器可以使用简单网络管理协议SNMP,对于数据库服务器则使用JDBC,Java平台的应用则应使用JMX。但收集器给监控器提供了统一的数据访问API,这可以通过Java中的Interface实现,收集器屏蔽了不同设备与应用的访问方法,实现了访问接口的统一。
2. 监控器
监控器是收集器的使用者,它根据数据库中存储的监控器实体的描述来创建监控器实体,然后再把实体添加到监控器容器中,容器完成多个监控器的调试。一个监控器实体对应一个数据源。
视图:最终的数据表示方法,如图表,Flex等。
数据缓存:包含原始或汇总指标的历史数据库,从而能够查看特定时间范围内的数据并生成图表。
动作:给收集到符合某一设定条件的数据定义相应动作的功能,即报警。典型的动作是发送电子邮件、短信等。
第4章 网络应用监控设计及实现
4.1数据收集器
4.1.1数据收集器模式与接口设计
收集通常有两种可选模式:
1、轮询:按固定时间调用收集器进行收集。就是对目标设备或应用状态数据的定期采集。例如,可以每半分钟调用一次收集器来收集主机或应用程序的的 CPU 利用率,或通过 JXM 接口从事务管理器读取提交事务的总数。
2、监听:这种通用数据模式是观察者模式的一种形式。类似事件订阅,收集器将其自身注册为目标事件监听程序,订阅我们感兴趣的事件,该事件发生时目标系统自动回调通知我们的监听程序,从而获取数据。如SNMP的trap 和JMX的Notification 。
接口设计:收集器接口是规范监控器从各种不同的设备和应用收获数据的统一方法,具体收集数据的方法则由实现这个接口的类来实现,使用时可以用Java的反射机制来创建对应的数据收集器,UML图