В рамках развития микросервисов многие из нас используют Spring Boot вместе с функциями Spring Cloud. В мире микро сервисов у нас будет много приложений Spring Boot, которые будут работать на одном и том же / разных хостах. Если мы добавим Spring Actuator в приложения Spring Boot, мы получим множество готовых конечных точек для мониторинга и взаимодействия с приложениями Spring Boot. Список приведен ниже.
МНЕ БЫ | Описание | Чувствительный по умолчанию |
---|---|---|
actuator |
Предоставляет «страницу обнаружения» на основе гипермедиа для других конечных точек. Требует Spring HATEOAS, чтобы быть на пути к классам. | правда |
auditevents |
Предоставляет информацию о событиях аудита для текущего приложения. | правда |
autoconfig |
Отображает отчет по автоматической настройке, в котором показаны все кандидаты для автоматической настройки и причина, по которой они «были» или «не были» применены. | правда |
beans |
Отображает полный список всех компонентов Spring в вашем приложении. | правда |
configprops |
Отображает сопоставленный список всех @ConfigurationProperties . |
правда |
dump |
Выполняет дамп потока. | правда |
env |
Выставляет свойства из Spring’s ConfigurableEnvironment . |
правда |
flyway |
Показывает любые миграции базы данных Flyway, которые были применены. | правда |
health |
Показывает информацию о работоспособности приложения (когда приложение защищено, простой «статус» при доступе через неаутентифицированное соединение или полную информацию о сообщении при аутентификации). | ложный |
info |
Отображает произвольную информацию о приложении. | ложный |
loggers |
Показывает и изменяет конфигурацию регистраторов в приложении. | правда |
liquibase |
Показывает любые миграции базы данных Liquibase, которые были применены. | правда |
metrics |
Показывает информацию о метриках для текущего приложения. | правда |
mappings |
Отображает объединенный список всех путей @RequestMapping . |
правда |
shutdown |
Позволяет корректно завершить работу приложения (по умолчанию не включено). | правда |
trace |
Отображает информацию трассировки (по умолчанию последние 100 HTTP-запросов). | правда |
Вышеуказанные конечные точки дают много информации о приложении Spring Boot. Но если у вас много запущенных приложений, тогда мониторинг каждого приложения путем попадания в конечные точки и проверки ответа JSON является утомительным процессом. Чтобы избежать этого, команда Code Centric придумала модуль администрирования Spring Boot, который предоставит нам панель администратора Admin UI для администрирования приложений Spring Boot. Этот модуль обрабатывает данные от конечных точек привода и дает представление обо всех зарегистрированных приложениях на одной панели. Теперь мы продемонстрируем возможности Spring Boot Admin в следующих разделах.
В качестве первого шага создайте приложение Spring Boot, которое мы создадим как серверный модуль Spring Boot Admin, добавив приведенные ниже зависимости maven.
01
02
03
04
05
06
07
08
09
10
|
< dependency > < groupId >de.codecentric</ groupId > < artifactId >spring-boot-admin-server</ artifactId > < version >1.5.1</ version > </ dependency > < dependency > < groupId >de.codecentric</ groupId > < artifactId >spring-boot-admin-server-ui</ artifactId > < version >1.5.1</ version > </ dependency > |
Добавьте конфигурацию Spring Boot Admin Server, добавив @EnableAdminServer
в вашу конфигурацию.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
package org.samrttechie; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import de.codecentric.boot.admin.config.EnableAdminServer; @EnableAdminServer @Configuration @SpringBootApplication public class SpringBootAdminApplication { public static void main(String[] args) { SpringApplication.run(SpringBootAdminApplication. class , args); } @Configuration public static class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // Page with login form is served as /login.html and does a POST on /login http.formLogin().loginPage( "/login.html" ).loginProcessingUrl( "/login" ).permitAll // The UI does a POST on /logout on logout http.logout().logoutUrl( "/logout" ); // The ui currently doesn't support csrf http.csrf().disable(); // Requests for the login page and the static assets are allowed http.authorizeRequests() .antMatchers( "/login.html" , "/**/*.css" , "/img/**" , "/third-party/**" ) .permitAll(); // ... and any other request needs to be authorized http.authorizeRequests().antMatchers( "/**" ).authenticated(); // Enable so that the clients can authenticate via HTTP basic for registering http.httpBasic(); } } // end::configuration-spring-security[] } |
Давайте создадим больше приложений Spring Boot для мониторинга через сервер администрирования Spring Boot, созданный на предыдущих этапах. Все приложения Spring Boot, которые будут созданы сейчас, будут действовать как клиенты Spring Boot Admin. Чтобы сделать приложение клиентом администратора, добавьте приведенную ниже зависимость вместе с зависимостью исполнительного механизма. В этой демонстрации я создал три приложения, таких как Eureka Server, Customer Service и Order Service.
1
2
3
4
5
6
7
8
9
|
< dependency > < groupId >de.codecentric</ groupId > < artifactId >spring-boot-admin-starter-client</ artifactId > < version >1.5.1</ version > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-actuator</ artifactId > </ dependency > |
Добавьте ниже свойство в файл application.properties. Это свойство указывает, где работает сервер администрирования Spring Boot. Следовательно, клиенты будут регистрироваться на сервере.
1
|
spring.boot.admin.url=http: //localhost:1111 |
Теперь, если мы запустим Сервер администрирования и другие приложения Spring Boot, мы сможем увидеть всю информацию о клиентах администратора на панели инструментов Сервера администрирования. Когда мы запустили наш сервер администратора на порту 1111 в этом примере, мы можем увидеть панель мониторинга по адресу http: // <host_name>: 1111. Ниже приведен скриншот пользовательского интерфейса Admin Server.
Подробный вид заявки приведен ниже. В этом представлении мы можем видеть хвост файла журнала, метрики, переменные среды, конфигурацию журнала, где мы можем динамически переключать уровни журнала на уровне компонента, корневого уровня или уровня пакета и другую информацию.
Теперь мы увидим еще одну функцию под названием уведомления от Spring Boot Admin. Это будет уведомлять администраторов, когда статус приложения ВНИЗ или статус приложения повышается. Администратор Spring Boot поддерживает следующие каналы для уведомления пользователя.
- Уведомления по электронной почте
- Pagerduty Уведомления
- Hipchat Уведомления
- Slack Уведомления
- Давайте общаться уведомления
В этой статье мы настроим Slack-уведомления. Добавьте указанные ниже свойства в файл application.properties Сервера администрирования Spring Boot.
1
2
|
spring.boot.admin.notify.slack.webhook-url=https: //hooks.slack.com/services/T8787879tttr/B5UM0989988L/0000990999VD1hVt7Go1eL //Slack Webhook URL of a channel spring.boot.admin.notify.slack.message= "*#{application.names *#{to.status}*" //Message to appear in the channel |
С помощью Spring Boot Admin мы управляем всеми приложениями. Таким образом, нам нужно защитить Spring Boot Admin UI с помощью функции входа. Давайте включим функцию входа на сервер администрирования Spring Boot. Здесь я иду с базовой аутентификацией. Добавьте ниже зависимости maven к модулю Admin Server.
1
2
3
4
5
6
7
8
9
|
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-security</ artifactId > </ dependency > < dependency > < groupId >de.codecentric</ groupId > < artifactId >spring-boot-admin-server-ui-login</ artifactId > < version >1.5.1</ version > </ dependency > |
Добавьте следующие свойства в файл application.properties.
1
2
|
security.user.name=admin //user name to authenticate security.user.password=admin123 //Password to authenticate |
Поскольку мы добавили безопасность на сервер администратора, клиенты администратора должны иметь возможность подключаться к серверу путем аутентификации. Следовательно, добавьте следующие свойства в файлы application.properties клиента Admin.
1
2
|
spring.boot.admin.username=admin spring.boot.admin.password=admin123 |
Существуют дополнительные функции пользовательского интерфейса, такие как Hystrix, Turbine UI, которые мы можем включить на приборной панели. Вы можете найти более подробную информацию здесь . Пример кода, созданного для этой демонстрации, доступен на Github.
Ссылка: | Spring Boot Admin — интерфейс администратора для администрирования приложений весенней загрузки от нашего партнера по JCG Шивы Джанапати в блоге Smart Techie . |