본문으로 건너뛰기

Tomcat

Tomcat의 $CATALINA_HOME/bin/catalina.sh(bat) 파일의 JAVA_OPTS 환경 변수 옵션을 아래와 같이 추가합니다.

JVM 옵션 추가

catalina.sh(bat) 환경 설정

$CATALINA_HOME/bin/catalina.sh(bat)
FLOWKAT_AGENT_DIR=/home/tomcat/agent
JAVA_OPTS="${JAVA_OPTS} -javaagent:${FLOWKAT_AGENT_DIR}/flowkat.agent.jar"
JAVA_OPTS="${JAVA_OPTS} -Dflowkat.config=${FLOWKAT_AGENT_DIR}/conf/flowkat.conf"
JAVA_OPTS="${JAVA_OPTS} -Dobj_name=tomcat"

JVM Thread Dump를 Java 6 ~ 8 버전에서는 JVM 옵션 없이 기본 지원하지만, 8버전 이후 부터는 다음과 같이 JVM 옵션을 적용해야 합니다.

Java 9 ~ Java 15 버전
-Djdk.attach.allowAttachSelf=true
Java 16 버전
-Djdk.attach.allowAttachSelf=true
--add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED
Java 17 버전 이상
--add-opens=java.base/java.lang=ALL-UNNAMED
  • FLOWKAT_AGENT_DIRflowkat.agent.jar 파일을 포함하고 있는 디렉터리를 의미합니다.
  • 하나의 VM에서 여러 개의 Tomcat 인스턴스를 사용한다면 각각의 설정 파일을 정의합니다.
  • 위의 예처럼 -Dflokwat.config 환경변수를 통해 conf 파일을 지정할 수 있습니다.
  • 하나의 VM에서 모니터링 대상이 다수인 경우, 이름이 중복되지 않도록 obj_name 옵션으로 각각의 이름을 지정합니다.
  1. 설정 완료 후 애플리케이션 서버를 다시 시작합니다.
# Linux
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

# Windows
$CATALINA_HOME/bin/shutdown.bat
$CATALINA_HOME/bin/startup.bat
  1. 애플리케이션 서버 로그 파일과 에이전트 로그 파일을 통해 에이전트가 정상 작동하는지, 에러가 발생하지 않았는지 확인합니다. 일반적인 로그 파일의 위치는 다음과 같습니다.
    • $CATALINA_HOME/logs/catalina.out

Java 에이전트 제거

  1. catalina.sh(bat) 환경 설정에서 에이전트를 설정한 옵션을 삭제하고 Tomcat 서비스를 재기동합니다.
  2. 설치한 에이전트 디렉터리를 삭제합니다.
Tomcat 에이전트 삭제 예시
rm -rf /home/tomcat/flowkat/agent.java