JMX-мониторинг
Мониторинг JMX можно использовать для мониторинга счетчиков JMX в Java-приложениях.
Когда Серверу нужно определить значение конкретного счетчика JMX у узла сети, он опрашивает Java gateway, который, в свою очередь, используя API- управление JMX, удаленно опрашивает интересующее приложение.
Подключения между Java gateway и наблюдаемым JMX-приложением не должны быть закрыты брандмауэром.
Включение удаленного JMX-мониторинга для Java-приложений
Приложению Java не требуется какое-либо дополнительно установленное ПО, но для поддержки удаленного мониторинга JMX-приложение необходимо запустить с указанными ниже параметрами командной строки.
Если требуется просто начать мониторинг приложения Java на локальном хосте без какой-либо защиты, его запускают со следующими опциями:
java \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.registry.ssl=false \
-jar /usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar
С этими аргументами Java будет слушать входящие соединения JMX на порту 12345 только с локального хоста без необходимости в аутентификации или SSL.
Если нужно разрешить подключения с другого интерфейса, параметр "-Djava.rmi.server.Hostname" указывают равным IP-адресу этого интерфейса.
Если необходима более строгая проверка в плане безопасности, имеется много других доступных опций в Java. Следующий пример запускает приложение с более разносторонним набором опций и открывает это приложение для более широкой сети, а не только для локального компьютера:
java \
-Djava.rmi.server.Hostname=192.168.3.14 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=/etc/java-6-openjdk/management/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/etc/java-6-openjdk/management/jmxremote.access \
-Dcom.sun.management.jmxremote.ssl=true \
-Dcom.sun.management.jmxremote.registry.ssl=true \
-Djavax.net.ssl.keyStore=$ВАШЕ_ХРАНИЛИЩЕ_КЛЮЧЕЙ \
-Djavax.net.ssl.keyStorePassword=$ВАШ_ПАРОЛЬ_К_ХРАНИЛИЩУ_КЛЮЧЕЙ \
-Djavax.net.ssl.trustStore=$ВАШЕ_ДОВЕРЕННОЕ_ХРАНИЛИЩЕ \
-Djavax.net.ssl.trustStorePassword=$ВАШ_ПАРОЛЬ_К_ДОВЕРЕННОМУ_ХРАНИЛИЩУ \
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true \
-jar /usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar
Значительное количество этих настроек можно указать в /etc/java-6-openjdk/management/management.properties (или в месте расположения файла на компьютере).
Следует обратить внимание, что, если требуется использовать SSL, нужно изменить скрипт Startup.sh Java gateway, добавив в него опции "-Djavax.net.ssl.*" для обнаружения хранилища ключей и доверенного хранилища.
Настройка JMX-интерфейсов и элементов данных в веб-интерфейсе
Когда Java Gateway запущен, Сервер его определяет, и Java-приложение запущено с поддержкой удаленного JMX-мониторинга, настраивают интерфейсы и элементы данных в веб-интерфейсе Подсистемы.
Начинают с создания интерфейса JMX-типа у требуемого узла сети (рисунок 8).

Рисунок 8 — Настройка JMX-интерфейса
Для каждого требуемого счетчика JMX необходимо добавить элемент данных с типом "JMX Агент", присоединенный к этому интерфейсу.
Ключ на рисунке 9 имеет следующий вид: jmx"java.lang:type=Memory","HeapMemoryUsage.used".

Рисунок 9 — Добавление элемента данных
Поля, требующие специфичной информации для JMX-элементов данных, приведены в таблице 82.
Если нужно наблюдать за логическим счетчиком, который может быть true или false, следует указать тип информации "Числовой (целое положительное)" и добавить шаг предварительной обработки "Логический в десятичный" на вкладке Предобработка. Сервер будет сохранять логические значения как 1 или 0 соответственно.
Детальная информация о ключах JMX-элементов данных
Имя объекта MBean – это строка, которую определили в Java-приложении. Имя параметра, с другой стороны, может быть более сложным. В случае если параметр возвращает простой тип данных (число, строку и т.п.), ключ будет выглядеть примерно так:
jmx[com.example:Type=Hello,weight]
В этом примере именем объекта является "com.example:Type=Hello", именем параметра будет "weight" и, скорее всего, тип возвращаемого значения должен быть "Числовой (с плавающей точкой)".
Ключ становится все более сложным, если параметр возвращает составные данные. Например, если именем параметра является "apple", и он возвращает хеш представляющих его параметров, таких как "weight", "color" и прочее, то ключ может выглядеть примерно так:
jmx[com.example:Type=Hello,apple.weight]
Этот пример показывает, как разделяются с помощью точки имя параметра и ключ хеша. Также, если параметр возвращает вложенные составные данных, их части снова нужно разделять точкой:
jmx[com.example:Type=Hello,fruits.apple.weight]
Параметры с табличными данными состоят из одного или нескольких составных параметров. Если такой параметр указан в параметре имени параметра, то значение этого элемента данных вернет всю структуру параметра в JSON-формате. Значения отдельных элементов из табличных данных можно извлечь с использованием предварительной обработки.
Пример параметра с табличными данными:
jmx[com.example:type=Hello,foodinfo]
Значение элемента данных:
[
{
"a": "apple",
"b": "banana",
"c": "cherry"
},
{
"a": "potato",
"b": "lettuce",
"c": "onion"
}
]
Если имя параметра или ключ хеша содержит символ точки, например:
jmx[com.example:Type=Hello,all.fruits.apple.weight]
это является проблемой. В данном случае требуется экранировать точки, которые являются частью имени, обратной косой чертой:
jmx[com.example:Type=Hello,all\.fruits.apple.weight]
Аналогично, если ключ хеша содержит точку, необходимо ее экранировать:
jmx[com.example:Type=Hello,all\.fruits.apple.total\.weight]
Символ обратной косой черты также необходимо экранировать:
jmx[com.example:type=Hello,c:\\documents]
Имеется возможность работы с пользовательскими MBean, которые возвращают не примитивные типы данных, которые переопределяют метод toString().
ODBC-мониторинг соответствует типу элемента данных "Монитор баз данных" в веб-интерфейсе Подсистемы.
ODBC – это API на языке программирования C к промежуточной прослойке для доступа к системам управления базами данных (DBMS).
Подсистема может выполнять запросы к любой БД, которая поддерживается ODBC. Чтобы это сделать, Подсистема не подключается напрямую к БД, а использует интерфейс ODBC и драйверы, установленные в ODBC. Эта функция позволяет с большей эффективностью мониторить различные БД с разнообразными целями, например: проверка специфичных запросов к базе данных, статистика использования и прочее. Подсистема поддерживает unixODBC, которая является одной из наиболее часто используемых реализаций API ODBC с открытым исходным кодом.