包 javax.management.monitor
提供监视器类的定义。 Monitor 是一种 MBean,它定期观察一个或多个其他 MBean 中的属性值。如果该属性满足特定条件,则 Monitor 会发出 MonitorNotification
。当监视器 MBean 定期调用 getAttribute
以检索被监视属性的值时,它会在 Monitor.start()
调用者的访问控制上下文中执行此操作。
被监视的值可以是包含在复杂类型中的简单值。例如,java.lang.management
中定义的 MemoryMXBean
具有类型为 MemoryUsage
的属性 HeapMemoryUsage
。监控数量用过的内存,由 MemoryUsage
的 used
属性描述,您可以监控“HeapMemoryUsage.used
”。该字符串将是 setObservedAttribute
的参数。
用于解释 ObservedAttribute
like "HeapMemoryUsage.used"
的规则如下。假设字符串是A.e(所以A将是 "HeapMemoryUsage"
和e在示例中为 "used"
)。
首先是属性值A获得。叫它v.一个值x提取自v如下:
- 如果v是
CompositeData
并且如果v.get
(e) 然后返回一个值x是那个值。 - 如果v是一个数组并且e是字符串
"length"
那么x是数组的长度。 - 如果上面的规则没有产生值,如果自省,就好像通过调用
Introspector.getBeanInfo
,对于类v (v.getClass()
) 标识具有名称的属性e, 然后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
可能意味着要观察的值是该名称的属性,或者是名为 HeapMemoryUsage
的属性中的属性 used
。因此,出于兼容性原因,当 ObservedAttribute
包含句点 (.
) 时,监视器将检查是否存在名称为完整 ObservedAttribute
字符串(示例中的 HeapMemoryUsage.used
)的属性。它通过为观察到的 MBean 调用 getMBeanInfo
并查找具有给定名称的包含的 MBeanAttributeInfo
来实现这一点。如果找到一个,那就是被监控的对象。如果观察到多个 MBean,并且其中一些具有 HeapMemoryUsage.used
属性而其他则没有,则行为未指定。因此,在这种情况下,实现可能只在其中一个 MBean 上调用 getMBeanInfo
。如果在监视器处于活动状态时检查结果发生变化,则行为也未指定。
监视器的确切行为在 JMX规范 中有详细说明。以下是一个总结。
监视器分为三种:
A
CounterMonitor
观察整数类型的属性。假设属性是非负的,并且单调递增,除了可能的 roll-over 在指定的 modulus 。每个观察到的属性都有一个关联的threshold值。当属性超过其阈值时发送通知。可以指定 offset 值。当观察值超过其阈值时,阈值将增加偏移量,或增加足以使阈值大于新观察值的偏移量的倍数。
CounterMonitor
可以在 difference mode 中运行。在这种模式下,与阈值比较的值是属性的两次连续观察之间的差异。A
GaugeMonitor
观察数值类型的属性。每个观察到的属性都有一个关联的 high threshold 和 low threshold 。当观察到的属性超过高阈值时,如果 notify high 标志为真,则会发送通知。随后超过高阈值将不会触发进一步的通知,直到仪表值变得小于或等于低阈值。
当观察到的属性超过低阈值时,如果 notify low 标志为真,则会发送通知。在仪表值变得大于或等于高阈值之前,随后越过低阈值将不会触发进一步的通知。
通常,仅设置通知高标志和通知低标志之一。另一个阈值用于提供 hysteresis 机制,以避免在属性在阈值附近进行小幅振荡时重复触发通知。
GaugeMonitor
可以在 difference mode 中运行。在这种模式下,与高阈值和低阈值进行比较的值是属性的两次连续观察之间的差异。StringMonitor
观察类型String
的属性。当观察到的属性等于和/或不等于给定字符串时,将发送通知。
- 自从:
- 1.5
- 参见:
-
类描述定义一个监视器 MBean,旨在观察计数器属性的值。公开计数器监视器 MBean 的远程管理接口。定义一个监视器 MBean,旨在观察仪表属性的值。公开仪表监视器 MBean 的远程管理接口。定义所有监视器 MBean 共有的部分。公开监视器 MBean 的远程管理接口。提供由监视器 MBean 发送的通知的定义。监视器运行时监视器设置无效时监视器抛出的异常。定义一个监视器 MBean,旨在观察字符串属性的值。公开字符串监视器 MBean 的远程管理接口。