11. 액추에이터(Actuator) [Spring Boot]

JuJaeng2·2024년 1월 8일

어플리케이션이 정상적으로 동작하는지 모니터링하는 것은 어플리케이션 운영단계에서 중요한 부분이 된다. 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다.

JMX란?

Java Management Extensions

실행중인 애플리케이션의 상태를 모니터링 하고 설정을 변경할 수 있게 해주는 API

✅ 엔드포인트

액추에이터의 엔드포인튼큰 애플리케이션의 모니터링을 사용하는 경로이다.스프링부트에는 여러 내장 엔트포인트가 포함돼어 있고, 커스텀 엔드포인트를 추가할 수도 있다.

  • 기본 엔드포인트 URL : /actuator가 추가되고 이 뒤에 경로를 추가해 상세 내역에 접근

활성화 여부, 노출 여부 설정

활성화 : 기능 자체를 활성화할 것인지를 결정
EX) 비활성화 엔드포인트는 어플리케이션 컨텍스트에서 와전지 제거됨

[ application.properties ]

// 활성화 설정
management.endpoint.shutdown.enabled=true
management.endpoint.shutdown.enabled=false

// 엔드포인트 노출 설정
//HTTP 설정
management.endpoints.web.exposure.incoude=*
management.endpoints.web.exposure.exclude=threaddump, heapdump

//JMX 설정
management.endpoints.jmx.exposure.incoude=*
management.endpoints.jmx.exposure.exclude=threaddump, heapdump

web과 jmx환경에서 엔드포인트를 전체적으로 노출하며, 스레드 덤프와 힙 덤프 기능은 제외하겠다는 의미.

엔드포인트는 어플리케이션에 관한 민감한 정보를 포함하고 있으므로 노출 설정을 신중하게 고려해야 한다.


✅ 액추에이터 기능

1. 애플리케이션 기본 정보(/info)

  • 가동중인 애플리케이션의 정보를 볼 수 있다.
// application.properties 파일 

// 엑추에이터 info 정보 설정 => 정보의 범위 설정

info.organization.name=wikibooks
info.contact.email=thinkground.flature@gamail.com
info.contact.phoneNumber=010-1234-5678

2. 어플리케이션 상태(/health)

  • 어플리케이션의 상태를 확인할 수 있다.

[ 상태 지표 ]

  • UP
  • DOWN
  • UNKNOW
  • OUT_OF_SERVICE

주로 네트워크 계층 중 L4(Loadbalancing) 레벨에서 어플리케이션의 상태를 확인하기 위해 사용

// application.properties 파일 

// 엑추에이터 health 상세 내역 활성화
management.endpoint.health.show-details=always

[ show-details 속성 ]

  • never(기본값) : 세부 사항은 표시하지 않음
  • when-authorized : 승인된 사용자에게만 세부 상태를 표시
  • always : 모든 사용자에게 세부 상태를 표시

3. 빈 정보 확인(/beans)

스프링 컨테이너에 등록된 스프링 빈의 전체 목록을 표시할 수 있다.
이 엔드포인트는 JSON 형식으로 빈의 정보를 반환한다.

4. 스프링 부트의 자동설정 내역 확인(/conditions)

스프링 부트의 자동설정(AutoCOnfiguration) 조건 내역을 확인할 수 있다.

5. 스프링 환경변수 정보(/env)

스프링의 환경변수 정보를 사용한다.
기본적으로 application.properties 파일의 변수들이 표시되고, OS, JVM의 환경변수도 함께 표신된다.

6. 로깅 레벨 확인(/loggers)

어플리케이션의 로깅 레벨 수준이 어떻게 설정되어 있는지 확인할 수 있다.

😁 마무리

이번 시간에는 액추에이터를 알아보았다. 이해를 요구하는 개념들은 아니었지만 처음드는 용어이고 새로운 기능이다 보니 익숙하지는 않았던것 같다. 아마 이제 막 개발에 입문을 한 입장이고 어플리케이션을 운영해볼 경험은 없었어서 액추에이터라는 기능에 더욱 멀었던것 같다.

만약 내가 만든 어플리케이션을 운영하게 된다면 상태를 파악하고 어플리케이션의 전체적인 틀을 알아볼 때 유용하게 쓰일 수 있을것이라고 생각한다. 지금 당장은 필요하지 않을 수 있지만 잘 기억해 두었다가 필요한 상황이 생겼을 때 기억해내서 사용할 수 있도록 해야겠다.

profile
다 잘하고 싶은 개발자

0개의 댓글