JMX를 활용한 자바 애플리케이션 대시보드 구축 (jmx-exporter + Prometheus + Grafana)

Kyungrok Cho·2022년 7월 1일
0

계기

어느 날 발주처의 요청으로 기존 Spring Framework기반으로 구축된 웹 애플리케이션의 자원을 모니터링 할수있게끔 해달라는 요청이 들어왔다. (커스터마이징이 가능한 대시보드 형태로)

근데 이걸 웹소켓으로 대시보드를 일일이 구현하기에는 주어진 시간이 너무 촉박했다.

그래서 직접 소스로 개발하지 않고 모니터링 및 데이터 시각화를 지원하는 오픈소스 툴킷들을 이용하여 간단하게 구축하는 방법을 알아본다.

준비

  • OS : Window
  • jdk : 1.6 이상
    • 글쓴이는 1.8
  • Tomcat 서버 설치 및 배포 (이 단계는 설명 생략)
    • 글쓴이는 Window OS에 war로 빌드된 Spring Framework (v4.3.22) 웹앱이 Tomcat (v8.5.31)에 배포되고 있는 상황
  • Prometheus
    • 설명
      • SoundCloud사에서 만든 오픈소스 모니터링 툴킷이다.
      • 대상 시스템으로 부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 시스템이다.
      • 수집한 정보를 Prometheus가 자체적으로 제공하는 간단한 웹 뷰를 통해 조회할 수 있고 그 안에서 테이블 및 그래프 형태로 볼 수 있다.
        • 하지만 Grafana 를 통한 데이터 시각화를 지원하기 때문에 Grafana를 통해 확인할 것이다. (자체 웹 뷰로 지원하는 기능이 빈약하기도 하다.)
  • 다운로드

  • jmx-exporter

    • 설명
      • PrometheusJava 어플리케이션에서 metric을 수집하기 위해 만든 JVM 에서 동작 가능한 Java 어플리케이션이다.
        • metric을 수집하기 위해서는 Java 어플리케이션에서 jmx 가 활성화 되어야한다.
      • Tomcat 실행 시 JVM 옵션으로 추가하면 jmx-exporter가 어플리케이션으로부터 metric을 수집하고 PrometheusHTTP 통신을 통해 metric 데이터를 가져갈 수 있게 /metrics 라는 HTTP endpoint를 제공한다.
    • 다운로드
  • Grafana

    • 설명
      • metric 데이터를 시각화 하는데 가장 최적화된 대시보드를 제공해주며 Grafana Labs에서 관리하고 있는 오픈소스 툴킷이다.
      • Prometheus는 물론이고 InfluxDB, Elasticsearch 등 여러 데이터 소스와 통합이 가능하도록 지원하고있다.
      • 또한 일반 사용자들이 만들어놓은 대시보드 구성을 import 하여 사용할 수 있으며 커스터마이징 또한 용이하다.
    • 다운로드

단계 구성

단계별로 크게 나눠 보면 다음과 같다.

  1. Tomcat 서버에 Java Optionjmx-exporter를 추가하여 Java 어플리케이션의 jmx를 기반으로 metric를 추출 (/metrics 라는 HTTP endpoint를 제공)

  2. Prometheus를 이용하여 HTTP endpointGET 요청을 날려 metric 정보를 수집

  3. Prometheus가 수집한 metricGrafana를 이용하여 데이터 시각화 (대시보드 구성)

다음장부터 해당 단계별로 어떻게 구성되는지 상세히 설명하겠다.

profile
안녕하세요

0개의 댓글