스프링부트 Actuator

2018-10-10

spring boot actuator

1. Actuator란

spring boot actuator는 한마디로 ‘스프링 부트 애플리케이션에서 제공하는 여러가지 정보를 모니터링하기 쉽게 해주는 기능’이다. 간단히 dependency를 통해 앱을 모니터링 하고, 통계를 수집하고, 트래픽이나 데이터베이스의 상태를 볼 수 있다.

Actuator는 HTTP를 이용하여 어플리케이션의 모니터링 및 관리 기능을 제공하며, 각종 추상화 클래스(HealthIndicator) 등을 제공하여 상태 정보를 변경할 수 있는 서비스를 제공한다.

하지만 Actuator 데이터는 비휘발성 메모리 기반이므로, 임데디드 톰캣 서버를 재시작하면 데이터가 모두 사라진다. 실서비스에서 이용한다면 외부 스토리지에 저장해서 모니터링 할 수 있는 환경이 필요하다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>



2. Actuator 2.x

  • 이전 1.x 버전대와는 다르게 대부분의 endpoint가 비활성화 되어있고, default로 /health와 /info만 활성화 되어 있다.
  • endpoint 모두 활성화 시키고 싶다면 application.properties에 다음과 같이 추가해야 한다.
management.endpoints.web.exposure.include=*
  • 만약 제외하고 싶은 endpoint가 있다면 아래와 같이 설정을 해야한다.
management.endpoints.web.exposure.exclude=env,beans
  • 또한 Actuator는 spring security의 config를 공유하므로, spring security의 규칙에서 제외시키고 싶다면 security config에 다음을 추가해야 한다.
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
    .authorizeRequests()

    // 이 부분 추가
    .andMathers("/actuator/**").permitAll()

    .anyRequest().authenticated();
  }
}



3. endpoints

  • /auditevents : 로그인/로그아웃과 같은 보안 검사 관련 이벤트 조회. principal이나 type 등을 파라미터로 추가할 수도 있다
  • /beans : beanFactory 내에서 사용 가능한 모든 빈을 리턴함
  • /env : 어플리케이션의 환경에 대한 정보를 제공. port, vm, java-version, active-profile, applicaion.properties 정보 조회 가능. /env/{property.name}을 이용하면 해당 프로퍼티의 정보만을 가지고 올 수 있다.
  • /health : 어플리케이션의 health 상태 제공
  • /info : 어플리케이션의 기본 정보를 얻을 수 있다. 커스텀 데이터, 빌드 정보, 최신 커밋 정보를 전달.
  • /loggers : 어플리케이션의 logging 레벨 전달
  • /mappings : 어플리케이션의 request mapping에 대한 정보를 전달
  • /metrics : 사용 가능한 metric의 리스트 전달. /metrics/{metric.name} 을 호출하면 해당 metric의 정보를 얻을 수 있다. jvm 메모리 정보, jdbc connection 정보, tomcat 정보 등을 전달.
  • /scheduledtasks : 어플리케이션 내의 schedule task 정보를 제공



4. metrics

  • JVM 정보
    • thread 수
    • GC 정보
    • heap 정보
  • JDBC 정보
  • Process 관련 정보
  • CPU
    • USAGE
    • LOAD



5. endpoint 경로 변경

  • management.endpoint.web.base-path의 default값 /actuator 를 사용하고 싶지 않다면 다음과 같이 base-path를 수정할 수 있다.
  • 특정 endpoint의 경로만을 변경할 수도 있다
management.endpoints.web.base.path=/status
management.endpoints.web.path-mapping.health=healthcheck



6. customize

기존에 있던 endpoint를 커스텀하거나 custom endpoint를 생성하고 싶다면, Baeldung의 Spring Boot Actuator 링크를 참고.


참고

Baeldung - String Boot Actuator
spring.io - docs supawer0728-Spring Boot Actuator 소개