개발/Spring Boot

스프링 부트 액츄에이터

Debin 2023. 3. 4.
반응형

액츄에이터 Actuator

스프링 부트가 제공하는 액츄에이터는 지표, 추적, 감사, 모니터링과 같은 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는

다양한 편의 기능을 제공한다. 나아가서 다양한 모니터링 시스템과 매우 쉽게 연동할 수 있는 기능도 제공한다.

액츄에이터 의존성 추가

아래 의존성을 build.gradle에 추가해야지 액츄에이터를 사용할 수 있다.

 implementation 'org.springframework.boot:spring-boot-starter-actuator' // actuator 추가

액츄에이터 기능 사용

액추에이터를 사용하려면 애플리케이션의 main() 메서드를 실행시키고 /actuator 경로로 접근해야 한다.

/actuator 경로

/actuator 경로를 통해 액츄에이터가 제공하는 수 많은 기능을 확인할 수 있다.

액츄에이터가 제공하는 기능 하나하나를 엔드포인트라 한다.

각각의 엔드포인트는 /actuator/{엔드포인트명}과 같은 형식으로 접근할 수 있다.

엔드포인트 설정

엔드 포인트를 사용하려면 엔드 포인트 활성화, 엔드 포인트 노출 2가지 과정이 필요하다.

엔드포인트는 대부분 기분으로 활성화 되어 있다. 그러므로 엔드포인트를 노출할지 선택하면 된다.

참고로 HTTP와 JMX를 사용할 수 있는데 보통 JMX는 잘 사용하지 않는다.

 

액츄에이터 기능을 제어하려면 application.yml or application.properties에서 설정 값을 작성하는 게 효율적이다.

아래는 모든 엔드포인트를 웹에 노출하는 application.yml 파일이다.

management:
  endpoints:
    web:
      exposure:
        include: "*"

다양한 엔드포인트

스프링 부트가 제공하는 다양한 엔드포인트를 통해 개발자는 애플리케이션의 수 많은 기능을 관리하고 모니터링할 수 있다.

몇 가지만 살펴보자.

 

  • beans: 스프링 컨테이너에 등록된 스프링 빈을 보여준다.
  •  configprops: @ConfigurationProperties를 보여준다.
  • health: 애플리케이션 헬스 정보를 보여준다.
  • httpexchanges: HTTPS 호출 응답 정보를 보여준다.
  • info: 애플리케이션 정보르 보여준다.
  • threaddump: 쓰레드 덤프를 실행해서 보여준다.
  • shutdown: 애플리케이션을 종료한다. 이 기능은 기본적으로 비활성화 되어 있다.

헬스 정보를 더 자세히 보려면 아래와 같이 yml 파일에 내용을 추가해야 한다.

management:
  endpoint:
    health:
      show-details: always

info 엔드포인트는 java, os, env, build, git과 같은 다양한 애플리케이션 기본 정보를 노출한다.

env, java,os는 기본적으로 비활성화 되어 있다. build와 git 내용만 살펴보겠다.

 

빌드 정보를 노출하려면 빌드 시점에 META-INF/build-info.properties 파일을 만들어야 한다.

gradle을 사용하면 다음 내용을 추가하면 된다.

//build.gradle에 빌드 정보를 추가
springBoot {
      buildInfo()
}

이렇게 하고 빌드를 해보면 build 폴더안에 resources/main/META-INF/build-info.properties 파일을 확인할 수 있다.

 

git 정보도 비슷하다. git.properties 파일이 필요하다. 

plugins {
    ..
    id "com.gorylenko.gradle-git-properties" version "2.4.1" //git info
}

위 내용을 추가하고 빌드를 하면 동일하게 build 폴더 안에서 git.properties를 찾을 수 있다.

로거

loggers 엔드포인트를 사용하면 로깅과 관련된 정보를 확인하고 또 실시간으로 변경할 수 있다.

 

실시간으로 로깅 레벨을 변경하는 방법에 대해 살펴보자.

 

  1. POSTMAN과 같은 프로그램으로 POST로 요청을 보내야한다.
     
  2.  http://localhost:8080/actuator/loggers/{로깅 레벨을 변경할 대상} URL로 POST 방식으로 JSON 형태로 담아서 요청을 해야 한다.
  3. JSON 요청 예시는 아래와 같다. 요청이 성공하면 204가 내려온다.
{
      "configuredLevel": "TRACE"
}

HTTP 요청 응답 기록

httpexchanges 엔드 포인트를 사용해 HTTP 요청과 응답의 과거 기록을 확인할 수 있다.

조건으로는 반드시 HttpExchangeRepository 인터페이스의 구현체를 빈으로 등록해야 한다.

 

액츄에이터는 반드시 외부 인터넷에서 접근이 불가능하게 막고, 내부에서만 접근 가능하도록 구성해야 한다.

 

이상으로 포스팅을 마칩니다. 감사합니다.

 

 

참고 자료

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%ED%95%B5%EC%8B%AC%EC%9B%90%EB%A6%AC-%ED%99%9C%EC%9A%A9/dashboard

 

스프링 부트 - 핵심 원리와 활용 - 인프런 | 강의

실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., - 강의 소개 | 인프런

www.inflearn.com

 

반응형

댓글