一。监控能够作的事java
1,监测平台和硬件的健康性数据库
2,在应用层面上配置资源 (譬如数据库过载,能够手动调节链接数)服务器
3,收集应用统计数据架构
4,调试选项,更改日志级别等app
5,监视服务器的性能性能
实现方案:JMX编码
二,基本jmx条目spa
1,可管理的资源代理
包括任意的应用,设备或其余java能够调用包装的实体调试
2.MBean
Managed bean:知足jmx规范,具备特定名称和继承规范的java类
jmx包含3种bean:标准,动态,模版
MBean都驻扎在一个叫MBean Server的地方
3.MBean Server
管理一组MBean的java类,是jmx管理环境中的核心,使用注册的方式来查找Mbeans,
而且对注册的MBean暴露管理接口,提供方法来查找MBean
4.Jmx agent
提供一系列服务来管理MBean的一个java进程,是MBean Server的容器
agent能够有一组适配器和链接器来让远程不一样的客户端使用本身,适配器能够映射协议,譬如http,snmp
链接器能够把agent暴露出来让客户端经过rmi,jini链接
5.协议适配器和链接器 Protocol adaptor and connector
存在与agent中,经过协议或链接暴露agent
6.管理应用 Management application
经过接口链接agent,管理其中MBean的应用程序
7通知 Notification
Mbean和MBean Server包装的事件,报警,或通常通知
8.设备 Instrumentation
定义如何实现管理资源的规范
三,jmx架构
层 | 描述 |
分布服务层 | 包含管理应用与代理层通讯的各类组件 |
代理层 | 包含代理和MBean服务器 |
设备层 | 包含表明可管理资源的MBean |
四。编码规则 for all MBeans
1,全部的MBean必须是具体的java类,便可以实例化非抽象的类
2,要有public的构造器
3,全部的MBean要么实现本身的MBean接口,要么实现DynamicMBean接口,接口要以MBean结尾
4.标准的接口和实现必需要在同一个包路径下,只能实现单个接口,多个接口实现不容许,可是接口继承后类再实现是能够的。
标准MBean就是实现了本身MBean接口的MBean(好拗口)
全部的MBean还能够实现NotificationBroadcaster接口,这个接口能够发布通知给监听者
五,标准MBean
1.接口组成
MBean要被JMX管理,能够动态生成MBean,所以必需要有公开constructor
经过声明getter setter方法来暴露属性,全部以get(无参) set开头的方法被认为是属性的一部分
setter方法不能重载,属性不一致jmx认为是无效的
非set get开头的方法,用来实现某些功能
经过实现NotificationBroadcaster接口发布通知
2.接口实现与类继承问题
I.单继承无接口
PrinterMBean<interface>
⬆️
Printer <class> ⬅️ CopiedPrinter<class>
CopiedPrinter具备PrinterMBean的相关方法和属性
II.继承与接口
PrinterMBean<interface> CopiedPrinterMBean<interface>
⬆️ ⬆️
Printer <class> ⬅️ CopiedPrinter<class>
因为MBean规范规定只能实现一个接口,MBean agent会查找最近的interface,所以CopiedPrinter只有CopiedPrinterMBean接口定义的相关属性和方法
可是接口继承是没有问题的,若是CopiedPrinterMBean继承了PrinterMBean的话,CopiedPrinter就会有这两个接口相关的属性和方法,见III.
III.接口继承
PrinterMBean<interface> ⬅️ CopiedPrinterMBean<interface>
⬆️ ⬆️
Printer <class> ⬅️ CopiedPrinter<class>
CopiedPrinter具备PrinterMBean相关属性和方法,可是这些并非从Printer来的,而是从接口CopiedPrinterMBean接口继承来的
IV.接口继承非MBean接口
Printer<interface> ⬅️ CopiedPrinterMBean<interface>
⬆️
CopiedPrinter<class>
CopiedPrinter行为是由两个接口决定的,CopiedPrinterMBean继承了全部的方法