[Spring] 액추에이터

WOOK JONG KIM·2022년 11월 7일
0
post-thumbnail

개발을 지나 운영 단계에 접어들면 애플리케이션이 정상적으로 동작하는지 모니터링하는 환경을 구축하는 것이 중요

스프링 부트 액추에이터
-> HTTP 엔드포인트 or JMX(Java Management Extensions)를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능 제공


엔드포인트

액추에이터의 엔드포인트는 애플리케이션의 모니터링을 사용하는 경로

여러 내장 엔드포인트 포함 및 커스텀 엔드포인트 추가 가능

엑추에이터 추가 시 기본적으로 엔드포인트 URL로 /actuator가 추가되며 이 뒤 경로를 추가해 상세 내역에 접근

다른 경로 이용하고자 한다면

// application.properties
management.endpoints.web.base-path= /custom-path

엑추에이터의 엔드 포인트 리스트

Spring MVC, Spring WebFlux, Jersey 사용 시 추가로 사용가능한 엔드포인트

  • heapdump : 힙 덤프 파일 반환, 핫스팟 VM상에서 hprof 포맷의 파일이 반환
  • jolokia : Jolokia가 클래스 패스에 있을 때 HTTP 를 통해 JMX 빈 표시
  • logfile : logging.file.name or logging.file.path 속성이 설정된 경우 로그 파일의 내용 반환
  • Prometheus : Prometheus 서버에서 스크랩할 수 있는 형식으로 메트릭 표시

엔드 포인트 활성화, 노출

엔드포인트는 활성화 여부와 노출 여부 설정 가능

비 활성화된 엔드포인트는 애플리케이션 컨텍스트에서 완전히 제거됨
-> 활성화 하려면 properties 파일에 속성 추가하자

management.endpoint.shutdown.enabled=true
management.endpoint.caches.enabled=false

위 설정은 엔드포인트의 shutdown 기능 활성화하고 caches 기능 비활성화

엔트포인트 노출 여부는 JMX를 통한 노출과 HTTP를 통한 노출이 있다

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

## JMX 설정
management.endpoints.jmx.exposure.include=*
management.endpoints.jmx.exposure.exclude=threaddump, heapdump

위 설정은 web&jmx 환경에서 엔드포인트를 전체적으로 노출하며, 쓰레드 덤프와 힙 덤프 기능은 제거하겠다는 것

엔드포인트는 애플리케이션에 대한 민감한 정보를 담고 있으므로, 노출 설정을 신중하게 고려하자
-> 노출 설정 기본값은 인터넷 참고


액추에이터 기능 살펴보기

액추에이터를 활성화하고 노출 지점을 설정하고 나면 애플리케이션에서 기능 사용 가능

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

/info를 통해 가동 중인 애플리케이션 정보를 볼 수 있다

제공 정보 범위는 properties 파일에 info.로 시작하는 속성 값들을 정의하는 것이 가장 쉬움

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

이후 아래 URL에 접근

http://localhost:8080/actuator/info

JSON 형태로 정보가 출력됨

애플리케이션 상태(/health)

애플리케이션 상태 확인 시 사용, 별도 설정 없이 URL 접근

http://localhost:8080/actuator/health
호출 결과 -> {"status":"UP"}

상태에는 UP, DOWN, UNKNOWN, OUT_OF_SERVICE

이 결과는 주로 네트워크 계층 중 L4(LoadBalancing) 레벨에서 애플리케이션의 상태 확인을 위해 사용

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

show-details 속성 값

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

출력 결과

{
   "status":"UP",
   "components":{
      "diskSpace":{
         "status":"UP",
         "details":{
            "total":245107195904,
            "free":129702170624,
            "threshold":10485760,
            "exists":true
         }
      },
      "ping":{
         "status":"UP"
      }
   }
}

모든 status 값이 UP이야 애플리케이션의 상태가 UP으로 표시됨

빈 정보 확인(/beans)

http://localhost:8080/actuator/beans

등록된 정보 너무 많아서 육안으로 내용 파악은 어렵

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

http://localhost:8080/actuator/conditions

출력 내용은 크게 positiveMatches와 negativeMatches 속성으로 구분되는데, 자동설정의 @Conditional에 따라 평가된 내용 표시

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

http://localhost:8080/actuator/env

스프링의 환경변수 정보 확인하는데 사용

기본적으로 properties 파일의 변수가 표시되며, OS,JVM 환경 변수도 함께 표시

로깅 레벨 확인(/loggers)

http://localhost:8080/actuator/loggers
profile
Journey for Backend Developer

0개의 댓글