Spring Boot Admin 마이크로 서비스 응용 모니터링 의 실현
스프링 부 트 관리자 안내
SpringBoot 응용 은 Actuator 를 통 해 응용 운영 과정 에서 의 각종 지 표를 노출 시 킬 수 있 습 니 다.Spring Boot Admin 은 이러한 지 표를 통 해 SpringBoot 응용 을 모니터링 한 다음 에 도형 화 된 인터페이스 를 통 해 나타 납 니 다.Spring Boot Admin 은 단일 응용 을 감시 할 수 있 을 뿐만 아니 라 Spring Cloud 의 등록 센터 와 결합 하여 마이크로 서비스 응용 을 감시 할 수 있다.
Spring Boot 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-server</artifactId>
</dependency>
application.yml 에서 설정:
spring:
application:
name: admin-server
server:
port: 9301
시작 클래스 에@EnableAdminServer 를 추가 하여 admin-server 기능 을 사용 합 니 다.
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
admin-client 모듈 만 들 기여기 서 우 리 는 admin-client 모듈 을 만들어 서 클 라 이언 트 로 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-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
Wallboard 단 추 를 누 르 고 admin-client 를 선택 하여 모니터링 정 보 를 봅 니 다.
모니터링 정보 개관;
측정 지표 정보,예 를 들 어 JVM,Tomcat 및 프로 세 스 정보;
환경 변수 정보,예 를 들 어 시스템 속성,시스템 환경 변수 와 응용 설정 정보;
만 든 Bean 정보 모두 보기;
응용 프로그램의 모든 설정 정보 보기;
로그 정 보 를 보 려 면 아래 설정 을 추가 해 야 열 수 있 습 니 다.
logging:
file: admin-client.log # admin
JVM 정보 보기;
접근 가능 한 웹 터미널 보기;
HTTP 추적 정보 보기;
결합 등록 센터 사용
Spring Boot Admin 은 Spring Cloud 등록 센터 와 결합 하여 사용 합 니 다.admin-server 와 등록 센터 를 통합 하면 됩 니 다.admin-server 는 자동 으로 등록 센터 에서 서비스 목록 을 얻 은 다음 에 하나씩 모니터링 정 보 를 얻 습 니 다.유레카 등록 센터 를 예 로 들 어 이 기능 을 소개 한다.
admin-server 를 수정 하여 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);
}
}
admin-client 수정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 Admin 홈 페이지 를 보면 서비스 정 보 를 볼 수 있 습 니 다.http://localhost:9301
로그 인 인증 추가
admin-server 에 Spring Security 지원 을 추가 하여 로그 인 인증 기능 을 얻 을 수 있 습 니 다.
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/
admin-client 가 등록 할 수 있 도록 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
프로젝트 원본 주소https://github.com/macrozheng/springcloud-learning
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.