[java] Java Jolokia를 사용하여 자바 애플리케이션의 힙 메모리 사용량 모니터링하기

이번 블로그 포스트에서는 Jolokia를 사용하여 자바 애플리케이션의 힙 메모리 사용량을 모니터링하는 방법에 대해 알아보겠습니다.

Jolokia란?

Jolokia는 JMX(Java Management Extensions)를 원격으로 사용할 수 있는 에이전트입니다. 이를 통해 자바 애플리케이션의 메트릭을 모니터링하고 관리할 수 있습니다. Jolokia는 RESTful API를 제공하여 간편하게 애플리케이션의 상태를 확인할 수 있습니다.

Jolokia의 설치

Jolokia는 자바 애플리케이션에 포함되어야 합니다. 최신 버전의 Jolokia를 다운로드하고 애플리케이션의 클래스패스에 추가해야 합니다.

Jolokia를 사용한 힙 메모리 사용량 모니터링

  1. Jolokia 설정 파일 만들기

    Jolokia는 애플리케이션의 JMX 메트릭을 제공하기 위해 설정 파일이 필요합니다. 사용할 수 있는 설정 파일 옵션들은 Jolokia의 공식 문서를 참고하시기 바랍니다.

  2. Jolokia JVM 에이전트로 애플리케이션 실행하기

    Jolokia를 사용하기 위해 JVM 에이전트로 애플리케이션을 실행해야 합니다. 다음과 같이 명령어를 실행합니다:

     java -javaagent:/path/to/jolokia.jar=port=8080,host=localhost -jar /path/to/yourApp.jar
    

    위 명령어에서 /path/to/jolokia.jar는 Jolokia 에이전트의 경로를 나타내며, porthost는 Jolokia 서버가 실행될 포트와 호스트를 설정합니다.

  3. Jolokia API를 사용하여 힙 메모리 사용량 확인하기

    Jolokia API를 사용하면 애플리케이션의 힙 메모리 사용량을 확인할 수 있습니다. 다음은 Jolokia API를 통해 힙 메모리 사용량을 조회하는 예제 코드입니다:

     import org.jolokia.client.J4pClient;
     import org.jolokia.client.request.J4pReadRequest;
     import org.jolokia.client.response.J4pReadResponse;
    
     public class HeapMemoryMonitor {
         public static void main(String[] args) {
             J4pClient client = new J4pClient("http://localhost:8080/jolokia/");
                
             try {
                 J4pReadRequest request = new J4pReadRequest("java.lang:type=Memory", "HeapMemoryUsage");
                 J4pReadResponse response = client.execute(request);
                 long usedMemory = response.getValue("used");
                 long maxMemory = response.getValue("max");
                    
                 System.out.println("Used heap memory: " + usedMemory + " bytes");
                 System.out.println("Max heap memory: " + maxMemory + " bytes");
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
     }
    

    위 코드에서 http://localhost:8080/jolokia/는 Jolokia 서버의 API 엔드포인트를 나타냅니다. java.lang:type=Memory는 JMX MBean 이름을 나타내며, HeapMemoryUsage는 조회하고자 하는 속성 이름입니다.

마무리

이제 Jolokia를 사용하여 자바 애플리케이션의 힙 메모리 사용량을 모니터링하는 방법에 대해 알아보았습니다. Jolokia를 통해 애플리케이션의 메트릭을 쉽게 수집하고 분석할 수 있으므로, 성능 향상과 장애 대응에 도움이 될 것입니다.

참고 자료