인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

홍창섭님의 프로필 이미지
홍창섭

작성한 질문수

스프링 부트 - 핵심 원리와 활용

HTTP 방식의 actuator가 메트릭을 수집하는 방법

작성

·

509

0

Actuator 강의를 수강하고 추가적으로 공부하다가 생긴 의문점입니다.

 

Actuator는 크게 HTTP와 JMX 방식을 통해 모니터링을 제공한다고 알고 있습니다.

 

스프링부트 공식문서를 읽다보니, JMX 방식의 경우에는 MBean이라는 객체를 통해

특정 메트릭들에 대한 정보를 노출 시킨다는 사실을 알았습니다.

(https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#actuator.jmx)

 

그러면 HTTP 방식으로 노출된 메트릭들의 경우 어떤 방식으로 데이터가 수집되는지에 대한 의문이 생겨 질문드립니다.

 

뇌피셜로는 MBean으로부터 동일하게 정보를 가져와서 적절히 추상화 시킨 후 HTTP로 노출시키는게 아닐까? 라는 생각이 드는데 공식적인 레퍼런스를 아직은 찾지 못했습니다.

 

해당 질문에 대한 답변 또는 참고할만한 레퍼런스가 있다면 답변을 부탁드립니다.

좋은강의 항상 감사드립니다.

답변 3

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 홍창섭님

대부분의 메트릭들은 각각 다르게 수집됩니다.

JDBC 정보는 Connection풀 등을 통해서 수집되고, 파일 용량을 자바의 파일 시스템 클래스 등을 통해서 수집됩니다. 이렇게 수집된 정보를 HTTP로 노출할지, JMX로 노출할지 결정해야 하는데요.

JMX로 노출할 경우 MBean이라는 것을 통해서 노출하게 됩니다.

감사합니다.

0

홍창섭님의 프로필 이미지
홍창섭
질문자

추가적으로 공부하며 정리한 사항 올려드립니다.

springboot actuator와 관련된 JMX 사항들에 대해 궁금하신 분들께 도움이 되면 좋겠습니다.

  1. Actuator는 JMX 방식의 메트릭 수집을 지원하는가?

  • 공식문서에 의하면, spring.jmx.enabled 옵션을 true로 줄 경우 가능합니다.(질문의 링크 참조)

  • 위와 같이 설정한 경우 JDK에 포함되는 VisualVM(JDK 9 이후로는 개별 설치 필요), JConsole 등의 JMX 클라이언트를 통해 스프링 부트 WAS에 대한 정보를 확인 할 수 있습니다.

  1. JMX와 HTTP 방식은 어떻게 다른가?

  • JMX는 MBean이라는 오브젝트를 통해 메트릭을 수집한 뒤, 이를 통해 수집 가능한 API를 제공하고, HTTP는 저희가 흔히 사용하는 HTTP 엔드 포인트를 노출하여 메트릭을 수집할 수 있게 합니다. 메트릭을 수집하는 방법이 둘 간의 가장 큰 차이입니다.

  • JMX는 RMI가 표준으로 사용되기에 서로 다른 두 JVM 프로세스 간의 통신이 이루어지며 메트릭이 수집됩니다.

  • JMX 방식이 어떻게 이뤄지는지 궁금하시면 RMI, MBean 두 가지 키워드로 검색해보시면 될 것 같습니다.

  1. 프로메테우스에서 제공하는 JMX-Exporter와 Springboot Actuator의 차이는?

  • JMX-Exporter의 경우 내부적으로 JMX API를 통해 메트릭을 수집합니다.

  • 즉, agent 역할을 수행하는 JVM 프로세스가 따로 존재하고 해당 프로세스와 WAS 프로세스간 RMI 연결을 통해 메트릭이 수집됩니다. 공식문서의 실행 옵션에서 두개의 jar를 실행시키는것을 확인 가능합니다. (https://github.com/prometheus/jmx_exporter)

  • 반면, Actuator는 영한님께서 말씀해주신것 처럼 각각 다른 방식으로 수집됩니다. 다만 코드를 직접 까보니 Thread Dump, Heap Dump의 경우 내부적으로 MBean을 사용하는것이 확인됩니다. (추가적으로 더 있을 수도 있습니다.) 다만 하나의 프로세스 내에서 수집이 이뤄지기에 JMX 방식은 아닙니다.

  • JMX-Exporter의 경우 Spring 컨테이너가 사용되지 않는 JVM 프로세스(주키퍼, 카프카 등)에서 메트릭을 수집하기 위해 자주 사용된다고 합니다.

  • 또한 모니터링 하고자 하는 메트릭을 MBean으로 등록할 경우, JMX-Exporter를 설치하면 이를 바로 수집할 수 있습니다.

     

혹시 잘못된 내용 있으면 지적 바랍니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 Actuator의 HTTP 방식으로 메트릭이 수집되는 방법에 관련된 답변은 아래의 링크에서 확인하실 수 있습니다. 이 링크는 Actuator와 Prometheus를 연동해서 Grafana에 메트릭이 수집되는지에 관한 질문과 답변을 포함하고 있습니다. 비록 다른 방식의 메트릭 수집에 대한 직접적인 질문은 아니지만, Actuator의 메트릭 노출 방식에 대한 이해를 돕는 내용이 포함되어 있을 수 있습니다.

추가적인 정보가 필요하실 경우, 해당 링크를 참조하시거나 공식 문서를 통해 더 자세히 알아보실 수 있습니다. 감사합니다.

홍창섭님의 프로필 이미지
홍창섭

작성한 질문수

질문하기