当前位置:首考文秘网>范文大全 > 教学设计 > 基于JMX技术对分布式应用系统进行监控的设计

基于JMX技术对分布式应用系统进行监控的设计

时间:2023-05-18 15:50:06 教学设计 来源:网友投稿

马丽慧1 王照华2 付海辰2  李 好2 杨鑫悦3

一、JMX概述

JMX——Java Management Extensions,即Java管理扩展, 是一套标准的代理和服务,是一个为应用程序、设备、系统等植入管理功能的框架。它致力于解决分布式系统管理的问题。

它是一种应用编程接口,可扩充对象和方法的集合体,可以用于跨越一系列不同的异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。它提供了用户界面指导、Java类和开发集成系统、网络及网络管理应用的规范。

二、JMX的体系结构。JMX体系结构分为以下四个层次:

1、设备层(Instrumentation Level) 主要定义了信息模型。在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。该层还定义了通知机制以及一些辅助元数据类。

2、代理层(Agent Level) 主要定义了各种服务以及通信模型。该层的核心是一个MBean服务器,所有的管理构件都需要向它注册,才能被管理。注册在MBean服务器上管理构件并不直接和远程应用程序进行通信,它们通过协议适配器和连接器进行通信。而协议适配器和连接器也以管理构件的形式向MBean服务器注册才能提供相应的服务。

3、分布服务层(Distributed Service Level) 主要定义了能对代理层进行操作的管理接口和构件,这样管理者就可以操作代理。然而,当前的JMX规范并没有给出这一层的具体规范。

4、附加管理协议API 定义的API主要用来支持当前已经存在的网络管理协议,如SNMP、TMN、CIM/WBEM等。

三、对分布式应用系统监控的设计

1、系统的架构

此套监控是面向大型分布式应用系统实现的,即无论是一个小的工作组还是一个大企业网络或园区网,这套监控系统都能以高度的可视化监控整个系统环境。

(1)系统环境配置

这个硬件环境的需要,根据网络规模而定。总体说来,可以分为以下两个主要方面:

A.一台中心管理服务器,它主要完成以下几部分功能:

①监测服务,能监测的服务包括:ICMP, FTP, HTTP, HTTPS, SMTP, IMAP, DNS, SSH, Snmp, Url, Pop3, Middleware, CpuLoad, DiskUsage, MemoryUsage, SwapmemoryUsage, MySQL, Sybase, Informix, SQLServer, Oracle, Postgres, BroadVision, AE,并根据配置文件在相应服务出现异常的情况下发出相应的通知给用户。

②监测SNMP,并生成相应的图形显示。

③配置邮件服务器。

④接受来自各个应用服务器的消息,并根据配置文件发出相应的通知给用户。

B.若干台应用服务器(根据网络规模而定)

服务器接受来自被监控的客户端API发出的消息,并做一定的处理,如应用程序超时判断、统计,然后将处理结果以XML 格式发送给中心管理服务器。最后的处理结果在处理过程中对用户是透明的,用户只需要到中心管理服务器的控制台去查看相关系统信息。

(2)体系架构:

系统整体架构设计如图1:

此套监测系统完全采用面向对象技术实现分层应用架构,将监测对象由底层的系统层扩展到中层的中间件层和高层的应用系统层,用户应用Pollers与API对应用层的用户应用系统进行监测,中间件层Pollers对中间件层的应用服务器和数据库系统进行监测,系统服务Pollers对系统层的所有系统服务进行监测,而网络监测Pollers则对网络层的底层情况进行监测。这样不仅可以适时地监测系统底层硬件的运行情况,还可以适时地监测用户的应用程序运行状况,并具有强大的报告功能、集中报警和事件管理技术,可以使运行中出现的问题最快得到解决。具体如图2所示:

2、网络层和系统层监控设计

监控系统设计的网络层与系统层(除系统服务外)的运行状态是通过中心管理服务器与主机或网络设备上的SNMP代理进行通讯来获取的。

SNMP 协议广泛地应用于对路由器、网桥、集线器以及网络服务器等网络设备的管理之中;而JMX规范除了强调对软件模块的管理之外,也包含了对网络设备的管理,二者在实现方法上有许多相似之处。首先,它们都使用服务代理作为管理程序与管理组件的通信渠道;其次,这两种管理体系都支持事件机制,使得管理代理可以向管理程序反馈管理信息,在JMX 规范中称为通知机制,在SNMP 中称为陷阱(TRAP)。

3、应用程序监控设计

此套监控系统通过两类方法来监控应用程序的运行,一类是由应用程序通过监控API从内部报告其运行消息和状态,另一类方法是由监控从外部检测应用程序的运行状态。

(1)从内部报告

应用API 由客户预制于软件应用系统中来监控应用程序的应用程序接口,应用程序监控向用户应用提供API,应用程序的代码需要调用API。在运行时,由API向外发送消息。如图3所示:

如图3可见,被监控的客户端接收应用API传递的消息,经过简单的处理后,发送到应用监控服务器;应用监控服务器接收到应用监控客户端传递的消息,进行对应的处理后,相应的事件发送到监控中心管理服务器。

应用API与应用程序在逻辑上是隔离的,当应用程序出现问题时,不会影响应用API的运行。用户对应用 API在应用程序中的设置对应用程序执行性能的影响取决于用户在应用程序中的调用数量,根据测试数据进行统计,应用API对应用程序的装入影响控制为毫秒级,应用程序一次API调用的返回时间平均为50毫秒;应用API对内存占用的大小为API及客户端代码大小与为API设置的缓冲区大小之和;应用API对输入/输出系统及数据库系统均无影响。由此可见,API代码非常简短,执行效率非常高,如果用户能够恰当地使用应用API进行设置,对所监控的应用程序执行性能的影响几乎可以忽略不计。

根据应用程序中发生事件的严重程度,应用API 将事件由重到轻分以下五种:Fatal、Error、Warn、Info、Debug。

应用程序监控为每一种事件设置了一个保存事件消息的相应缓冲区,用户可以自己定义对每种事件消息采用何种方式,可以选择设置缓冲区,也可以选择不设置缓冲区保存事件消息,当缓冲区满了的时候,应用监控代理就会根据用户的设置,过滤掉不重要的消息内容,然后一次性地将消息输出到数据库、控制台、文件系统或应用监控服务器进行处理,这样,就使应用 API 与应用程序的处理是异步方式的。

通过两类方法由内部来监控应用程序的运行,一类称为应用追踪,另一类方法称为应用报告。采用应用报告方法,应用程序自身可以检测到自己的执行状态,系统可以通过日志记录应用程序执行过程中发生的事件,用户可以动态地将检测的记录事件程度打开或关闭,应用监控并能通过mail、电话等用户自己设置的方式自动呼出信息给管理员,在监控的状态下,应用程序服务器不需要重新启动,也不需要关机。

①应用追踪 应用追踪是当应用程序自身出现问题时,需要第三方进行问题的解决。在应用程序进入到业务处理流程时,通过应用 API向应用监控服务器发送消息,在退出业务处理流程时,也通过应用API向应用监控服务器发送消息,该两次消息是为 Start/End消息对。应用监控服务器跟踪该Start/End消息对。如果Start消息在指定的时间内没有配对的End消息,应用监控服务器将会产生 Application Call Timeout事件,并发送到系统监控进行后续处理,一般是由用户订制的方式通过email、手机短信、电话等方式发送信息给系统管理员。

②应用报告 如果我们能够在应用程序的代码段中设置一些应用 API ,当程序执行到这些API 时,应用程序就可以主动地根据应用程序产生的事件向应用监控发送消息报告目前应用程序所处的状况,系统管理员就可以通过应用API 发送的消息判断应用程序存在的问题了。

(2)从外部访问

在具体大型分布式应用系统使用选择监控计算机应用系统时,用户可以采取四种方式:

①基于HTTP协议的应用

将嵌入用户应用程序代码的每一段应用API作为一个检查点,在这种应用方式中,检查点之间无次序性,上下文无关,应用监控服务器依预先的定义,依次检测检查点上的响应,应用监控服务器与用户应用之间的通讯采用HTTP协议。

②基于自描述文本协议的应用

在这种方式中,检查点之间有次序性,即检查点之间是上下文相关的,应用监控服务器与用户应用之间的通讯是基于命令的用户应用自己的通讯协议,即该协议是基于文本的,应用监控服务器依据CP上的响应,决定下一步应该发出什么样的请求。

③基于log的应用

在这种方式中,应用监控服务器不是对检查点进行监控,而是对应用程序的log进行监控,应用监控服务器对应用程序的日志和端口进行检测,并根据日志和端口的状况采取相对应的措施。

④使用客户化poller监控特殊的应用

应用程序的情况是千变万化的,除了采用应用 API来对应用程序进行监控外,还能够对特定的应用程序采用应用程序Poller 的方法交互式地监控应用程序。

一个应用程序Poller是一个嵌入应用监控服务器内的一片软件,每一个应用程序Poller与一个特定的应用程序相关;应用监控服务器负责安排应用程序Poller周期性地嗅探与之相关的应用程序。

一个应用程序Poller通过检查TCP/IP端口或模拟一个被预先指定输入和输出的假定交易来监控一个应用程序。

1)系统服务Pollers 为标准的系统服务,例如HTTP, SMTP 和 SSH 等,提供了一套应用程序poller。

2)中间件Pollers 为通常使用的中间件,例如Oracle8i Database, Sun ONE Application Server 和BroadVision Server等,提供了一套应用程序poller。

3)用户应用程序 Poller 用户可以按照poller界面规格说明开发他们自己的poller,监控本身不提供特定应用程序的poller。

Poller应该采用JAVA程序开发语言进行开发,当用户的应用程序实现了Poller接口后,就可以被监控系统用poller检测了。

(作者单位:1 北京工业大学;2 唐山学院信息工程系;3 秦皇岛教育学院)

推荐访问:分布式 监控 设计 系统 技术

版权所有:首考文秘网 2015-2024 未经授权禁止复制或建立镜像[首考文秘网]所有资源完全免费共享

Powered by 首考文秘网 © All Rights Reserved.。备案号:冀ICP备15026071号-91