Spring Boot Admin 2.1.0 Рейдеры

Spring Boot Java

Введение в Spring Boot Admin

Spring Boot Admin — это проект сообщества с открытым исходным кодом для управления и мониторинга приложений Spring Boot. Приложения регистрируются на сервере администрирования Spring Boot как клиент администрирования Spring Boot (через HTTP) или обнаруживаются с помощью реестра Spring Cloud (например, Eureka, Consul). Пользовательский интерфейс представляет собой приложение AngularJs, показывающее некоторый мониторинг конечной точки Actuator клиента Spring Boot Admin. Общие функции или мониторинг следующие:

  • Показать состояние здоровья
  • Показать детали, такие как
    • JVM и показатели памяти
    • Метрики micrometer.io
    • Показатели источника данных
    • метрики кеша
  • Показать номер информации о сборке
  • Подпишитесь и скачайте лог-файлы
  • Просмотр свойств системы и среды jvm
  • Просмотр свойств конфигурации Spring Boot
  • Поддержка публикуемых /env- и /refresh-конечных точек Spring Cloud.
  • Простое управление уровнем журнала
  • Взаимодействие с JMX-бинами
  • Посмотреть дамп потока
  • Посмотреть отслеживание http
  • Просмотр событий аудита
  • Просмотр http-конечных точек
  • Просмотр запланированных задач
  • Просмотр и удаление активных сеансов (используя spring-session)
  • Ознакомьтесь с миграциями базы данных Flyway/Liquibase
  • скачать кучу
  • Уведомления об изменении статуса (по электронной почте, Slack, Hipchat, ...)
  • Журнал событий для изменений состояния (непостоянный)

быстрый старт

Создать сервер администрирования Spring Boot

Версия Spring Boot всех проектов в этой статье — 2.1.0, а версия Spring Cloud — Finchley.SR2. Случай принимает многомодульную форму Maven, а родительский файл pom вводит следующие зависимости (полные зависимости см. в исходном коде):


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/>
    </parent>
    
    
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <spring-cloud.version>Finchley.SR2</spring-cloud.version>


В проекте admin-server введены стартовая зависимость admin-server и стартовая зависимость web Код выглядит следующим образом:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.1.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Затем добавьте аннотацию @EnableAdminServer в класс запуска AdminServerApplication проекта, чтобы включить функцию AdminServer.Код выглядит следующим образом:


@SpringBootApplication
@EnableAdminServer
public class AdminServerApplication {

    public static void main(String[] args) {
        SpringApplication.run( AdminServerApplication.class, args );
    }

}

Настройте имя программы и порт программы в файле конфигурации проекта application.yml, код выглядит следующим образом:

spring:
  application:
    name: admin-server
server:
  port: 8769

Этот сервер администрирования создан.

Создайте клиент администрирования Spring Boot

Введите начальные зависимости admin-client и начальные зависимости web в файле pom проекта admin-client.Код выглядит следующим образом:


        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.1.0</version>
        </dependency>
       
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


Настройте имя приложения и информацию о порте в файле конфигурации проекта application.yml, а адрес, зарегистрированный на сервере администратора, — http://localhost:8769, и, наконец, предоставьте всю информацию о порте своего собственного привода. следующее:

spring:
  application:
    name: admin-client
  boot:
    admin:
      client:
        url: http://localhost:8769
server:
  port: 8768

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: ALWAYS

Файлы запуска в проекте следующие:


@SpringBootApplication
public class AdminClientApplication {

    public static void main(String[] args) {
        SpringApplication.run( AdminClientApplication.class, args );
    }

Запустите два проекта одновременно, введите localhost:8769 в браузере, и интерфейс, отображаемый браузером, будет следующим:

21.png

Посмотреть настенную панель:

22.png

Нажмите на настенный экран, чтобы просмотреть конкретную информацию о клиенте администратора, например информацию о состоянии памяти:

23.png

Также посмотрите на ситуацию с весенними бобами:

24.png

Для получения дополнительной информации о мониторинге испытайте ее на себе.

Spring boot Admin используется в сочетании с реестром SC

Как и в предыдущем случае, в этом случае также используются Spring Boot версии 2.1.0 и Spring Cloud версии Finchley.SR2. Случай принимает многомодульную форму Maven, а родительский файл pom вводит следующие зависимости (полные зависимости см. в исходном коде), которые здесь опущены.

Построить регистрационный центр

Также для реестра можно использовать Eureka и Consul, он представлен в файле pom в проекте eureka-server:

 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

Настройте информацию о порте eureka-server, а также defaultZone и предотвратите самостоятельную регистрацию. Наконец, система выставляет все порты активатора eureka-server.

spring:
  application:
    name: eureka-server
server:
  port: 8761
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
    register-with-eureka: false
    fetch-registry: false
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

Добавьте аннотацию @EnableEurekaServer в файл запуска проекта EurekaServerApplication, чтобы включить Eureka Server.


@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run( EurekaServerApplication.class, args );
    }
}

эврика-сервер построен.

Построить админ-сервер

В файле pom проекта admin-server введите начальные зависимости admin-server, начальные зависимости web и начальные зависимости eureka-client следующим образом:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.1.0</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
        
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Затем настройте admin-сервер, имя приложения, информацию о порте. И зарегистрируйтесь в центре регистрации, адрес регистрации http://localhost:8761, и, наконец, все порты актуатора выставлены, и конфигурация выглядит следующим образом:


spring:
  application:
    name: admin-server
server:
  port: 8769
eureka:
  client:
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

Добавьте аннотацию @EnableAdminServer в класс запуска AdminServerApplication проекта, чтобы включить функцию сервера администрирования, и добавьте аннотацию @EnableDiscoveryClient, чтобы включить клиентскую функцию eurke.


@SpringBootApplication
@EnableAdminServer
@EnableDiscoveryClient
public class AdminServerApplication {

    public static void main(String[] args) {
        SpringApplication.run( AdminServerApplication.class, args );
    }

}

Построить админ-клиент

Внесите следующие зависимости в файл pom admin-client.Поскольку 2.1.0 использует webflux, вводятся начальные зависимости webflux, начальные зависимости eureka-client и начальные зависимости привода:


 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

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


spring:
  application:
    name: admin-client
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health

  client:
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS
server:
  port: 8762

Добавьте аннотацию @EnableDiscoveryClie в класс запуска, чтобы включить функцию DiscoveryClient.

@SpringBootApplication
@EnableDiscoveryClient
public class AdminClientApplication {

    public static void main(String[] args) {
        SpringApplication.run( AdminClientApplication.class, args );
    }
}

Запустите три проекта одновременно, посетите localhost:8769 в браузере, и браузер отобразит тот же интерфейс, что и в предыдущем разделе.

31.png

Интеграция весенней безопасности

В версии 2.1.0 панель инструментов hystrix удалена, а интерфейс входа в систему по умолчанию интегрирован в модуль безопасности Spring.Пока добавлена ​​защита Spring, модуль входа интегрирован.

Нужно только изменить проект admin-server, в файле pom проекта admin-server нужно ввести следующие зависимости:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

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

spring:
  security:
    user:
      name: "admin"
      password: "admin"
      
eureka:
  instance:
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}

Напишите класс конфигурации SecuritySecureConfig для наследования WebSecurityConfigurerAdapter, конфигурация выглядит следующим образом:


@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter( "redirectTo" );

        http.authorizeRequests()
                .antMatchers( adminContextPath + "/assets/**" ).permitAll()
                .antMatchers( adminContextPath + "/login" ).permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage( adminContextPath + "/login" ).successHandler( successHandler ).and()
                .logout().logoutUrl( adminContextPath + "/logout" ).and()
                .httpBasic().and()
                .csrf().disable();
        // @formatter:on
    }
}

Перезапустите стартовый проект и зайдите в браузере:http://localhost:8769/ будет перенаправлен на интерфейс входа в систему. Имя пользователя и пароль для входа настраиваются в файле конфигурации, admin и admin соответственно. Интерфейс отображается следующим образом:

32.png

Встроенная функция сигнализации почтового ящика

В spring boot admin также может быть интегрирована функция оповещения почтового ящика.Например, если служба неработоспособна или отключена, вы можете отправлять электронные письма на указанный почтовый ящик. Интеграция очень простая, нужно только преобразовать админ-сервер:

В файле Pom проекта admin-server, плюс стартовые зависимости почты, код такой:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

В файле конфигурации application.yml вам необходимо настроить конфигурацию, связанную с почтой, следующим образом:

spring.mail.host: smtp.163.com
spring.mail.username: miles02
spring.mail.password:
spring.boot.admin.notify.mail.to: 124746406@qq.com

После завершения вышеуказанной конфигурации, когда статус нашего зарегистрированного клиента изменится с UP на OFFLINE или другой статус, сервер автоматически отправит электронное письмо на адрес, указанный выше.

Загрузка исходного кода

Быстрый старт:GitHub.com/forephotos/День SP…

В сочетании с весенним облаком:GitHub.com/forephotos/День SP…

использованная литература

codecentric.GitHub.IO/spring-boot…

GitHub.com/codecentric…


Сканируй и поддержи автора

(Просьба указывать автора и источник при перепечатке статей с этого сайтаБлог Фан Чжипэна)