본문 바로가기
Develop/Spring˙Spring Boot

[Spring Boot] 액추에이터로 내부 들여다보기 - 1

by 독서왕뼝아리 2023. 2. 7.
다루는 내용
- 액추에이터 웹 엔드포인트
- 액추에이터 조정

 

액추에이터의 엔드포인트 살펴보기

애플리케이션을 먼저 기동한 후 http://localhost:8080/actuator 에 접속하면 웹 환경의 기본으로 적용되는 엔드포인트를 확인할 수 있다. 기본적으로 웹 환경에서는 health, info가 제공된다.

{
    "_links": {
        "self": {
            "href": "http://localhost:8080/actuator",
            "templated": false
        },
        "health": {
            "href": "http://localhost:8080/actuator/health",
            "templated": false
        },
        "info": {
            "href": "http://localhost:8080/actuator/info",
            "templated": false
        }
    }
}

 

액추에이터의 기본 경로( /actuator )를 변경할 수 있다.

management:
  endpoints:
    web:
      base-path: /management

 

액추에이터 엔드포인트는 민감한 정보를 제공한다. 따라서 액추에이터 자체로는 보안 처리가 되어 있지 않으므로 대부분의 엔드포인트는 비활성화되어 있다. 엔드포인트의 노출 여부를 제어할 때는 application.yml 에 다음과 같은 코드를 추가한다. include는 활성화할 엔드포인트, exclude는 비활성화할 엔드포인트이다.

management:
  endpoints:
    web:
      exposure:
        include: beans, conditions, mappings, info
        exclude: heapdump, env

 

 

액추에이터 엔드포인트 세부 구성

  • beans
    애플리케이션의 모든 Spring Bean의 목록 표시한다.
  • health
    애플리케이션의 상태 정보를 표시한다.
{ "status": "UP" }
  • conditions
    스프링 부트의 자동설정(AutoConfiguration)과 직접 구성한 설정에서 평가된 조건(@Conditional)에 관한 정보이다.
  • configprops
    @ConfigurationProperties에 대한 정보가 표시된다.
{
    "spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties": {
        "prefix": "spring.datasource",
        "properties": {
            "password": "******",   // !!
            "driverClassName": "com.mysql.jdbc.Driver",
            "url": "jdbc:mysql://1.1.1.1:3306/db",
            "username": "username"
        }
    }
}
  • env
    모든 환경변수 정보를 표시한다.

  • info
    application.yml에 info로 시작하는 프로퍼티 하위의 값들을 JSON으로 반환한다.
# application.yml

info:
  copyright: mine
  contact:
    email: ooo@gmail.com
    phone: 010-1111-2222
/info GET 요청
{
    "copyright": "mine",
    "contact":{
    "email": "ooo@gmail.com",
    "phone": "010-1111-2222"
}
  • logfile
    로그 파일 내용을 반환한다.
  • loggers
    애플리케이션의 Logger 구성을 표시하거나 변경.
  • threaddump
    스레드 덤프를 수행한다. 요청 추적과 더불어 스레드 활동은 실행 중인 애플리케이션에서 어떤 일이 일어나고 있는지 결정하는 데 매우 유용하다. /dump 엔드포인트는 현재 스레드 활동 스냅샷을 생성한다.
  • metrics
    현재 애플리케이션의 각종 지표(metrics) 정보를 표시한다.
  • mappings
    모든 @RequestMappig 경로를 표시한다.

  • shutdown
    애플리케이션을 정상적으로(gracefully) 종료한다. 기본적으로 비활성화 되어 있고 POST 요청으로 작동한다. 아래와 같은 코드를 입력해 엔드포인트를 활성화할 수 있다.
endpoints:
    shutdown:
        enabled: true

(자세한 내용 : http://forward.nhnent.com/hands-on-labs/java.spring-boot-actuator/04-endpoint.html)