SpringBoot 프로젝트 건강검진 및 모니터링
Spring Boot-Actuator도 starter를 제공하여 자동으로 설정합니다. 사용에 있어서 starter를 의존에 추가하고 프로젝트를 시작하면 됩니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
일반 EndpointSpring Boot-actuator는 많은 유용한 EndPoint를 제공하고 Spring Boot 응용 프로그램에 다양한 모니터링을 제공합니다. 다음은 제가 자주 사용하는 EndPoint를 설명합니다.
/health 응용 프로그램의 건강 상태
/configprops는 Spring Boot이 발표될 때 단독 Jar 패키지이기 때문에 프로필이 포함될 수 있습니다. 프로필을 확인해야 할 때 ConfigpropsEndPoint를 사용하여 프로필이 정확한지 확인할 수 있습니다.
/trace 최근 몇 차례의 http 요청 정보
HealthEndPoint
http://localhost:8088/health을 방문하면 HealthEndPoint가 디스크 검사와 데이터베이스 검사를 포함하는 기본 모니터링 결과를 제공합니다.
{
"status": "UP",
"diskSpace": {
"status": "UP",
"total": 398458875904,
"free": 315106918400,
"threshold": 10485760
},
"db": {
"status": "UP",
"database": "MySQL",
"hello": 1
}
}
사실 Spring Boot-actuator 원본을 보면 Health EndPoint가 제공하는 정보는 여기에 국한되지 않는다는 것을 알 수 있습니다, org.springframework.boot.actuate.health 가방을 싸면 Elasticsearch Health Indicator, Redis Health Indicator, Rabbit Health Indicator 등을 발견할 수 있습니다.즉, HealthEndPoint는 ES, Redis 등 구성 요소의 건강 정보를 제공합니다.
사용자 지정 Indicator 확장 HealthEndPoint
원본 코드를 보면 디스크와 데이터베이스 건강 정보는 바로 DiskSpaceHealthIndicator, DataSourceHealthIndicator로 이루어진다. 우리가 사용자 정의한 구성 요소를 감시할 때 우리는 하나의 Indicator를 실현할 수 있다.
@Component
public class User implements HealthIndicator {
/**
* user : http://localhost:8088/health
*
* @return Health
*/
@Override
public Health health() {
return new Health.Builder().withDetail("usercount", 10) //
.withDetail("userstatus", "up").up().build();
}
}
이 때 다시 방문합니다. http://localhost:8088/health 이 때 돌아온 결과는 다음과 같습니다. 사용자 정의 User 건강 정보를 포함하고 있습니다.
{
"status": "UP",
"user": {
"status": "UP",
"usercount": 10,
"userstatus": "up"
},
"diskSpace": {
"status": "UP",
"total": 398458875904,
"free": 315097989120,
"threshold": 10485760
},
"db": {
"status": "UP",
"database": "MySQL",
"hello": 1
}
}
EndPoint 사용자 정의사실 HealthEndPoint를 확장하여 건강검진을 추가하는 것 외에도 EndPoint를 정의하여 프로그램이 실행될 때 정보를 표시할 수 있습니다.
@Configuration
public class EndPointAutoConfig {
@Bean
public Endpoint<Map<String, Object>> customEndPoint() {
return new SystemEndPoint();
}
}
@ConfigurationProperties(prefix="endpoints.customsystem")
public class SystemEndPoint extends AbstractEndpoint<Map<String, Object>> {
public SystemEndPoint(){
super("customsystem");
}
@Override
public Map<String, Object> invoke() {
Map<String,Object> result= new HashMap<>();
Map<String, String> map = System.getenv();
result.put("username",map.get("USERNAME"));
result.put("computername",map.get("COMPUTERNAME"));
result.put("userdomain",map.get("USERDOMAIN"));
return result;
}
}
http://localhost:8088/customsystem에 액세스하여 사용자 정의 EndPoint를 확인하면 다음과 같은 결과가 표시됩니다.
{
"username": "xxx",
"userdomain": "DESKTOP-6EAN1H4",
"computername": "DESKTOP-6EAN1H4"
}
Spring Boot 응용 프로그램에 actuator를 추가한 후 원하는 health 인터페이스 반환 결과는 다음과 같습니다.
{
status: "UP",
diskSpace:
{
status: "UP",
total: 250182889472,
free: 31169568768,
threshold: 10485760
},
db:
{
status: "UP",
database: "H2",
hello: 1
}
}
status만 돌아왔다면
{
status: "UP"
}
새로운 구성을 적용하기 위해 yml 프로필을 예로 들면 다음과 같은 설정을 추가해야 합니다.
management:
security:
enabled: false
endpoints:
health:
sensitive: false
management.endpoint.health.show-details=always
총결산위에서 말한 것은 편집자가 여러분께 소개한 SpringBoot의 프로젝트 건강 검사와 모니터링을 실현하는 것입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.