Пакет 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. Уведомление отправляется, когда наблюдаемый атрибут становится равным и/или не равным заданной строке.
- Since:
- 1.5
- See Also:
| Класс | Описание |
|---|---|
| CounterMonitor | Определяет MBean-монитор, предназначенный для наблюдения за значениями счётчика атрибута. |
| CounterMonitorMBean | Выполняет удалённый интерфейс управления MBean-монитора счётчика. |
| GaugeMonitor | Определяет MBean-монитор, предназначенный для наблюдения за значениями атрибута измерителя. |
| GaugeMonitorMBean | Выполняет удалённый интерфейс управления MBean-монитора измерителя. |
| Monitor | Определяет общую часть всех MBean-мониторов. |
| MonitorMBean | Выполняет удалённый интерфейс управления MBean-мониторами. |
| MonitorNotification | Предоставляет определения уведомлений, отправляемых MBean-мониторами. |
| MonitorSettingException | Исключение, выбрасываемое монитором, когда настройка монитора становится недопустимой во время работы монитора. |
| StringMonitor | Определяет MBean-монитор, предназначенный для наблюдения за значениями строкового атрибута. |
| StringMonitorMBean | Выполняет удалённый интерфейс управления MBean-монитора строки. |
© 1993, 2021, 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/17/docs/api/java.management/javax/management/monitor/package-summary.html