기본 콘텐츠로 건너뛰기

ubuntu 에서 원격 JMX(Java Management Extensions) 모니터링 가능하게 하기

원격 JMX 모니터링 가능하게 하기

 

정리



  1.  설정 파일 수정
    • 관련 파일
      • $JAVA_HOME/jre/lib/management/management.properties
    •  내용추가
      • com.sun.management.jmxremote.port=8991
      • com.sun.management.jmxremote.ssl=false
  2. 톰캣 설정 수정
    • 관련 파일
      • /etc/default/tomcat7
    • JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote 
  3. password 파일 소유자 및 권한 수정
    • sudo chown tomcat7.tomcat7 /etc/java-7-openjdk/management/jmxremote.password
    • sudo chmod 600 /etc/java-7-openjdk/management/jmxremote.password
  

원격 JMX 모니터링 시 설정


설정이 필요한 파일

$JAVA_HOME/jre/lib/management/jmxremote.access
$JAVA_HOME/jre/lib/management/jmxremote.password

두 파일이 필요하다는데.

Ubuntu 14.04 Java Home Directory에서 JAVA_HOME은 /usr/lib/jvm/default-java임을알아냈다.

물론,

/usr/lib/jvm/default-java/jre/lib/management/jmxremote.access와 같은 직접적인 접근도 가능하다.

linux의 주 설정파일 들이 모여있는 디렉토리는 /etc이며, 위의 파일 또한 실제로는 /etc/java-7-openjdk/management/jmxremote.access라는 실제 파일에 대한 링크이다.

원격 JMX 모니터링 시 java 시작 옵션

 

1. 모든 프로그램에 적용 시


  • 설정 항목
    • com.sun.management.jmxremote
    • com.sun.management.jmxremote.port=8991
    • com.sun.management.jmxremote.ssl=false
  • 관련 파일
    • $JAVA_HOME/jre/lib/management/management.properties

Ubuntu tomcat 시작 시 com.sun.management.jmxremote 은 반드시 -Dcom.sun.management.jmxremote 형식으로 사용해야함.

/etc/init.d/tomcat7 참고하면 

if [ -f "$DEFAULT" ]; then
        . "$DEFAULT"
fi


처럼 $DEFAULT 파일을 실행하며, 이는

PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=tomcat7
DESC="Tomcat servlet engine"
DEFAULT=/etc/default/$NAME


처럼 /etc/default/tomcat7이다.

/etc/default/tomcat7 파일 내용 수정


  • JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote"

tomcat을 시작하면 패스워드 파일 관련 에러를 뱉어내는데, 이는 보안을 위해 tomcat 을 실행하는 사용자의 소유여야 하며 다른 사용자의 접근 권한은 막혀있어야 한다는 것이다.


  • sudo chown tomcat7.tomcat7 /etc/java-7-openjdk/management/jmxremote.password
  • sudo chmod 600 /etc/java-7-openjdk/management/jmxremote.password
위 두 명령을 실행해서 소유자를 tomcat7, 권한을 소유자만 읽기/쓰기가 가능하도록 변경한다.


2. 해당 프로그램에 적용 시

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8991
-Dcom.sun.management.jmxremote.ssl=false

위 세 줄을 1.모든 프로그램에 적용 시를 참고하여 JAVA_OPTS에 추가한다.




ps.

JMX를 이용한 모니터링을 구현할 때 고려해야 할  프로그램 개발 구조.


http://www.zohocorp.com.cn/webnms/javaagent/images/multi-protocol-runtime-architecture.jpg

댓글

이 블로그의 인기 게시물

ubuntu 기본 설치 시 부팅 메뉴 보이기

설치 후 grub을 따로 설정하지 않은 상태이고, ubuntu 이외의 OS가 설치 되어 있지 않은 상황이라면 부팅 시에 OS선택 화면이 나타지 않는다. 관련파일  /etc/default/grub 내용 GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 위 내용에 대한 참고 : ubuntu grub2 문제는 어떤 하드웨어의 교체 시 제대로 시작되지 않는다면 부팅 시 옵션을 바꿔 볼 필요가 있다. 그래픽카드 교체 시에 제대로 시작되지 않아 눈에 보이는 것 하나 없이 어찌 해볼 도리가 없는 황당한 경우를 당했었다. 그렇다고 OS를 재설치하는 수고를 하고 싶지는 않고. 부팅 메뉴를 나타나게 하는방법 바이오스에서 ubuntu로 넘어가기 전에 SHIFT키를 누른 채로 대기한다. ESC를 누른다. 위의 둘중하나를 이용하면 된다.

ecryptfs 사용하기

패키지 ecryptfs-utils ecryptfs 설정 ecryptfs-setup-private ecryptfs mount ecryptfs-mount-private ecryptfs umount ecryptfs-umount-private ecryptfs-setup-private 을 실행하면 ~/.ecryptfs 디렉토리와 필요한 파일들을 생성한다. auto-mount 라는 파일이 존재하면 사용자 로그인 시 자동으로 마운트를 수행하므로 자동 마운트가 되지 않게 하려면 이를 지우면 된다. ecryptfs 패스워드 변경 ecryptfs-rewrap-passphrase /home/$USER/.ecryptfs/wrapped-passphrase