JMX(Java Management Extensions)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构的操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
JMX相关的两个JSR:
JSR 3:Java Management Extensions (JMX) Instrumentation and Agent Specification
JSR 160:Java Management Extensions Remote API
基本概念
1. Manageable Resources
指应用、硬件设备、服务等可被Java包装或访问的实体,是JMX要管理的实际内容。
2. MBean (Managed Bean)
一种满足JMX规范(命名、继承结构等)的Java类。MBean用于暴露Manageable Resources的管理接口,以便对其进行操作和访问。
MBean分为以下几类:
- Standard MBean:标准MBean,管理接口由定义在MBean接口中的方法描述(属性通过标准的JavaBean get/set方法暴露)。
- Dynamic MBean:需实现特定接口,管理接口在运行时暴露,有更高的灵活性。
- MXBean:仅适用预定义的数据类型,不依赖自定义的领域对象。
3. MBean server
用于管理一组MBeans的Java类,相当于一个MBeans的注册表,每个MBean需要在MBean server上注册,提供唯一的object name。
注意,MBean Server只暴露MBean的管理接口,并不直接暴露MBean的引用(Object Reference)。
4. JMX agent
MBean server的容器,是提供MBeans管理服务的Java进程。由MBean server、Agent Services(创建MBean之间的关联、动态加载class、基本的监控服务、timer等)组成。
5. Protocol adaptors and connectors
位于JMX agent中(一般也是以MBean的形式存在),用于将agent暴露给外部管理系统或协议。
Adaptor是使用某种协议(例如HTTP、SNMP)来与JMX agent联系,agent端有一个对象(adaptor)处理有关协议的细节,向管理端展示一个视图;Connector在agent端和管理端都必须有一个对象处理相应的请求与应答,无论底层的协议是什么,管理端的管理接口都是统一的。
6. Management application
可以是任意的用户应用,一般提供图形界面来进行管理操作。
7. Notification
由MBean或MBean server产生的,封装底层的事件、告警、通用信息等。其他的MBean或Java对象可以注册为监听器以便接收通知。
8. Instrumentation
指将Manageable Resources暴露为MBeans。
体系结构
1. Instrumentation层
本层的主要组件是MBeans、Notification Model、MBean metadata classes。
通知模型是基于Java事件模型基础上的一种通用的模型,以便MBean或MBean Agent向其他MBean或管理应用发送通知。
metadata指描述MBean管理接口(属性、操作、通知、构造器)的元数据,包括名称、描述以及其他特殊信息(如:MBean的属性是只读还是可写、操作的参数和返回值类型等)。
2. Agent层
本层的主要组件是MBean Server和Agent Services。
3. Remote Management层
本层主要提供管理应用和Agent之间的交互,一般将Agent的接口服务通过各种Adaptors和Connectors向管理应用暴露。