actuator

Spring Actuator — для чего и как пользоваться

Сегодня поговорим о такой фиче спринга как Spring Actuator. Наверняка многие, кто изучает данный фреймворк столкнулись с этой библиотекой. А если это не так — то столкнетесь в будущем.

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

Для тех, кто ничего не понял даю следующий пример. Допустим есть приложение интернет-магазин. Оно написано на java с использованием spring boot. В какой то момент времени Вы решаете, что было бы удобно увидеть количество пользователей на сайте, посмотреть нагрузку на базу данных, на ресурсы сервера. Возможно Вам нужно увидеть логи приложения, а лезть на сервер очень не хочется.

Было бы очень удобно просто перейти по какому нибудь урлу в браузере и просто увидеть цифры не так ли? Spring Boot Actuator это и предоставляет. Причем от Вас как от разработчика нужно только подключить библиотеку до приложения, подключить ендпоинты и наслаждаться результатом.

Довольно слов — давайте посмотрим на практике.

Возьмем простое Spring Boot веб приложение. Можете посмотреть тут. Теперь добавим к нему зависимости для актуатора:

Код    
  1. <dependency>
  2.             <groupId>org.springframework.boot</groupId>
  3.             <artifactId>spring-boot-starter-web</artifactId>
  4.         </dependency>

 

Готово! Теперь в нашем приложении по умолчании будет доступно 3 эндпоинта:

  • /actuator
  • /actuator/health
  • /actuator/info

Первый эндпоинт показывает пользователю все доступные сервисы актуатора. Вот, что у меня показало при переходе по адресу http://localhost:8080/actuator:

Код    
  1. {"_links":{"self":{"href":"http://localhost:8080/actuator","templated":false},"health":{"href":"http://localhost:8080/actuator/health","templated":false},"info":{"href":"http://localhost:8080/actuator/info","templated":false}}}

 

Если я перейду по http://localhost:8080/actuator/health то увижу там статус своего приложения. Когда оно запущено и все в порядке, то показывает:

Код    
  1. {"status":"UP"}

 

Ссылка которая ведет по адресу http://localhost:8080/actuator/info показывает информацию по вашему приложению. Эту информацию она берет из файла pom.xml. Если в данном файле Вы указали версию приложению или другие свойства — вы их увидите по данному адресу.

Это не все, чтобы активировать другие эндпоинты Spring Actuator необходимо указать их в файле настроек спринг бут приложения: application.properties.

Я активирую все сервисы, чтобы не выбирать по одному. Для этого в application.properties нужно добавить строку:

Код    
  1. management.endpoints.web.exposure.include=*

Этого достаточно. Теперь, когда Вы попробуете перейти по адресу http://localhost:8080/actuator то увидите намного больше полезных ссылок:

spring actuator

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

Переходим по адресу http://localhost:8080/actuator/metrics/ и видим набор данных:

метрика приложения

Далее осталось выбрать интересующийся нас параметр и добавить его к общему пути. Например tomcat.sessions.created. Данный параметр покажет Вам сколько сессий было создано:

количество сессий томката

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

tomcat sessions count

Как видно на рисунке выше — количество сессий изменилось на 1. Вот и вся суть Spring Boot Actuator.

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

Теперь Вы сможете владеть еще одним инструментом фреймворка Spring и пополнить свою базу знаний новыми технологиями.

Я записал пошаговое видео. В нем используется Spring Security, чтобы запаролить урлы, но пока на это можно не обращать внимания.

Добавить комментарий