[java] Apache ActiveMQ와 성능 모니터링 방법

Apache ActiveMQ는 대표적인 오픈 소스 메시지 브로커로서, 메시지 전달과 메시지 큐 관리 등 다양한 기능을 제공합니다. 성능 모니터링은 ActiveMQ의 원활한 운영을 위해 중요한 요소 중 하나입니다. 이번 글에서는 Apache ActiveMQ의 성능을 모니터링하는 방법을 알아보겠습니다.

1. JMX 모니터링

ActiveMQ는 Java Management Extensions (JMX)를 지원하여 모니터링을 할 수 있습니다. JMX를 사용하면 여러 가지 정보를 가져올 수 있으며, 연결된 클라이언트 수, 큐 및 토픽별 메시지 수 등을 확인할 수 있습니다.

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;

public class ActiveMQMonitor {
    public static void main(String[] args) throws Exception {
        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
        JMXConnector connector = JMXConnectorFactory.connect(url);
        MBeanServerConnection connection = connector.getMBeanServerConnection();

        // Broker 정보 가져오기
        ObjectName brokerName = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost");
        TabularData queues = (TabularData) connection.invoke(brokerName, "browseAllMessages", null, null);
        System.out.println("큐 정보: " + queues);

        // 연결된 클라이언트 정보 가져오기
        ObjectName[] clients = (ObjectName[]) connection.getAttribute(brokerName, "Clients");
        System.out.println("연결된 클라이언트 수: " + clients.length);

        connector.close();
    }
}

위 예제 코드는 JMX를 통해 ActiveMQ의 메시지 큐 정보와 연결된 클라이언트 수를 가져오는 예시입니다.

2. 로그 분석

ActiveMQ는 로그를 통해 성능에 대한 다양한 정보를 제공합니다. 로그 파일을 분석하여 메시지 전달 시간, 큐의 처리량 등을 확인할 수 있습니다. 주요 로그 파일은 activemq.log, activemq-data.log, audit.log입니다.

로그를 분석하기 위해서는 로그 관리 도구를 사용하거나, 대표적인 로그 분석 도구인 Elasticsearch와 Kibana를 활용할 수 있습니다. Elasticsearch와 Kibana를 통해 로그 데이터를 쉽게 검색하고 시각화할 수 있어 성능 이슈를 파악하기에 용이합니다.

3. JConsole을 이용한 성능 모니터링

JConsole은 JDK에 포함된 GUI 기반의 모니터링 도구로서, JMX를 활용하여 Java 애플리케이션의 성능을 확인하는데 사용됩니다. ActiveMQ 역시 JMX를 지원하므로, JConsole을 통해 ActiveMQ의 성능 모니터링을 수행할 수 있습니다.

JConsole을 실행한 후, 다음과 같은 절차를 따라 ActiveMQ를 모니터링할 수 있습니다.

  1. JConsole 실행
  2. Remote Process 메뉴 선택
  3. Local Process 탭에서 org.apache.activemq.xbean.XBeanBrokerFactory 프로세스 선택
  4. 연결

JConsole을 통해 ActiveMQ의 메모리 사용량, 스레드 수 등의 정보를 확인할 수 있습니다.

결론:

이번 글에서는 Apache ActiveMQ의 성능 모니터링을 위해 JMX, 로그 분석, JConsole을 이용하는 방법을 알아보았습니다. 성능 모니터링을 통해 ActiveMQ가 원활하게 운영되고 있는지 확인하고, 성능 이슈를 조기에 파악하여 적절한 대응을 취할 수 있습니다.

참고 자료: