Адрес фактического проекта электронной коммерции 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监控中心服务
Адрес исходного кода проекта
публика
проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на общедоступный номерПолучите это прямо сейчас.