Junjangsee's Blog

SpringBoot - Actuator JMX, HTTP

2019-05-18

images

Actuator

이전 포스팅에 이어서 Actuator를 사용하는 방법에 대해 계속 학습해 보겠습니다.

JMX

JConsole

JConsole은 자바에서 지원하는 JMX입니다.
참고자료 : 공식문서

1
jconsole

터미널에서 jconsole을 입력합니다.
Actuator jconsole을 입력하면 위와같은 창이 뜹니다.

Actuator 현재 로컬 상태이니 해당 프로젝트를 클릭하고 Connect합니다.

Actuator SSL을 적용하지 않은 상태이므로 Insecure connection을 클릭합니다.

Actuator
접속하면 여러가지 정보들을 확인 할 수 있습니다.

Endpoints를 확인하기 위해 MBeans에서 애플리케이션을 확인합니다.

Actuator 빈을 확인하기 위해 누른 창에서 도저히 사람의 눈으로 확인할 수 없는 긴 영어가 출력됩니다.
전 이걸 읽느니 차라리 죽음을 택하겠습니다.

저같은 개발자가 많았는지 이를 대응하기 위해 VisualVM이라는 툴이 나왔습니다.


VisualVM

기존에는 java에서 제공을 했었는데 java10 부터 제공되지 않아서 별도로 설치해야합니다.

다운로드 : 홈페이지
Actuator 위 주로소 들어가 각 OS에 맞는 것을 설치합니다.

Actuator 실행을 시키면 좌측에 애플리케이션과 우측에 정보들이 나와있습니다.
jconsole의 가독성에 비하면 많이 발전된 모습이 보입니다.

기본적으로 VisualVM은 MBean이 없기 때문에 Plugin을 설치해야합니다.


MBean Plugin 설치

Actuator Tools - Plugins을 클릭합니다.

Actuator Available Plugins에서 MBeand을 검색 후 - VisualVM 클릭 - install을 클릭하여 설치합니다.

Actuator 아까와 동일한 MBeans를 보실 수 있습니다.


HTTP

기존 HTTP를 통해 확인했을 땐 health와 info를 제외한 대부분의 Endpoint가 ​비공개​ 상태였습니다.
이 비공개 상태를 공개 옵션을 설정해 모두 확인할 수 있습니다.


management.endpoints.web.exposure.include

1
management.endpoints.web.exposure.include=*

위 설정을 application.properties에 하게되면 /actuator로 접속했을 시 전부 출력하게 됩니다.

Actuator 여기서 전체 정보 대신 특정 정보를 출력하고 싶다면 Endpoints명을 입력해서 선택 출력도 가능합니다.

하지만 이런 정보들이 노출되면 보안이슈가 있으므로 SpringSecurity를 통해서 Admin만 접근하도록 할 필요성이 있습니다.
그 방법은 다음 포스팅에서 이어서 학습하겠습니다.