[java] Java Jolokia를 사용하여 서버의 메모리 사용량 및 CPU 사용량 모니터링하기

실시간으로 서버의 메모리 사용량 및 CPU 사용량을 모니터링하고 싶다면 Java Jolokia를 사용할 수 있습니다. Jolokia는 JMX(Java Management Extensions)를 통해 서버를 모니터링하는데 사용되는 오픈 소스 프로젝트입니다. 이를 통해 서버의 상태를 실시간으로 모니터링하고, 성능 문제를 식별하고, 적절한 대응을 취할 수 있습니다.

Jolokia 설정

먼저, Jolokia를 사용하기 위해 다음과 같은 설정을 추가해야 합니다.

pom.xml

<dependency>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-core</artifactId>
    <version>1.6.2</version>
</dependency>

Jolokia를 통한 모니터링

Jolokia는 RESTful API를 제공하므로, HTTP를 통해 서버의 상태를 조회할 수 있습니다. 다음은 Jolokia를 사용하여 서버의 메모리 사용량 및 CPU 사용량을 모니터링하는 예제입니다.

import org.jolokia.client.J4pClient;
import org.jolokia.client.request.J4pReadRequest;
import org.jolokia.client.exception.J4pException;
import org.jolokia.client.response.J4pReadResponse;

public class JolokiaMonitor {
    public static void main(String[] args) {
        try {
            // Jolokia 클라이언트 생성
            J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia");

            // 메모리 사용량 조회
            J4pReadRequest memoryRequest = new J4pReadRequest("java.lang:type=Memory", "HeapMemoryUsage");
            J4pReadResponse memoryResponse = j4pClient.execute(memoryRequest);
            int usedMemory = memoryResponse.getValue("used", int.class);
            int maxMemory = memoryResponse.getValue("max", int.class);

            // CPU 사용량 조회
            J4pReadRequest cpuRequest = new J4pReadRequest("java.lang:type=OperatingSystem", "ProcessCpuLoad");
            J4pReadResponse cpuResponse = j4pClient.execute(cpuRequest);
            double cpuLoad = cpuResponse.getValue("value", double.class);

            // 결과 출력
            System.out.println("Used memory: " + usedMemory);
            System.out.println("Max memory: " + maxMemory);
            System.out.println("CPU load: " + cpuLoad);
        } catch (J4pException e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 Jolokia 클라이언트를 사용하여 서버의 메모리 사용량과 CPU 사용량을 조회하고, 결과를 출력합니다.

참고 자료