Package javax.management.monitor
提供监视器类的定义。 Monitor是一个MBean,它定期观察一个或多个其他MBean中属性的值。 如果属性满足特定条件,则监视器将发出MonitorNotification
。 当监视器MBean定期调用getAttribute
以检索被监视属性的值时,它在Monitor.start()
调用者的访问控制上下文中这样做 。
被监视的值可以是复杂类型中包含的简单值。 例如, MemoryMXBean
中定义java.lang.management
具有属性HeapMemoryUsage
类型的MemoryUsage
。 要监视used
字段MemoryUsage
所描述的已用内存量,您可以监视“ HeapMemoryUsage.used
”。 该字符串将是setObservedAttribute
的参数。
用于解释ObservedAttribute
的规则如"HeapMemoryUsage.used"
如下。 假设字符串是Ae (因此A将是"HeapMemoryUsage"
并且在该示例中e将是"used"
)。
首先,获得属性A的值。 叫它v 。 从v中提取值x ,如下所示:
- 如果v是
CompositeData
并且如果v 。get
( e )返回一个值,然后x就是该值。 - 如果v是数组而e是字符串
"length"
那么x是数组的长度。 - 如果上述规则不产生一个值,并且如果自省,仿佛通过调用
Introspector.getBeanInfo
,为类诉 ( 诉getClass()
)识别与该名字的属性,则x是读取属性值的结果。
第三规则意味着例如如果属性HeapMemoryUsage
是MemoryUsage
,则监视"HeapMemoryUsage.used"
将通过调用MemoryUsage.getUsed()
来获得观察值。
如果ObservedAttribute
包含多个周期,例如"ConnectionPool.connectionStats.length"
,则迭代地应用上述规则。 这里, v最初将是属性ConnectionPool
的值,并且x将通过应用上述规则而得到,其中e等于"connectionStats"
。 然后将v设置为此x,并通过再次应用规则得到的新x ,其中e等于"length"
。
虽然建议属性名称是有效的Java标识符,但可以调用属性HeapMemoryUsage.used
。 这意味着ObservedAttribute
这是HeapMemoryUsage.used
可能意味着观察值是该名称的属性,或者属性used
称为属性内HeapMemoryUsage
。 因此,出于兼容性原因,当ObservedAttribute
包含句点( .
)时,监视器将检查是否存在名称为完整ObservedAttribute
字符串的属性( HeapMemoryUsage.used
中为HeapMemoryUsage.used
)。 它通过为观察到的MBean调用getMBeanInfo
并查找具有给定名称的包含MBeanAttributeInfo
来完成此操作。 如果找到一个,那么这就是被监控的。 如果正在观察多个MBean,则如果某些MBean具有HeapMemoryUsage.used
属性而其他MBean不具有该属性, HeapMemoryUsage.used
指定该行为。 因此,在这种情况下,实现可以仅对其中一个MBean调用getMBeanInfo
。 如果在监视器处于活动状态时检查结果发生更改,则行为也未指定。
监视器的确切行为详见JMX Specification 。 以下是摘要。
有三种监视器:
A
CounterMonitor
观察整数类型的属性。 假设属性是非负的,并且除了在指定模数下可能的翻转之外单调增加。 每个观察到的属性都具有相关的阈值。 当属性超过其阈值时,将发送通知。可以指定偏移值。 当观测值超过其阈值时,阈值增加偏移量,或者增加偏移量的倍数以使阈值大于新的观测值。
CounterMonitor
可以以差分模式操作 。 在此模式中,与阈值进行比较的值是属性的两个连续观察值之间的差异。GaugeMonitor
观察数值类型的属性。 每个观察到的属性都具有相关的高阈值和低阈值 。当观察到的属性超过高阈值时,如果通知高标志为真,则发送通知。 在测量值变得小于或等于低阈值之前,高阈值的后续交叉将不会触发进一步的通知。
当观察到的属性超过低阈值时,如果notify low标志为真,则发送通知。 低阈值的后续交叉将不会触发进一步的通知,直到仪表值变得大于或等于高阈值。
通常,只设置通知高和通知低标志中的一个。 另一个阈值用于提供滞后机制,以避免当属性在阈值附近产生小振荡时重复触发通知。
GaugeMonitor
可以以差分模式操作 。 在此模式中,与高阈值和低阈值进行比较的值是属性的两个连续观察值之间的差异。A
StringMonitor
观察类型String
属性。 当观察到的属性变得相等和/或不等于给定字符串时,发送通知。
- 从以下版本开始:
- 1.5
- 另请参见:
- JMX Specification, version 1.4
-
接口摘要 接口 描述 CounterMonitorMBean 公开计数器监视器MBean的远程管理接口。GaugeMonitorMBean 公开仪表监视器MBean的远程管理界面。MonitorMBean 公开监视器MBean的远程管理界面。StringMonitorMBean 公开字符串监视器MBean的远程管理接口。 -
类摘要 类 描述 CounterMonitor 定义用于观察计数器属性值的监视器MBean。GaugeMonitor 定义用于观察gauge属性值的监视器MBean。Monitor 定义所有监视器MBean共有的部分。MonitorNotification 提供监视器MBean发送的通知的定义。StringMonitor 定义用于观察字符串属性值的监视器MBean。 -
异常摘要 异常 描述 MonitorSettingException 监视器设置在监视器运行时变为无效时监视器抛出异常。