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