[java] Java Jolokia를 사용하여 애플리케이션의 GC 동작 상태 모니터링하기

자바 애플리케이션의 성능 모니터링은 중요한 작업입니다. 특히 GC (가비지 컬렉션) 동작 상태를 모니터링하는 것은 애플리케이션의 성능 및 안정성을 평가하는 데 도움이 됩니다. 이를 위해 Java 애플리케이션에서 Jolokia를 사용하여 GC 동작 상태를 모니터링하는 방법을 알아보겠습니다.

Jolokia란?

Jolokia는 원격 JMX (Java Management Extensions) 액세스를 제공하는 에이전트입니다. Jolokia 에이전트를 애플리케이션에 추가하면 JMX MBeans에 액세스할 수 있으므로 성능 및 상태 정보를 가져올 수 있습니다.

Jolokia를 사용하여 GC 상태 모니터링하기

  1. 먼저, 프로젝트의 의존성에 Jolokia를 추가합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가합니다.
<dependency>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-core</artifactId>
    <version>1.6.2</version>
</dependency>
  1. Jolokia 에이전트를 애플리케이션에 추가합니다. 일반적으로 web.xml 파일에 다음과 같은 설정을 추가합니다.
<filter>
    <filter-name>JolokiaAgent</filter-name>
    <filter-class>org.jolokia.http.AgentServlet</filter-class>
</filter>
<filter-mapping>
    <filter-name>JolokiaAgent</filter-name>
    <url-pattern>/jolokia/*</url-pattern>
</filter-mapping>
  1. GC 정보를 모니터링하고자 하는 경우, Jolokia를 사용하여 java.lang:type=GarbageCollector,name=* MBean에 액세스할 수 있습니다. Jolokia 클라이언트를 사용하여 RESTful API 호출을 수행하여 GC 정보를 가져올 수 있습니다.
import org.jolokia.client.J4pClient;
import org.jolokia.client.request.J4pReadRequest;
import org.jolokia.client.request.J4pResponse;

public class GCMonitor {

    public static void main(String[] args) throws Exception {
        J4pClient client = new J4pClient("http://localhost:8080/jolokia/");
        J4pReadRequest request = new J4pReadRequest("java.lang:type=GarbageCollector,name=*", "CollectionCount", "CollectionTime");
        J4pResponse response = client.execute(request);

        System.out.println("GC Collection Count: " + response.getValue("CollectionCount"));
        System.out.println("GC Collection Time: " + response.getValue("CollectionTime"));
    }
}

위의 코드는 Jolokia 클라이언트를 사용하여 GC Collection Count 및 GC Collection Time을 가져오는 예시입니다. 애플리케이션의 URL 및 MBean 이름을 필요에 따라 변경해야 합니다.

참고 자료