请参见:
描述
接口摘要 | |
---|---|
CounterMonitorMBean | 公开计数器监视器 MBean 的远程管理接口。 |
GaugeMonitorMBean | 公开尺度监视器 MBean 的远程管理接口。 |
MonitorMBean | 公开监视器 MBean 的远程管理接口。 |
StringMonitorMBean | 公开字符串监视器 MBean 的远程管理接口。 |
类摘要 | |
---|---|
CounterMonitor | 定义专门用来观察计数器属性值的监视器 MBean。 |
GaugeMonitor | 定义专门用来观察尺度属性值的监视器 MBean。 |
Monitor | 定义所有监视器 MBean 的公共部分。 |
MonitorNotification | 提供对监视器 MBean 发送的通知的定义。 |
StringMonitor | 定义设计用于观察字符串属性值的监视器 MBean。 |
异常摘要 | |
---|---|
MonitorSettingException | 当监视器设置在运行监视器期间变得无效时由该监视器抛出的异常。 |
提供 monitor 类的定义。Monitor 是一个 MBeans,它定期观察一个或多个其他 MBeans 中的属性值。如果某个属性满足特定的条件,则 Monitor 将发出一个 MonitorNotification
。当监视器 MBean 定期调用 getAttribute
检索被监视的属性值时,它在 Monitor.start()
调用者的访问控制上下文中执行该操作。
被监视的值可以是一个包含在复合类型中的简单值。例如,java.lang.management 中定义的 MemoryMXBean
具有一个类型为 MemoryUsage
的 HeapMemoryUsage 属性。要监视已用 内存量(由 MemoryUsage 的 used 属性描述),您可以监视 "HeapMemoryUsage.used"。该字符串应该做为 setObservedAttribute
的参数。
用来解释 "HeapMemoryUsage.used" 之类的 ObservedAttribute 的规则如下。假设字符串为 A.e(因此在该例中 A 为 "HeapMemoryUsage",e 为 "used")。
首先获得属性 A 的值。称之为 v。按以下方式从 v 中提取值 x:
CompositeData
且 v.get
(e) 返回一个值,则 x 就是返回的那个值。Introspector.getBeanInfo
包含一个具有名称 e 的 PropertyDescriptor
,则 x 为对 v 调用属性读取方法
的结果。第三个规则意味着,如果属性 HeapMemoryUsage 为 MemoryUsage,则监视 "HeapMemoryUsage.used" 将获得调用 MemoryUsage.getUsed() 观察到的值。
如果 ObservedAttribute 包含一个以上的句号 ("."),例如 "ConnectionPool.connectionStats.length",则迭代地应用上述规则。其中 v 最初是属性 ConnectionPool 的值,x 是在 e 等于 "connectionStats" 的情况下应用上述规则导出的。然后 v 将被设置为此 x,并将在 e 等于 "length" 的情况下导出一个新的 x。
建议使用有效的 Java 标识符作为属性名称,但将属性取名为 HeapMemoryUsage.used 也是可能的。这意味着作为 HeapMemoryUsage.used 的 ObservedAttribute 表示要观察的值可能是该名称的属性,也可能是一个名为 HeapMemoryUsage 的属性内部的属性 used。故出于兼容性原因,当 ObservedAttribute 包含一个句号 (.) 时,监视器将检查是否存在一个名称为完整 ObservedAttribute 字符串(示例中的 HeapMemoryUsage.used)的属性。它实现这一点的方式如下:对被观察的 MBean 调用 getMBeanInfo
,并使用给定名称查询被包含的 MBeanAttributeInfo
。如果能找到,则它就是被监视的内容。如果正观察多个 MBean,且其中一些有 HeapMemoryUsage.used 属性而另一些却没有时,行为是不确定的。在这种情况下,一个实现可能因此只对其中一个 MBean 调用 getMBeanInfo。如果在监视器激活的情况下检查的结果发生更改,则行为也是不确定的。
《JMX 规范》中详细叙述了监视器的具体行为。下面是有关的概述。
共有三种监视器:
CounterMonitor
观察整数类型的属性。假定这些属性为非负数,并且单调递增(以指定的模 进行的可能回滚 除外)。每个 observed 属性都具有相关的阈值。当属性超过其阈值时将发出一个通知。
可以指定一个偏移量 值。当被观察值超过其阈值时,该阈值应按偏移量递增,或者按偏移量的倍数递增,以使其阈值足大于新的被观察值。
CounterMonitor
可以在不同的模式 下操作。在本模式中,与阈值比较所得的值就是对属性的两次连续观察值之间的差分。
GaugeMonitor
观察数字类型的属性。每个被观察属性都具有相关的高阈值 和低阈值。
当 observed 属性超过高阈值时,如果 notify high 标记为 true,则发送一个通知。在尺度值变得小于或等于低阈值之前,后续的超出高阈值的情况不会触发更多的通知。
当 observed 属性低于低阈值时,如果 notify low 标记为 true,则发送一个通知。在尺度值变得小于或等于高阈值之前,后续的超出低阈值的情况不会触发更多的通知。
一般情况下,仅设置 notify high 和 notify low 标志中的一个。使用其他阈值来提供滞后 机制,以避免属性值在阈值附近进行小幅度摆动时重复触发通知。
GaugeMonitor
可以在不同的模式 操作。在本模式中,与高、低阈值相比得出的值就是对属性的两次连续观察值之间的差分。
StringMonitor
观察类型为 String
的属性。当 observed 属性变得等于和/或不等于指定的字符串时,将发出一个通知。