13 подписчиков

13 Вопросов для интервью по Spring Boot Actuator

Перевод статьи https://www.java67.com/2021/02/spring-boot-actuator-interview-questions-answers-java.html

Если вы использовали Spring Boot, вы, возможно, знаете, что Spring Boot - это удобство, и Spring Boot Actuator - одна из таких функций, которая обеспечивает удобный способ взаимодействия с вашим приложением с использованием HTTP и JMX. Это также важно с точки зрения интервью по Spring Boot. В этой статье мы рассмотрим некоторые популярные вопросы для интервью с Spring boot Actuator и, попутно, узнаем больше об этой полезной функции Spring boot.

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

Когда вы добавляете зависимость spring-boot-starter-actuator maven в classpath, вам сразу становится доступно несколько конечных точек. Вот что я имею в виду, когда говорю, что Spring boot - это все о производительности и удобстве разработчика. Вы просто добавляете стартовую зависимость в свой файл сборки Maven или Gradle, и все автоматически настраивается для вас.

Теперь давайте рассмотрим некоторые распространенные вопросы с собеседований касательно Spring Boot Actuator, которые также полезны для сертификации spring professional. Они взяты из официального руководства по экзаменам для сертификации.

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

Во многих интервью по spring boot интервьюер просто спросит о том, что такое Actuator, как он работает, и о некоторых стандартных конечных точках, которые часто используются. Тем не менее, если вы готовитесь к профессиональной сертификации, вам необходимо глубоко изучить эту тему.

Например, недостаточно знать, как взаимодействовать с приложением spring boot; вы также должны знать, как включать / отключать некоторые конечные точки. Вы должны быть в состоянии создать свой собственный индикаторы и показатели.

Хотя это не подробный пост о том, как делать эти вещи в Spring boot, в нем есть несколько вопросов по этим темам, которые побудят вас узнать о них больше. Если вам нужен ресурс, я настоятельно рекомендую этот курс по Spring Boot Actuator от Udemy.

1. Для чего нужен Spring Boot Actuator?
Actuator позволяет вам контролировать ваше приложение и взаимодействовать с ним, что очень важно для работающего приложения. Без него вам необходимо создать свою собственную систему мониторинга и взаимодействия с использованием JMX. Actuator обеспечивает это "из коробки". Теперь вы можете динамически изменять уровень журнала и выполнять такую операцию без перезапуска вашего приложения.


2. Какие два протокола вы можете использовать для доступа к конечным точкам?
Spring Boot позволяет вам получить доступ к конечным точкам, используя как HTTP, так и JMX. Вы также можете защитить конечные точки с помощью Spring Security, и в этом случае используется стратегия согласования Spring Security. Вы также можете использовать SSH.

архитектура приложения Spring Boot
архитектура приложения Spring Boot

3. Какие конечные точки есть "из коробки"?
По умолчанию он предоставляет множество конечных точек, как чувствительных, так и нечувствительных, но он также позволяет отключить чувствительные конечные точки, настроив их в файле
application.properties. В любом случае, вот некоторые из конечных точек, которые поставляются "из коробки":

  • /Actuator - предоставляет страницу обнаружения на основе гипермедиа для всех других конечных точек
  • /autoconfig - отображает отчет об автоматической настройке в двух группах: положительные совпадения и отрицательные совпадения.
  • /beans - отображает все компоненты spring, используемые в приложении
  • /configprops - перечисляет все свойства конфигурации, определенные компонентами @ConfigurationProperties.
  • /docs - документация для всех конечных точек модуля Actuator требует зависимости spring-boot-actuator-docs в pom.xml
  • /dump - чтобы получить дамп потока приложения.
  • /env - предоставляет все свойства из интерфейса ConfigurableEnvironment.
  • /flyway - предоставляет всю информацию о сценариях миграции базы данных; если она основан на Flyway.
  • /health - показывает статус работоспособности приложения.
  • /info - отображает общедоступную информацию о приложении.
  • /logfile - показывает содержимое файла журнала, указанного в свойстве logging.file
  • /metrics - Различные показатели приложения.
  • /caches - отображает доступные кеши.

4. Для чего нужны конечные точки? Как предоставляются данные?
Spring Boot Actuator предоставляет конечную точку
/info, которая может предоставлять информацию о вашем приложении; самое лучшее в этом то, что вы можете настроить его в соответствии с потребностями вашего приложения. Вы можете добавить пользовательскую информацию о своем приложении в файл application.properties, используя info.app.*

5. Как изменить уровень ведения журнала, используя конечную точку логгера?
Spring Boot позволяет просматривать и изменять уровень ведения журнала приложения во время выполнения, используя конечную точку логгера, вида
http://localhost:8080/actuator/loggers. Вы можете подключиться к этой точке, чтобы увидеть все уровни ведения журнала, предоставляемые платформой, а затем проверить конкретный регистратор, такой как root logger. Вот пример того, как его настроить:

## Configuring info endpoint

info.app.name= My Spring Boot Application
info.app.description=This is my first spring boot application info.app.version=1.0.0


Spring автоматически добавит все свойства с префиксом info к информации в точке
/info

endpoint:{
"app": {
"description": "This is my first spring boot application",
"version": "1.0.0",
"name": "My Spring Boot Application" }
}


И, если вы хотите узнать больше о создании приложения Spring Boot с нуля, я настоятельно рекомендую вам ознакомиться с этим курсом Spring Framework 5: от новичка к гуру на Udemy. Это полный курс для изучения как Spring 5, так и Spring Boot 2..

Если вы хотите узнать больше о метриках в spring boot, я также рекомендую вам ознакомиться с курсом Spring Framework: Spring Boot Actuator от Dustin Schultz на Pluralsight.

Кстати, начиная с Spring Boot 2.x, большинство конечных точек по умолчанию выключены, поэтому вам нужно будет включить конечную точку
/loggers в нашем файле application.properties, как показано ниже:

management.endpoints.web.exposure.include=loggers
management.endpoint.loggers.enabled=true


После включения вы можете изменить уровень ведения журнала для конкретного пакета, используя HTTP POST-запрос, подобный этому:

$ curl -i -X POST
-H 'Content-Type: application/json'
-d '{"configuredLevel": "DEBUG"}' http://localhost:8080/actuator/loggers/com.javarevisited.app.management.logging


6. Как получить доступ к конечной точке с помощью тегов?
тег - это полезная вещь для фильтрации метрик, и вы определенно должны использовать его для извлечения значимой информации. Вы можете добавить любое количество параметров запроса
tag=KEY:VALUE в конец URL-адреса, чтобы отфильтровать любую метрическую информацию.

Например, ваше приложение получило 100 тысяч запросов, но вас интересуют только запросы, которые приводят к ошибкам, таким как статус ответа HTTP 404 или HTTP 500. Вы можете получить эту информацию, используя тег статуса, как показано ниже:

$ curl localhost:8081/actuator/metrics/http.server.requests?tag=status:404


7. Для чего нужны метрики?
Эта конечная точка Spring Boot показывает информацию о показателях вашего приложения, где вы можете понять, сколько памяти оно использует, сколько памяти свободно, время безотказной работы вашего приложения, размер используемой кучи, количество используемых потоков и так далее.


8. Как создать свою метрику?
Метрики реализуются через Micrometer, что означает, что вы также можете создавать и публиковать свои пользовательские показатели через
MeterRegistry. Все, что вам нужно сделать, это заинжектить MeterRegistry везде, где вам может понадобиться опубликовать счетчики, таймеры или датчики, которые фиксируют показатели для вашего приложения.

Пример создания и регистрации пользовательской метрики:

@Component
public class OrderMetrics extends AbstractRepositoryEventListener {
private MeterRegistry meterRegistry;

public OrderMetrics(MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry;
}

@Override
protected void onAfterCreate(Order order{
List items = order.getItems();
for (Item itm : items) {
meterRegistry.counter("orderstat", "items", item.getId()).increment();
}
}
}

9. Что такое индикатор работоспособности (Health Indicator)?
Индикатор предоставляет информацию о работоспособности приложения. Эта информация доступна на конечной точке
/health и может быть использована для мониторинга. По умолчанию несколько индикаторов работоспособности настраиваются автоматически.

Если вы запускаете приложение spring boot с приложением базы данных, вы увидите состояние базы данных, и по умолчанию вы также увидите дисковое пространство вашей системы.

Состояние работоспособности влияет на код состояния HTTP конечной точки. По умолчанию Spring Boot сопоставляет состояния DOWN и OUT_OF_SERVICE для выдачи кода состояния 503. С другой стороны, UP и любые неотмеченные статусы будут переведены в код состояния 200 OK.

10. Какие показатели работоспособности предоставляются "из коробки"?
Из коробки Spring Boot регистрирует множество показателей работоспособности, для конкретных аспектов приложения.

Некоторые из этих показателей почти всегда регистрируются, такие как
DiskSpaceHealthIndicator или PingHealthIndicator.

DiskSpaceHealthIndicator показывает текущее состояние диска, а PingHealthIndicator служит конечной точкой ping для приложения.

Аналогично, Spring Boot также регистрирует некоторые индикаторы условно в зависимости от того, какие зависимости доступны в classpath или если выполняются другие условия.


11. Какие бывают статусы индикатора работоспособности?
Они похожи на статусы HTTP, который указывает на состояние работоспособности вашего приложения и его компонентов; ниже приведены некоторые из распространенных состояний индикаторов:

UP — Элемент или подсистема работают так, как ожидалось
DOWN — Компонент не работает
OUT_OF_SERVICE — Компонент временно вышел из строя
UNKNOWN — Состояние компонента неизвестно

12. Какие статусы индикаторов работоспособности, предоставляются "из коробки"?

Как я уже говорил ранее, некоторые индикаторы работоспособности предоставляются spring boot "из коробки"; вот они:

UP — Элемент или подсистема работают так, как ожидалось
DOWN — Компонент не работает
OUT_OF_SERVICE — Компонент временно вышел из строя
UNKNOWN — Состояние компонента неизвестно

13. Как изменить порядок серьезности состояния индикатора работоспособности?
Вы можете воспользоваться свойством
management.health.status.order чтобы изменить серьезность состояния индикатора работоспособности вашего приложения. Например, если у вас есть новый статус с кодом FATAL в одной из ваших реализаций HealthIndicator.