JMX 介绍

JMX 介绍

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等

优点可以非常容易的使应用程序具有被管理

伸缩性的架构每个JMX Agent服务可以很容易的放入到Agent中,每个JMX的实现都提供几个核心的Agent服务,你也可以自己编写服务,服务可以很容易的部署,取消部署。

主要提供接口,允许有不同的实现

JMX分层

JMX体系结构分为以下四个层次:

设备层

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

代理层

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

分布服务层

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

附加管理协议API

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

JMX定义了四种管理构件

标准、动态、开放和模型管理构件。每一种管理构件可以根据不同的环境需要进行制定。

1.标准管理构件

标准管理构件的设计和实现是最简单的,它们的管理接口通过方法名来描述。标准管理构件的实现依靠一组命名规则,称之为设计模式。这些命名规则定义了属性和操作。检查标准管理构件接口和应用设计模式的过程被称为内省(Introspection)

。JMX代理通过内省来查看每一个注册在MBean 服务器上的管理构件的方法和超类,看它是否遵从一定设计模式,决定它是否代表了一个管理构件,并辨认出它的属性和操作。

2.动态管理构件

动态管理构件提供了更大的灵活性,它可以在运行期暴露自己的管理接口。它的实现是通过实现一个特定的接口DynamicMBean(如下图)。

JMX代理通过getMBeanInfo方法来获取该动态管理构件暴露的管理接口,该方法返回的对象是MbeanInfo类的实例,包含了属性和操作的签名。由于该方法的调用是发生在动态管理构件向MBean服务器注册以后,因此管理接口是在运行期获取的。不同于标准管理构件,JMX代理不需要通过内省机制来确定动态管理构件的管理接口。由于DynamicMBean的接口是不变的,因此可以屏蔽实现细节。由于这种在运行期获取管理接口的特性,动态管理构件提供了更大的灵活性。

3.开放管理构件

开放管理构件是一种专门化的动态管理构件,其中所有的与该管理构件相关的参数、返回类型和属性都围绕一组预定义的数据类型(String、Integer、Float 等)来建立,并且通过一组特定的接口来进行自我描述。JMX代理通过获得一个OpenMBeanInfo对象来获取开放管理构件的管理接口,OpenMBeanInfo是MbeanInfo的子类。

4.模型管理构件

模型管理构件也是一种专门化的动态管理构件。它是预制的、通用的和动态的 MBean 类,已经包含了所有必要缺省行为的实现,并允许在运行时添加或覆盖需要定制的那些实现。JMX规范规定该类必须实现为javax.management.modelmbean.RequiredModelMBean,管理者要做的就是实例化该类,并配置该构件的默认行为并注册到JMX代理中,即可实现对资源的管理。JMX代理通过获得一个ModelMBeanInfo对象来获取管理接口。

模型管理构件具有以下新的特点

1)持久性

定义了持久机制,可以利用Java的序列化或JDBC来存储模型MBean的状态。

2)通知和日志功能

能记录每一个发出的通知,并能自动发出属性变化通知。

3)属性值缓存

具有缓存属性值的能力。

JMX通知模型依靠以下几个部分

1)Notification,一个通用的事件类型,该类标识事件的类型,可以被直接使用,也可以根据传递的事件的需要而被扩展。

2)NotificationListener接口,接受通知的对象需实现此接口。

3)NotificationFilter接口,作为通知过滤器的对象需实现此接口,为通知监听者提供了一个过滤通知的过滤器。

4)NotificationBroadcaster接口,通知发送者需实现此接口,该接口允许希望得到通知的监听者注册。

JMX规范定义了代理服务有

1)动态类装载--通过管理小程序服务可以获得并实例化新的类,还可以使位于网络上的类库本地化。

2)监视服务--监视管理构件的属性值变化,并将这些变化通知给所有的监听者。

3)时间服务--定时发送一个消息或作为一个调度器使用。

4)关系服务--定义并维持管理构件之间的相互关系。

1.动态类装载

动态类装载是通过m-let(management applet)服务来实现的,它可以从网络上的任何URL处下载并实例化管理构件,然后向MBean服务器注册。在一个M-let服务过程中,首先是下载一个m-let文本文件,该文件是XML格式的文件,文件的内容标识了管理构件的所有信息,比如构件名称、在MBean服务器中唯一标识该构件的对象名等。然后根据这个文件的内容,m-let服务完成剩余的任务。下图例示这一过程:

2.监视服务

通过使用监视服务,管理构件的属性值就会被定期监视,从而保证始终处于一个特定的范围。当监视的属性值的变化超出了预期定义的范围,一个特定的通告就会发出。JMX规范当前规定了三种监视器:

1)计数器监视器,监视计数器类型的属性值,通常为整型,且只能按一定规律递增。

2)度量监视器,监视度量类型的属性值,通常为实数,值能增能减。

3)字符串监视器,监视字符串类型的属性值。

每一个监视器都是作为一个标准管理构件存在的,需要提供服务时,可以由相应的管理构件或远程管理应用程序动态创建并配置注册使用。

3.时间服务

JMX时间服务可以在制定的时间和日期发出通告,也可以定期的周期性的发出通告,依赖于管理应用程序的配置。时间服务也是一个管理构件,它能帮助管理应用程序建立一个可配置的备忘录,从而实现智能管理服务。

4.关系服务

JMX规范定义了管理构件之间的关系模型。一个关系是用户定义的管理构件之间的N维联系。

关系模型定义如下一些术语:

1)角色:就是是一个关系中的一类成员身份,它含有一个角色值。

2)角色信息:描述一个关系中的一个角色。

3)关系类型:由角色信息组成,作为创建和维持关系的模板。

4)关系:管理构件之间的当前联系,且必须满足一个关系类型的要求。

5)角色值:在一个关系中当前能满足给定角色的管理构件的列表。

6)关系服务:是一个管理构件,能接触和维持所有关系类型和关系实例之间的一致性。

MBean服务器

Mbean服务器为代理层的核心,设备层的所有管理构件都在其注册,管理者只有通过它才能访问管理构件。

管理构件可以通过以下三种方法实例化和注册:

1)通过另一个管理构件

2)管理代理本身

3)远程应用程序

注册一个管理构件时,必须提供一个唯一的对象名。管理应用程序用这个对象名进行标识管理构件并对其操作。这些操作包括:

1)发现管理构件的管理接口

2)读写属性值

3)执行管理构件中定义的操作

4)获得管理构件发出的通告

5)基于对象名和属性值来查询管理构件

猜你喜欢

转载自gaojingsong.iteye.com/blog/2319791
JMX
今日推荐