티스토리 뷰
이번에 개발한 API서버의 성능 테스트를 진행하면서 모니터링을 위해 Thread, CPU, Memory, 개발한 connection pool, Thread pool 등의 자원은 JMX를 사용하고, 처리 속도 및 병목 구간을 확인하기 위해서 Open Source APM인 Scouter를 적용해 보기로 했다. Scouter의 XLog를 사용하면 하나의 서비스에 대해 전체 호출 StackTrace를 확인할 수 있기 때문에 아주 유용할 것으로 보였다.
JMX
JMX는 체크해야할 클래스의 정보를 MBean Interface를 통해 확인하고 데이터를 변경할 수 있다. 방법은 interface를 만들고 간단하게 MBeanServer에 등록하면 된다.(Interface를 만들 때 get/set를 지켜줘야 하고 Interface 이름은 클래스 이름 + MBeand 형식으로 만들어야 한다. 예)class DBWorkerPool implments DBWorkerPoolMBean)
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("ReportAgent:name=DBWorkerPool");
mbs.registerMBean(this, name);
이렇게 등록하게 되면 나중에 JDK에서 기본으로 제공하는 Java VisualVM의 MBeans에서 Agent폴더 및에 DBWorkerPool이라는 항목으로 모니터링이 가능하다.
(더블 클릭하면 그래프로 실시간 확인이 가능하다.)
그리고 jvm 실행 옵션에 아래 옵션을 추가해 준다.
-Dcom.sun.management.jmxremote=true
-Djava.rmi.server.hostname=서버 아이피
-Dcom.sun.management.jmxremote.port=사용할 포트
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
위 옵션은 아무런 보안 없이 접속할 수 있는 설정이다.
Java VisualVM을 실행하고 왼쪽 remote에서 우클릭을 하여 Remote Host를 추가하자. 여기에는 모니터링할 jvm이 설치되어 있는 서버의 IP만 적으면 된다. 그리고 새로 생성된 Remote를 우클릭하여 Add JMX Connection를 클릭하여 -Dcom.sun.management.jmxremote.port에 설정한 포트를 적으면 접속되는 것을 볼 수 있다.
MBeans 항목이 없을 경우 상위 메뉴에서 Tools -> Plugins를 통해서 설치할 수 있다. 또한 코드에서 registerMBean실행 시 이미 등록된 이름이면 에러가 발생할 수 있다.
'IT > 모니터링' 카테고리의 다른 글
Scouter 에 Spring hikari pool 연결 (0) | 2019.07.17 |
---|---|
Pinpoint 사용 - Pinpoint 설치 (0) | 2017.07.03 |
Pinpoint 사용 - HBase 설치 (0) | 2017.07.03 |
2. 성능 테스트 모니터링 준비(JMX, Scouter) - Scouter (0) | 2016.12.25 |
Scouter에서 Non Http 서비스 hook (0) | 2016.10.20 |