包 javax.management.monitor


javax.management.monitor

提供监视器类的定义。 Monitor 是一种 MBean,它定期观察一个或多个其他 MBean 中的属性值。如果该属性满足特定条件,则 Monitor 会发出 MonitorNotification 。当监视器 MBean 定期调用 getAttribute 以检索被监视属性的值时,它会在 Monitor.start() 调用者的访问控制上下文中执行此操作。

被监视的值可以是包含在复杂类型中的简单值。例如,java.lang.management 中定义的 MemoryMXBean 具有类型为 MemoryUsage 的属性 HeapMemoryUsage。监控数量用过的内存,由 MemoryUsageused 属性描述,您可以监控“HeapMemoryUsage.used”。该字符串将是 setObservedAttribute 的参数。

用于解释 ObservedAttribute like "HeapMemoryUsage.used" 的规则如下。假设字符串是A.e(所以A将是 "HeapMemoryUsage"e在示例中为 "used")。

首先是属性值A获得。叫它v.一个值x提取自v如下:

  • 如果vCompositeData 并且如果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 。这意味着 ObservedAttributeHeapMemoryUsage.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 thresholdlow threshold

    当观察到的属性超过高阈值时,如果 notify high 标志为真,则会发送通知。随后超过高阈值将不会触发进一步的通知,直到仪表值变得小于或等于低阈值。

    当观察到的属性超过低阈值时,如果 notify low 标志为真,则会发送通知。在仪表值变得大于或等于高阈值之前,随后越过低阈值将不会触发进一步的通知。

    通常,仅设置通知高标志和通知低标志之一。另一个阈值用于提供 hysteresis 机制,以避免在属性在阈值附近进行小幅振荡时重复触发通知。

    GaugeMonitor 可以在 difference mode 中运行。在这种模式下,与高阈值和低阈值进行比较的值是属性的两次连续观察之间的差异。

  • StringMonitor 观察类型 String 的属性。当观察到的属性等于和/或不等于给定字符串时,将发送通知。

自从:
1.5
参见:
  • 描述
    定义一个监视器 MBean,旨在观察计数器属性的值。
    公开计数器监视器 MBean 的远程管理接口。
    定义一个监视器 MBean,旨在观察仪表属性的值。
    公开仪表监视器 MBean 的远程管理接口。
    定义所有监视器 MBean 共有的部分。
    公开监视器 MBean 的远程管理接口。
    提供由监视器 MBean 发送的通知的定义。
    监视器运行时监视器设置无效时监视器抛出的异常。
    定义一个监视器 MBean,旨在观察字符串属性的值。
    公开字符串监视器 MBean 的远程管理接口。