Пакет 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. Далее приведён краткий обзор.
Существует три вида мониторов:
CounterMonitorнаблюдает за атрибутами целочисленного типа. Предполагается, что атрибуты неотрицательны и монотонно возрастают, за исключением возможного переполнения в заданном модуле. Каждый наблюдаемый атрибут имеет связанное значение порога. Уведомление отправляется, когда атрибут превышает свой порог.Можно указать значение смещения. Когда наблюдаемое значение превышает свой порог, порог увеличивается на смещение или на кратное смещению, достаточное для того, чтобы порог стал больше нового наблюдаемого значения.
CounterMonitorможет работать в режиме разности. В этом режиме значение, сравниваемое с порогом, — это разность между двумя последовательными наблюдениями за атрибутом.GaugeMonitorнаблюдает за атрибутами числового типа. Каждый наблюдаемый атрибут имеет связанный верхний порог и нижний порог.Когда наблюдаемый атрибут пересекает верхний порог, если флаг уведомлять о превышении установлен в значение true, отправляется уведомление. Последующие пересечения верхнего порога не будут вызывать дальнейшие уведомления, пока значение датчика не станет меньше или равно нижнему порогу.
Когда наблюдаемый атрибут пересекает нижний порог, если флаг уведомлять о понижении установлен в значение true, отправляется уведомление. Последующие пересечения нижнего порога не будут вызывать дальнейшие уведомления, пока значение датчика не станет больше или равно верхнему порогу.
Как правило, устанавливается только один из флагов уведомления о превышении и уведомления о понижении. Другой порог используется для обеспечения гистерезиса, чтобы избежать повторного срабатывания уведомлений, когда атрибут совершает небольшие колебания вокруг значения порога.
GaugeMonitorможет работать в режиме разности. В этом режиме значение, сравниваемое с верхним и нижним порогами, — это разность между двумя последовательными наблюдениями за атрибутом.StringMonitorнаблюдает за атрибутами типаString. Уведомление отправляется, когда наблюдаемый атрибут становится равным и/или не равным заданной строке.
- С момента:
- 1.5
- См. также:
- Спецификация JMX, версия 1.4
| Интерфейс | Описание |
|---|---|
| CounterMonitorMBean | Предоставляет удалённый интерфейс управления MBean-монитора счётчика. |
| GaugeMonitorMBean | Предоставляет удалённый интерфейс управления MBean-монитора датчика. |
| MonitorMBean | Предоставляет удалённый интерфейс управления MBean-мониторами. |
| StringMonitorMBean | Предоставляет удалённый интерфейс управления MBean-монитора строк. |
| Класс | Описание |
|---|---|
| CounterMonitor | Определяет MBean-монитор, предназначенный для наблюдения за значениями атрибута счётчика. |
| GaugeMonitor | Определяет MBean-монитор, предназначенный для наблюдения за значениями атрибута датчика. |
| Monitor | Определяет общую часть для всех MBean-мониторов. |
| MonitorNotification | Предоставляет определения уведомлений, отправляемых MBean-мониторами. |
| StringMonitor | Определяет MBean-монитор, предназначенный для наблюдения за значениями строкового атрибута. |
| Исключение | Описание |
|---|---|
| MonitorSettingException | Исключение, выбрасываемое монитором, когда параметр монитора становится недопустимым во время работы монитора. |
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.management/javax/management/monitor/package-summary.html