Пакет javax.management.monitor
Предоставляет определения классов мониторов.
См.: Описание
| Интерфейс | Описание |
|---|---|
| CounterMonitorMBean | Выявляет удаленный интерфейс управления монитором счетчика MBean. |
| GaugeMonitorMBean | Выявляет удаленный интерфейс управления монитором индикатора MBean. |
| MonitorMBean | Выявляет удаленный интерфейс управления мониторами MBean. |
| StringMonitorMBean | Выявляет удаленный интерфейс управления монитором строки MBean. |
| Класс | Описание |
|---|---|
| CounterMonitor | Определяет MBean монитора, предназначенного для наблюдения за значениями атрибута счётчика. |
| GaugeMonitor | Определяет MBean монитора, предназначенного для наблюдения за значениями атрибута индикатора. |
| Monitor | Определяет общую часть всех MBean мониторов. |
| MonitorNotification | Предоставляет определения уведомлений, отправляемых MBean мониторами. |
| StringMonitor | Определяет MBean монитора, предназначенного для наблюдения за значениями атрибута строки. |
| Исключение | Описание |
|---|---|
| MonitorSettingException | Исключение, выбрасываемое монитором, когда настройка монитора становится недействительной во время работы монитора. |
Описание пакета javax.management.monitor
Предоставляет определения классов мониторов. Монитор — это MBean, который периодически наблюдает за значением атрибута в одном или нескольких других MBean. Если атрибут удовлетворяет определенному условию, монитор отправляет MonitorNotification. Когда MBean монитора периодически вызывает getAttribute для получения значения контролируемого атрибута, он делает это в контексте контроля доступа вызывающего Monitor.start().
Контролируемое значение может быть простым значением, содержащимся в сложном типе. Например, MemoryMXBean, определённый в java.lang.management, имеет атрибут HeapMemoryUsage типа MemoryUsage. Чтобы отследить объём используемой памяти, описанный свойством used объекта MemoryUsage, можно отслеживать "HeapMemoryUsage.used". Эта строка будет аргументом для setObservedAttribute.
Правила интерпретации ObservedAttribute подобного "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 может означать, что наблюдаемое значение — это либо атрибут с таким именем, либо свойство used внутри атрибута, названного HeapMemoryUsage. Таким образом, по соображениям совместимости, когда ObservedAttribute содержит точку (.), монитор проверяет, существует ли атрибут с именем всей строки ObservedAttribute (HeapMemoryUsage.used в примере). Он делает это, вызывая getMBeanInfo для наблюдаемого MBean и ища содержащийся MBeanAttributeInfo с заданным именем. Если он найден, то он и отслеживается. Если наблюдается более одного MBean, поведение не определено, если у некоторых из них есть атрибут HeapMemoryUsage.used, а у других нет. В этом случае реализация может вызвать getMBeanInfo только для одного из MBean. Поведение также не определено, если результат проверки изменяется во время работы монитора.
Точное поведение мониторов подробно описано в Спецификации JMX. Ниже приведён свод.
Существует три типа мониторов:
-
A
CounterMonitorнаблюдает за атрибутами целочисленного типа. Атрибуты предполагаются неотрицательными и монотонно возрастающими, за исключением возможного переполнения в определённом модуле. Каждый наблюдаемый атрибут имеет связанное пороговое значение. Уведомление отправляется, когда атрибут превышает свой порог.Можно указать смещение. Когда наблюдаемое значение превышает свой порог, порог увеличивается на смещение или на кратное смещению, достаточное для того, чтобы порог стал больше нового наблюдаемого значения.
CounterMonitorможет работать в режиме разности. В этом режиме значение, сравниваемое с порогом, — это разница между двумя последовательными наблюдениями за атрибутом. -
A
GaugeMonitorнаблюдает за атрибутами числового типа. Каждый наблюдаемый атрибут имеет связанный верхний порог и нижний порог.Когда наблюдаемый атрибут пересекает верхний порог, если флаг уведомления о превышении true, то отправляется уведомление. Последующие пересечения верхнего порога не будут вызывать дальнейших уведомлений, пока значение датчика не станет меньше или равно нижнему порогу.
Когда наблюдаемый атрибут пересекает нижний порог, если флаг уведомления о снижении true, то отправляется уведомление. Последующие пересечения нижнего порога не будут вызывать дальнейших уведомлений, пока значение датчика не станет больше или равно верхнему порогу.
Обычно устанавливается только один из флагов уведомления о превышении и уведомления о снижении. Другой порог используется для создания механизма гистерезиса, чтобы избежать многократного отправления уведомлений, когда атрибут совершает небольшие колебания вокруг порогового значения.
GaugeMonitorможет работать в режиме разности. В этом режиме значение, сравниваемое с верхним и нижним порогами, — это разница между двумя последовательными наблюдениями за атрибутом. -
A
StringMonitorнаблюдает за атрибутами типаString. Уведомление отправляется, когда наблюдаемый атрибут становится равным и/или неравным заданной строке.
- С момента:
- 1.5
- См. также:
- Документация Java по технологии JMX, в частности Спецификацию JMX версии 1.4 (pdf).
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.