어플리케이션이 정상적으로 동작하는지 모니터링하는 것은 어플리케이션 운영단계에서 중요한 부분이 된다. 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다.
Java Management Extensions
실행중인 애플리케이션의 상태를 모니터링 하고 설정을 변경할 수 있게 해주는 API
액추에이터의 엔드포인튼큰 애플리케이션의 모니터링을 사용하는 경로이다.스프링부트에는 여러 내장 엔트포인트가 포함돼어 있고, 커스텀 엔드포인트를 추가할 수도 있다.
활성화 : 기능 자체를 활성화할 것인지를 결정
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환경에서 엔드포인트를 전체적으로 노출하며, 스레드 덤프와 힙 덤프 기능은 제외하겠다는 의미.
엔드포인트는 어플리케이션에 관한 민감한 정보를 포함하고 있으므로 노출 설정을 신중하게 고려해야 한다.
// application.properties 파일
// 엑추에이터 info 정보 설정 => 정보의 범위 설정
info.organization.name=wikibooks
info.contact.email=thinkground.flature@gamail.com
info.contact.phoneNumber=010-1234-5678
[ 상태 지표 ]
주로 네트워크 계층 중 L4(Loadbalancing) 레벨에서 어플리케이션의 상태를 확인하기 위해 사용
// application.properties 파일
// 엑추에이터 health 상세 내역 활성화
management.endpoint.health.show-details=always
[ show-details 속성 ]
스프링 컨테이너에 등록된 스프링 빈의 전체 목록을 표시할 수 있다.
이 엔드포인트는 JSON 형식으로 빈의 정보를 반환한다.
스프링 부트의 자동설정(AutoCOnfiguration) 조건 내역을 확인할 수 있다.
스프링의 환경변수 정보를 사용한다.
기본적으로 application.properties 파일의 변수들이 표시되고, OS, JVM의 환경변수도 함께 표신된다.
어플리케이션의 로깅 레벨 수준이 어떻게 설정되어 있는지 확인할 수 있다.
이번 시간에는 액추에이터를 알아보았다. 이해를 요구하는 개념들은 아니었지만 처음드는 용어이고 새로운 기능이다 보니 익숙하지는 않았던것 같다. 아마 이제 막 개발에 입문을 한 입장이고 어플리케이션을 운영해볼 경험은 없었어서 액추에이터라는 기능에 더욱 멀었던것 같다.
만약 내가 만든 어플리케이션을 운영하게 된다면 상태를 파악하고 어플리케이션의 전체적인 틀을 알아볼 때 유용하게 쓰일 수 있을것이라고 생각한다. 지금 당장은 필요하지 않을 수 있지만 잘 기억해 두었다가 필요한 상황이 생겼을 때 기억해내서 사용할 수 있도록 해야겠다.