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

monitoring

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

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


Метрики приложения

Метрика — это количественный показатель какого-либо аспекта работы приложения, изменяющийся во времени. В качестве примера рассмотрим несколько стандартных метрик Java приложения, использующего для создания метрик Spring Boot Actuator и Micrometer.

Название метрики Описание
http_server_requests_seconds_count Количество запросов, полученных сервером
process_uptime_seconds Количество секунд, прошедших с момента запуска приложения
logback_events_total Количество залогированных событий

Метрики выставляются на эндпоинт, например /actuator/prometheus, по которому их можно будет забрать для дальнейшей обработки. На HTTP запрос с методом GET приложение вернёт свои метрики в формате:


                                        http_server_requests_seconds_count{error="none",method="GET",outcome="SUCCESS",status="200",uri="/monitoring",} 2.0

                                        http_server_requests_seconds_count{error="none",method="POST",outcome="SUCCESS",status="200",uri="/login",} 10.0


                                        process_uptime_seconds 109122.326


                                        logback_events_total{level="warn",} 0.0

                                        logback_events_total{level="debug",} 0.0

                                        logback_events_total{level="error",} 0.0

                                        logback_events_total{level="trace",} 0.0

                                        logback_events_total{level="info",} 150.0

Сбор метрик при помощи Prometheus

Самый популярный инструмент для сбора метрик с приложений, написанных на Java — это Prometheus. Помимо сбора метрик, при помощи Prometheus можно настроить алертинг — оповещение о важных событиях, например, путём отправки электронного письма с информацией о событии администратору.


Отображение метрик в Grafana

Далее метрики могут быть отправлены в инструмент для визуализации данных — Grafana, в котором на основании метрик можно строить графики и диаграммы, создавая таким образом дашборды — панели с компактным и наглядным представлением метрик. Помимо этого, как и Prometheus, Grafana позволяет настраивать алертинги.

grafana-dashboard

Пример дашборда, созданного в Grafana


Задача

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

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

Такое поведение может говорить об утечке памяти — ошибках приложения при управлении, потреблении и освобождении, выделенной ему памяти.

grafana-memory-leak