회사에서 상시 구동형 배치(Spring Batch, Java)의 모니터링이 필요한 상황이 발생했습니다.
배치는 자바로 구동하고 있어 자바 모니터링 방법을 찾아보다 'JConsole'을 알게 되었습니다.
제가 'JConsole'을 사용하기 위해 설정한 내용을 정리해보겠습니다.
JConsole
- java process 모니터링 응용프로그램
- jdk 내부 존재(
./bin/jconsole[.exe])

export JCONSOLE_PORT=8781
...
# JConsole
if [ -n $JCONSOLE_PORT ] ; then
# export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true"
export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=$JCONSOLE_PORT"
export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JCONSOLE_PORT"
export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
export JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=$(hostname -I)"
fi
...
nohup $JAVA_HOME/bin/java $JAVA_OPTS
JMX(Java Management eXtension) 설정을 추가했습니다.
JConsole 설정 옵션
-Dcom.sun.management.jmxremote.port=<port number>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
위 내용을 설정했지만 Remote Process 기준으로는 접속되지 못했습니다.
하지만 아래 내용을 추가한 후 정상적으로 접속이 가능했습니다.
-Dcom.sun.management.jmxremote.rmi.port=<port number>-Djava.rmi.server.hostname=$(hostname -I)"
Remote Process 정보 입력
Insecure connection선택
제가 설정한 내용을 정리한 것이며, 올바르지 못한 내용이 있을 수 있습니다.
참고하는 정도로만 봐주시고 수정이 필요한 부분이 있다면 말씀 부탁드립니다.
감사합니다.