리눅스에 설치한 아파치 톰캣에 jmx를 활성화 하여 JConsole을 통한 모니터링

테스트 환경 : RHEL6.4 64bit , Tomcat 9.0.0.M3

JMX (Java Management Extensions)를 사용하여 아파치 톰캣(Apache Tomcat)을 모니터링 하는 방법을 구성해 보자.

* JMX (Java Management Extensions)는 응용 프로그램(소프트웨어) / 객체 / 장치 (프린터 등) 및 

서비스 지향 네트워크 등을 감시 관리를 위한 도구를 제공하는 자바 API이다.

* JConsole (Java Monitoring & Management Console)은 자바에서 제공해주는 모니터링 콘솔 프로그램이다.

1. catalina-jmx-remote.jar 파일 다운로드 및 위치 변경

– http://tomcat.apache.org/download-90.cgi 여기서 다운로드 받을 수 있다.

– # mv /root/Downloads/catalina-jmx-remote.jar /opt/was/tomcat9/lib

2. /bin/setenv.sh 스크립트 만들고 설정 (tomcat 구동시 자체적으로 setenv.sh 를 불러오는 구문이 있는것으로 추정됨)

– # cd /opt/was/tomcat9/bin
– # vi setenv.sh

#!/bin/sh

JMX_OPTS=” -Dcom.sun.management.jmxremote \
                 -Dcom.sun.management.jmxremote.authenticate=true \
                 -Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password  \
                 -Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access  \
                 -Djava.rmi.server.hostname=192.168.0.3 \
                 -Dcom.sun.management.jmxremote.ssl=false “
CATALINA_OPTS=” ${JMX_OPTS} ${CATALINA_OPTS}”

* 4번째 라인 : 인증 정보를 사용하겠다.
* 7번째 라인 : 톰캣이 구동되는 서버의 IP를 입력한다.
* 8번째 라인 : 연결에 SSL을 사용하지 않겠다. SSL을 사용하게 되면 설정할게 많으니까 넘어가자

3. jmxremote.access , jmxremote.password 파일 생성 및 설정

– # cd /opt/was/tomcat9/conf
– # vi jmxremote.access

administrator    readwrite
klero               readonly

* 계정은 administrator 이고 주어진 권한은 readwrite 이다.

* klero 계정은 readonly 권한을 주었을 때 JConsole에 정상적으로 접속이 되는지 확인을 해보자

– # vi jmxremote.password

administrator    CXXXXX3
klero               CXXXXX3

* 계정과 암호를 작성한다.

4. server.xml 파일에 아래의 Listener 추가

– # /opt/was/tomcat9/conf/server.xml

<Listener className=”org.apache.catalina.mbeans.JmxRemoteLifecycleListener”
       rmiRegistryPortPlatform=”9840″ rmiServerPortPlatform=”9841″/>

 

5. 9840 , 9841 포트를 열자

– # vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state –state NEW -m tcp –dport 9840 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 9841 -j ACCEPT

– # service iptables restart
– # service iptables save

 6. tomcat 시작 or 재시작

– # service tomcat restart

7. jconsle을 이용해 연동 테스트

– # cd /usr/java/jdk1.8.0_73/bin
– # ./jconsole

* administrator 계정으로는 정상적으로 실행이 되는데 readonly 권한만 부여받은 klero 계정은 실행이 Connect가 안된다.

 

– administrator 계정으로 정상적으로 구동된 모습

아래처럼 CPU , Memory , Threads 등등을 모니터링 할 수 있다.

– klero 계정으로 실행하면 아래와 같은 에러가 발생한다. readonly 권한으로는 JConsole 접속도 안된다.

조금이나마 도움이 되셨다면 밑에 공감 한 번 클릭해주시면 감사하겠습니다.

Leave a Comment