Spring Boot 4 대 신기 의 Actuator
7280 단어 마이크로 서비스
응용 프로그램 지표 와 정보 공개
스프링 부 트 애플 리 케 이 션 을 성공 적 으로 개발 한 후 생산 환경 에 배치 하면 어떻게 모니터링 할 것 인가?어떻게 해야만 프로그램의 운행 방식 을 이해 할 수 있 습 니까?우리 의 마이크로 서 비 스 는 일반적으로 블랙박스 이다. 우리 가 지 표를 외부 에 공개 하 는 방법 을 명확 하 게 고려 하지 않 는 한.
Spring Boot 는 Actuator 라 고 불 리 는 미리 포 장 된 시동 기 를 추가 하여 이 목 표를 쉽게 실현 할 수 있 습 니 다.
액 츄 에이 터 사용 하기
Boot 에서 기 존 실행 기 를 사용 하려 면 - spring - boot - actuator 의존 항목 을 pom 에 추가 하기 만 하면 됩 니 다.
org.springframework.boot
spring-boot-starter-actuator
2.0.4.RELEASE
이렇게 간단 해!현재 실행 기 를 기 존 프로그램 에 추가 하 였 습 니 다.프로그램 을 다시 시작 할 때 사용자 접근 을 위 한 터미널 을 사용 합 니 다.더 자세 한 설정 과 도량 의 사용자 정 의 는 다음 부분 에서 소개 할 것 입 니 다.
실행 기 터미널
실행 기 의존 항목 만 추가 하면 저희 프로그램 은 현재 대량의 정 보 를 공 개 했 습 니 다. 이것 은 디 버 깅 이나 일반적인 마이크로 서비스 에 대한 통찰 에 매우 편리 합 니 다.
대부분의 단점 은 민감 하 다. - 이것 은 그것들 이 완전히 공개 되 지 않 았 다 는 것 을 의미한다. - 소수의 단점 은 그렇지 않다. 예 를 들 어/health 와/info 이다.
다음은 Boot 가 제공 하 는 가장 흔히 볼 수 있 는 점 입 니 다.
공식 문서 에서 기 존 터미널 의 전체 목록 을 찾 을 수 있 습 니 다.
사용자 정의 관리 서버 포트
기본 HTTP 포트 를 사용 하여 관리 점 을 공개 하 는 것 은 클 라 우 드 배 치 를 기반 으로 하 는 현명 한 선택 입 니 다.단, 프로그램 이 자신의 데이터 센터 에서 실행 된다 면, 다른 HTTP 포트 를 사용 하여 단점 을 공개 하 는 것 을 더 좋아 할 수도 있 습 니 다.
management. port 속성 을 사용 하면 HTTP 포트 를 변경 할 수 있 습 니 다.
management.port=8081
안전 하 다.
대부분의 경우 터미널 을 통 해 공 개 된 상세 한 정 보 는 민감 하기 때문에 사용자 에 게 상세 한 정 보 를 볼 수 있 는 권한 을 부여 해 야 한다.터미널 을 보호 하기 위해 spring security 를 추가 할 수 있 습 니 다.의존 항목 만 추가 하면 클래스 경로 에 spring 보안 파일 이 있 을 때 자동 으로 설정 합 니 다.
org.springframework.boot
spring-boot-starter-security
기본적으로 basic 보안 을 사용 합 니 다.모든 터미널 에 사용 합 니 다.단, application. properties 파일 을 업데이트 하여 사용 하지 않 고 안전성 이 없 는 상태 에서 비 민감 점 을 공개 할 수 있 습 니 다.
다음은 spring boot 실행 기 프로그램의 안전성 을 설정 하 는 데 필요 한 기본 항목 입 니 다.
management.security.enabled=true
security.basic.enabled=true
security.user.name=admin
security.user.password=admin
위의 설정 에서 저 희 는 기본 보안 을 사용 하고 사용자 이름과 비밀 번 호 를 제공 하여 터미널 에 접근 합 니 다.사용자 가 터미널 에 접근 하려 고 시도 할 때 브 라 우 저 에 서 는 인증 서 를 사용 하여 사용 자 를 인증 합 니 다.
사용자 정의 점
다음 형식 으로 속성 을 사용 하여 각 점 을 사용자 정의 할 수 있 습 니 다.
endpoints.[endpoint name].[property to customize]
세 가지 속성 이 있 습 니 다:
예 를 들 어 다음 속성 을 추가 하면 사용자 정의/beans 단점:
endpoints.beans.id=springbeans
endpoints.beans.sensitive=false
endpoints.beans.enabled=true
건강 점
/health 터미널 은 실행 중인 프로그램의 건강 상 태 를 검사 하 는 데 사 용 됩 니 다.그것 은 보통 기본 감시 소프트웨어 로 생산 에 고장 이 났 을 때 알려 줍 니 다.
기본적으로 HTTP 를 통 해 권한 이 부여 되 지 않 은 접근 을 위해 건강 정보 만 표시 합 니 다.
{
"status" : "UP"
}
이 건강 정 보 는 HealthIndicator 응용 프로그램의 상하 문 에 설 정 된 모든 bean 에서 인 터 페 이 스 를 수집 합 니 다.
되 돌아 오 는 일부 정보 HealthIndicator 는 본질 적 으로 민감 합 니 다. - 하지만 디스크 공간, 데이터 원본 등 다른 정 보 를 공개 하기 위해 endpoints. health. sensitive = false 를 설정 할 수 있 습 니 다.
사용자 정의 Health 터미널
건강 지 표를 사용자 정의 할 수 있 습 니 다.HealthIndicator 인 터 페 이 스 를 확장 하고 자신의 실현 을 제공 할 수 있 습 니 다.이 유형의 사용자 정의 클래스 를 만 들 고 helh () 방법 을 덮어 씁 니 다. 사용자 정의 논 리 는 기본 기능 을 덮어 씁 니 다.
@Component
public class CustomHealthCheck implements HealthIndicator {
public Health health() {
int errorCode = 0;
if (errorCode != 1) {
return Health.down().withDetail("Error Code", errorCode).build();
}
return Health.up().build();
}
}
출력 은:
{
"status": "DOWN",
"customHealthCheck": {
"status": "DOWN",
"Error Code": 0
},
"diskSpace": {
"status": "UP",
"free": 19593824409432,
"threshold": 15485791
}
}
정보 점
사용자 정의/info 터미널 에 표 시 된 데이터 도 사용 할 수 있 습 니 다. - 예 를 들 어:
endpoints.info.id=info
endpoints.info.sensitive=false
endpoints.info.enabled=true
info.app.name=Spring Actuator Example
info.app.description=Simple project of Spring Actuator with examples
info.app.version=0.0.1-SNAPSHOT
예제 출력:
{
"app": {
"version": "0.0.1-SNAPSHOT",
"description": "Simple project of Spring Actuator with examples",
"name": "Spring Actuator Example"
}
}
Metrics 단점
측정 점 은 운영 체제, JVM 과 응용 프로그램 등급 의 측정 정 보 를 수집 하고 발표 하 는 더욱 중요 한 점 중 하나 로 상 자 를 열 면 바로 사용 할 수 있다.메모리, 더미, 프로세서, 스 레 드, 로드 클래스, 마 운 트 해제 클래스, 스 레 드 탱크, HTTP 지표 등 을 얻 을 수 있 습 니 다.
덤 프 터미널
프로그램 이 성능 에 문제 가 있 을 때 Thread Dumps 가 중요 합 니 다.정상 적 인 상황 에서 생산 서버 관리자 에 게 잦 은 간격 으로 Thread Dumps 를 요청 하고 분석 을 보 내야 합 니 다.그러나 이 는 많은 시간 이 걸 리 고 실제 성능 문제 가 발생 했 을 때 만 Thread Dumps 가 필요 하 다.
이 노드 는 생산 프로그램 에 진정한 장점 을 제공 할 것 입 니 다. 브 라 우 저 를 사용 하여 프로그램 에 접근 하면 Thread Dumps 를 얻 을 수 있 습 니 다.Spring Boot 가 생산 애플 리 케 이 션 에 이렇게 뛰어난 기능 을 제공 하 는 것 을 보 니 정말 좋 습 니 다!
사용자 정의 터미널 구현
Spring Boot 가 인용 한 기본 점 을 제외 하고 인터페이스 Endpoint 를 통 해 자신의 점 을 작성 할 수 있 습 니 다.프로그램 에 대한 자세 한 정 보 를 공개 하고 싶 을 때 유용 합 니 다.예 를 들 어 이 예제 에서 저 는 프로그램의 서버 상세 정 보 를 표시 하기 위해 사용자 정의 터미널 을 만 들 었 습 니 다.
실현 류 는 이렇게 보인다.
@Component
public class ServerEndpoint implements Endpoint> {
public String getId() {
return "server";
}
public List invoke() {
List serverDetails = new ArrayList();
try {
serverDetails.add("Server IP Address : " + InetAddress.getLocalHost().getHostAddress());
serverDetails.add("Server OS : " + System.getProperty("os.name").toLowerCase());
} catch (Exception e) {
e.printStackTrace();
}
return serverDetails;
}
public boolean isEnabled() {
return true;
}
public boolean isSensitive() {
return false;
}
}
이것 은 출력 모양 입 니 다:
["Server IP Address : 192.168.1.164","Server OS : Mac OS X"]
총결산
Actuator 는 Spring Boot 프로젝트 에서 매우 강력 한 기능 으로 응용 프로그램 을 감시 하고 관리 하 는 데 도움 이 되 며 restful api 요청 을 통 해 응용 프로그램의 운행 상황 을 감독, 감사, 수집 할 수 있 습 니 다.
Spring boot 2.0 이 발표 되면 서 Actuator 는 많은 새로운 기능 을 얻 었 다.이 는 재 설계 되 고 새로운 edpoints 를 추 가 했 지만 Actuator 는 기본 적 인 의 도 를 보류 하고 모델 을 간소화 하여 기능 을 확장 하고 더 좋 은 기본 설정 을 사용 했다.
Spring Boot 1. x 와 2. x 의 용법 과 차이 점 은 우리 의 다른 글 을 참조 할 수 있 습 니 다. 서비스 모니터링 Spring Boot Actuator 소개
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
마이크로 서비스 간에feign을 통해 서로 호출되며, 크로스 서버 호출 시 이상이 발생: No route to host해결: feign이 다른 서비스를 호출하는 것도 eureka 등록센터 서비스를 획득하여 서비스가 등록된 IP에 문제가 있는지 추측하고 지정한 appId의 실례를 조회한다. eureka url/eureka/apps/{...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.