Мониторинг работы приложения

Следить за работой приложения SMP необходимо для прогнозирования сбоев в работе приложения и уменьшения времени на восстановление работы после сбоя.

Проверка доступности приложения

Проверка доступности приложения выполняется в первую очередь.

В используемую систему мониторинга необходимо добавить периодический вызов ссылки методом check-status (rest api, метод вызова GET, см. check-status. Проверка доступности приложения ).

http(s)://(ссылка на приложение)/sd/services/rest/check-status

Ссылка будет возвращать код ответа 200 при успешном подключении. Подключение считается успешным, если доступен Tomcat и есть соединение с базой данных (при вызове метода приложение создает и сразу удаляет таблицу tbl_sys_system_check).

Чтобы исключить бесконечное ожидание ответа при сбое, в системе мониторинга или на frontend необходимо установить таймаут.

Мониторинг ресурсов сервера

Полезным будет следить за следующими ресурсами сервера:

  • Загрузка процессора в течение выбранного интервала времени, использование оперативной памяти, использование раздела подкачки (swap).
  • Наличие свободного места на диске для сервера приложения (см. Ротация и чистка логов), базы данных и файлового хранилища (если оно настроено).

    Оповещение о заканчивающемся месте на диске, настроенное в используемой системе мониторинга, снижает риск прекращения работы приложения по причине отсутствия свободного места на диске.

  • Мониторинг расхода памяти приложением Java снижает риск замедления работоспособности приложения в связи с постоянной очисткой памяти при ее нехватке и позволяет предотвратить ситуацию, когда приложению будет недостаточно выделенной памяти, и своевременно увеличить ее.

    Расход памяти контролируется через протокол JMX с помощью любого инструмента мониторинга, поддерживающего данный протокол.

    Необходимо наблюдать, чтобы использование памяти в Heap не подходило близко к лимиту использования Heap (Xmx). Так как график использования heap java-приложением имеет пилообразный вид (сборка мусора постоянно очищает память), можно настроить оповещение на ситуацию, когда использование heap превышает определенный процент от максимального лимита (Xmx) в течение некоторого интервала времени.

    В разных системах мониторинга названия переменных и формулы могут отличаться.

    Пример выражения триггера оповещения: HeapMemoryUsage$used > HeapMemoryUsage$max * 9 / 10 в течение 10 минут.

Мониторинг базы данных

Мониторинг базы данных должен включать в себя стандартный набор для конкретной СУБД.

Особое внимание следует обратить на такие параметры как размер базы данных и количество используемых соединений с базой данных.

Контроль количества используемых соединений с базой данных необходим для своевременного выявления нехватки соединений приложения с базой данных. Лимит соединений со стороны приложения настраивается в файле dbaccess.properties (параметр db.max_active_connections), см. База данных.

Мониторинг систем, с которыми интегрировано приложение

В рамках мониторинга системы необходимо также проводить мониторинг систем, с которыми интегрировано приложение.

Обычно это почтовый сервис и LDAP.

Желательно регулярно проверять возможность войти в LDAP под созданной служебной учетной записью приложения.

Мониторинг приложения с использованием технологии JMX

Мониторинг работы приложения осуществляется с использованием технологии JMX, например, при помощи утилит Jconsole или Jvisualvm. Мониторинг помогает диагностировать проблемы с ростом использования памяти, а также вносить изменения в настройку исполняемой среды с помощью технологии mbeans.

Подключение к JMX порту может осуществляться с аутентификацией по логину и паролю (более безопасно) и без аутентификации.

Мониторинг JMX без аутентификации

Настройки мониторинга JMX без аутентификации:

  1. В конфигурационный файл setenv.sh (путь /opt/naumen/nausd4/tomcat/bin/setenv.sh) в инициализацию переменной CATALINA_OPTS добавьте следующие java-опции:

    -Djava.rmi.server.hostname=127.0.0.1
    -Dcom.sun.management.jmxremote.port=8999
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false

    где:

    • -Djava.rmi.server.hostname — IP адрес сервера приложения. Можно указать адрес локального интерфейса или внешний ip-адрес.
    • -Dcom.sun.management.jmxremote.port — порт для мониторинга и управления виртуальной машиной Java с помощью специальных утилит (например, jconsole). Стандартно предлагается использовать порт 8999.
  2. Для вступления новых параметров в силу перезапустите службу Tomcat.

Мониторинг JMX с аутентификацией по логину и паролю

Настройки мониторинга JMX с аутентификацией:

  1. Создайте файлы jmxremote.access и jmxremote.password в каталоге /opt/nausd4/tomcat/conf.

    В файлах укажите пользователей, права доступа и пароли для подключения к виртуальной машине Java по JMX:

    • jmxremote.access — пользователи и права:
    monitorRole readonly
    controlRole readwrite
    • jmxremote.password — пользователи и пароли:
    monitorRole tomcat132pass
    controlRole tomcat132pass

    Доступ к файлу jmxremote.password предоставляется пользователю, от имени которого запускается приложение. Доступ предоставляется командой: chmod 600 /opt/naumen/nausd4/tomcat/conf/jmxremote.password

  2. В конфигурационный файл setenv.sh (путь /opt/naumen/nausd4/tomcat/bin/setenv.sh) в инициализацию переменной CATALINA_OPTS добавьте следующие java-опции:

    -Djava.rmi.server.hostname=127.0.0.1
    -Dcom.sun.management.jmxremote.port=8999
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=true
    -Dcom.sun.management.jmxremote.password.file=/opt/naumen/nausd4/tomcat/conf/jmxremote.password
    -Dcom.sun.management.jmxremote.access.file=/opt/naumen/nausd4/tomcat/conf/jmxremote.access

    где:

    • -Djava.rmi.server.hostname — IP адрес сервера приложения. Можно указать адрес локального интерфейса или внешний ip-адрес.
    • -Dcom.sun.management.jmxremote.port — порт для мониторинга и управления виртуальной машиной Java с помощью специальных утилит (например, jconsole). Стандартно предлагается использовать порт 8999.
    • Dcom.sun.management.jmxremote.password.file — файл, содержащий пароли пользователей.
    • Dcom.sun.management.jmxremote.access.file — файл, содержащий описание пользователей и прав доступа.
  3. Для вступления новых параметров в силу перезапустите службу Tomcat.

Метрики системных очередей через JMX (Prometheus/Zabbix + Grafana)

  • artemis_consumer — количество потребителей;
  • artemis_first_message_age_seconds — общее время существования первого сообщения в очереди;
  • artemis_message — текущее количество сообщений в очереди.

Метки: address — имя адреса, queue — имя очереди.