Tomcat JMX
Tomcat JMX
Расширение предназначено для сбора показателей пулов подключений, пулов потоков и обработки веб-запросов Apache Tomcat через JMX.
Идентификатор: ru.ruscomtech.extension.jmx-tomcat-cp
Возможности
Расширение выполняет:
- мониторинг пулов подключений Tomcat;
- сбор статистики веб-запросов и ошибок;
- мониторинг загрузки пулов потоков;
- обнаружение зависших потоков;
- расчёт доступных подключений и текущей загрузки пула;
- создание отдельных сущностей для пулов подключений;
- связывание пулов подключений с процессами Tomcat;
- формирование готовых обзорных панелей.
Требования
Перед настройкой расширения убедитесь, что:
- ЕдиныйАгент установлен на хосте с процессом Tomcat;
- активирована функция
Java Metric Extensions 2.0 (JMX); - после первого включения функции процесс Tomcat перезапущен;
- необходимые MBeans зарегистрированы в домене
Catalina; - для сбора метрик пулов подключений используется стандартная реализация пула подключений Tomcat.
Расширение получает данные непосредственно из контролируемого Java-процесса. Отдельно настраивать удалённый адрес, порт или учётную запись JMX не требуется.
Используемые MBeans
Для пулов подключений используются MBeans:
Catalina:type=DataSource,name=*,class=*,context=*,host=* Catalina:type=DataSource,name=*,class=*
Вторая форма используется для глобальных источников данных, у которых отсутствуют свойства context и host.
Для пулов потоков:
Catalina:type=ThreadPool,name=*,*
Для статистики веб-запросов:
Catalina:type=GlobalRequestProcessor,name=*,*
Для зависших потоков:
Catalina:type=Valve,name=StuckThreadDetectionValve,host=*,*
Метрика зависших потоков доступна только при использовании StuckThreadDetectionValve.
Установка и настройка
- Загрузите пакет расширения в Ключ-АСТРОМ.
- Убедитесь, что на хосте с Tomcat установлен и подключён ЕдиныйАгент.
- В настройках функций ЕдиногоАгента включите
Java Metric Extensions 2.0 (JMX). - Перезапустите процесс Tomcat после первого включения функции.
- Создайте конфигурацию расширения.
- Выберите необходимые наборы метрик.
- Ограничьте область действия конфигурации нужными хостами или группами хостов.
- Сохраните и активируйте конфигурацию.
Наборы метрик
| Набор | Описание |
|---|---|
key-metrics
|
Основные показатели пула: активные, созданные, свободные и ожидающие подключения. |
limits
|
Настроенные ограничения пула подключений. |
additional-metrics
|
Количество полученных, возвращённых, освобождённых и повторно подключённых соединений. |
web-requests
|
Количество запросов, ошибок, переданных данных и время обработки. |
thread-pools
|
Текущее и максимальное количество потоков, а также количество занятых потоков. |
stuck-threads
|
Количество зависших потоков Tomcat. |
Рекомендуется сначала включить наборы key-metrics, web-requests и thread-pools. Остальные наборы можно подключить при необходимости.
Основные метрики
| Группа | Примеры метрик | Описание |
|---|---|---|
| Пулы подключений | tomcat.connectionPool.activeConnectionstomcat.connectionPool.idleConnectionstomcat.connectionPool.numWaiters
|
Активные, свободные и ожидающие подключения. |
| Ограничения пула | tomcat.connectionPool.maxActivetomcat.connectionPool.maxTotaltomcat.connectionPool.maxWait
|
Максимальное количество подключений и время ожидания. |
| Веб-запросы | tomcat.requestCount.counttomcat.errorCount.counttomcat.processingTime.count
|
Количество запросов и ошибок, а также суммарное время обработки. |
| Передача данных | tomcat.bytesReceived.counttomcat.bytesSent.count
|
Количество полученных и отправленных байтов. |
| Пулы потоков | tomcat.threadPool.currentThreadCounttomcat.threadPool.currentThreadsBusytomcat.threadPool.maxThreads
|
Текущее, занятое и максимально допустимое количество потоков. |
| Зависшие потоки | tomcat.stuckThreads
|
Количество потоков, определённых Tomcat как зависшие. |
Расчётные метрики
Расширение содержит дополнительные расчётные показатели:
| Метрика | Описание |
|---|---|
func:tomcat.processingTimePerRequest
|
Среднее время обработки одного запроса. |
func:tomcat.requestCountPerSecond
|
Количество запросов в секунду. |
func:tomcat.errorCountPerSecond
|
Количество ошибок в секунду. |
func:tomcat.bytesReceivedPerSecond
|
Количество полученных байтов в секунду. |
func:tomcat.bytesSentPerSecond
|
Количество отправленных байтов в секунду. |
func:tomcat.threadPool.utilization
|
Процент использования пула потоков. |
func:tomcat.connectionPool.availableConnections
|
Расчётное количество доступных подключений. |
func:tomcat.connectionPool.currentUsage
|
Текущая загрузка пула подключений в процентах. |
Обнаруживаемые сущности
Для каждого обнаруженного пула подключений создаётся сущность Tomcat Connection Pool.
Имя сущности формируется из имени источника данных. Пул подключений автоматически связывается с соответствующим экземпляром процесса Tomcat.
Обзорные панели
В состав расширения входят готовые обзорные панели, содержащие:
- список обнаруженных пулов подключений;
- количество активных и созданных подключений;
- загрузку пулов потоков;
- количество запросов и ошибок;
- среднее время обработки запросов.
Проверка работы
После активации конфигурации убедитесь, что:
- процесс Tomcat отображается в Ключ-АСТРОМ;
- поступают метрики с префиксами
tomcat.connectionPool,tomcat.threadPoolилиtomcat.requestCount; - созданы сущности
Tomcat Connection Pool; - обзорная панель содержит данные контролируемого процесса.
Наличие необходимых MBeans можно проверить с помощью JConsole или другого клиента JMX.
Устранение неисправностей
| Проблема | Возможная причина и решение |
|---|---|
| Метрики Tomcat не поступают | Проверьте, что функция Java Metric Extensions 2.0 (JMX) включена, а процесс Tomcat был перезапущен.
|
| Отсутствуют метрики пула подключений | Проверьте наличие MBeans Catalina:type=DataSource. Другие реализации пулов подключений могут использовать несовместимые MBeans.
|
| Отсутствуют метрики веб-запросов | Проверьте наличие MBeans Catalina:type=GlobalRequestProcessor и включение набора web-requests.
|
| Отсутствуют метрики потоков | Проверьте наличие MBeans Catalina:type=ThreadPool и включение набора thread-pools.
|
| Метрика зависших потоков отсутствует | Убедитесь, что в Tomcat настроен StuckThreadDetectionValve и включён набор stuck-threads.
|
| Сущность пула не создаётся | Проверьте поступление метрики tomcat.connectionPool.activeConnections и наличие измерения name.
|
История изменений
| Версия | Изменения |
|---|---|
| 2.2.3 | Добавлены новые экраны и обзорные панели. |
| 2.2.1 |
|