본문 바로가기
아이티 공부/리눅스

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

by Klero 2017. 5. 24.


테스트 환경 : 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 접속도 안된다.





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

댓글