Администратор Spring Boot: мониторинг приложений микросервиса

Java задняя часть
Администратор Spring Boot: мониторинг приложений микросервиса

Адрес фактического проекта электронной коммерции SpringBoot (20k+star):GitHub.com/macro-positive/…

Резюме

Администратор Spring Boot может быть применен к индикаторам мониторинга Springboot, может использоваться в качестве архитектуры микросервис-сервисной архитектуры центра мониторинга, в статье подробно описывается его использование.

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

Приложение SpringBoot может отображать различные индикаторы во время работы приложения через Actuator.Администратор Spring Boot отслеживает приложение SpringBoot с помощью этих индикаторов, а затем представляет его через графический интерфейс. Администратор Spring Boot может не только отслеживать отдельные приложения, но и отслеживать приложения микросервисов в сочетании с реестром Spring Cloud.

Администратор Spring Boot может предоставить следующую информацию для мониторинга приложения:

  • Следите за обзорной информацией во время работы приложения;
  • метрическая информация, такая как JVM, Tomcat и информация о процессах;
  • Информация о переменных среды, такая как системные свойства, системные переменные среды и информация о конфигурации приложения;
  • Просмотр всей созданной информации Bean;
  • Посмотреть всю информацию о конфигурации в приложении;
  • Просмотр информации журнала работы приложения;
  • Просмотр информации JVM;
  • Просмотр доступных веб-конечных точек;
  • Просмотр информации о трассировке HTTP.

Создайте модуль admin-server

Здесь мы создаем модуль admin-server для демонстрации его функций в качестве центра мониторинга.

  • Добавьте связанные зависимости в pom.xml:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
  • Настройте в application.yml:
spring:
  application:
    name: admin-server
server:
  port: 9301
  • Добавьте @EnableAdminServer в класс запуска, чтобы включить функциональность сервера администратора:
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

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

}

Создать админ-клиентский модуль

Здесь мы создаем модуль admin-client для регистрации на admin-сервере в качестве клиента.

  • Добавьте связанные зависимости в pom.xml:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
  • Настройте в application.yml:
spring:
  application:
    name: admin-client
  boot:
    admin:
      client:
        url: http://localhost:9301 #配置admin-server地址
server:
  port: 9305
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
logging:
  file: admin-client.log #添加开启admin的日志监控
  • Запустите службы admin-server и admin-client.

Демонстрация информации мониторинга

  • Посетите следующий адрес, чтобы открыть домашнюю страницу Spring Boot Admin:http://localhost:9301

  • Нажмите кнопку настенного экрана и выберите admin-client для просмотра информации мониторинга;

  • Обзор информации мониторинга;

  • метрическая информация, такая как JVM, Tomcat и информация о процессах;

  • Информация о переменных среды, такая как системные свойства, системные переменные среды и информация о конфигурации приложения;

  • Просмотр всей созданной информации Bean;

  • Посмотреть всю информацию о конфигурации в приложении;

  • Чтобы просмотреть информацию журнала, вам необходимо добавить следующую конфигурацию, чтобы включить ее;
logging:
  file: admin-client.log #添加开启admin的日志监控

  • Просмотр информации JVM;

  • Просмотр доступных веб-конечных точек;

  • Просмотр информации о трассировке HTTP;

Использовать совместно с реестром

Spring Boot Admin используется в сочетании с реестром Spring Cloud.Ему нужно только интегрировать сервер администратора и реестр.Сервер администратора автоматически получит список сервисов из реестра, а затем получит информацию мониторинга одну за другой. Здесь мы берем реестр Eureka в качестве примера, чтобы представить эту функцию.

Изменить админ-сервер

  • Добавьте связанные зависимости в pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • Чтобы настроить в application-eureka.yml, просто добавьте конфигурацию реестра:
spring:
  application:
    name: admin-server
server:
  port: 9301
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
  • Добавьте @EnableDiscoveryClient в класс запуска, чтобы включить регистрацию службы:
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

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

}

Изменить админ-клиент

  • Добавьте связанные зависимости в pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • Настройте в application-eureka.yml, удалите исходную конфигурацию адреса admin-server и добавьте конфигурацию реестра:
spring:
  application:
    name: admin-client
server:
  port: 9305
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
logging:
  file: admin-client.log #添加开启admin的日志监控
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
  • Добавьте @EnableDiscoveryClient в класс запуска, чтобы включить регистрацию службы:
@EnableDiscoveryClient
@SpringBootApplication
public class AdminClientApplication {

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

}

Демо

  • Запустите eureka-server, используйте конфигурацию application-eureka.yml для запуска admin-server, admin-client;

  • Проверьте реестр, чтобы узнать, что все службы зарегистрированы:http://localhost:8001/

  • Просмотрите домашнюю страницу администратора Spring Boot и обнаружите, что вы можете увидеть информацию о службе:http://localhost:9301

Добавить аутентификацию входа

Мы можем получить аутентификацию при входе в систему, добавив поддержку Spring Security на admin-server.

Создайте модуль admin-security-server

  • Добавьте связанные зависимости в pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.1.5</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • Настройте в application.yml, настройте имя пользователя и пароль для входа и игнорируйте информацию мониторинга admin-security-server:
spring:
  application:
    name: admin-security-server
  security: # 配置登录用户名和密码
    user:
      name: macro
      password: 123456
  boot:  # 不显示admin-security-server的监控信息
    admin:
      discovery:
        ignored-services: ${spring.application.name}
server:
  port: 9301
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
  • Настройте SpringSecurity, чтобы клиент-администратор мог зарегистрироваться:
/**
 * Created by macro on 2019/9/30.
 */
@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 {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                //1.配置所有静态资源和登录页可以公开访问
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .anyRequest().authenticated()
                .and()
                //2.配置登录和登出路径
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                //3.开启http basic支持,admin-client注册时需要使用
                .httpBasic().and()
                .csrf()
                //4.开启基于cookie的csrf保护
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                //5.忽略这些路径的csrf保护以便admin-client注册
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**"
                );
    }
}
  • Измените класс запуска, чтобы включить функции обнаружения AdminServer и регистрации:
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class AdminSecurityServerApplication {

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

}
  • Запустите eureka-server, admin-security-server, зайдите на домашнюю страницу Spring Boot Admin и обнаружите, что вам нужно войти в систему, чтобы получить доступ:http://localhost:9301

используемые модули

springcloud-learning
├── eureka-server -- eureka注册中心
├── admin-server -- admin监控中心服务
├── admin-client -- admin监控中心监控的应用服务
└── admin-security-server -- 带登录认证的admin监控中心服务

Адрес исходного кода проекта

GitHub.com/macro-positive/…

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на общедоступный номерПолучите это прямо сейчас.

公众号图片