Tomcat의 관리 및 모니터링 도구 Probe


Probe에 대해서

Probe는 Tomcat의 관리 및 모니터링 기능을 하는 도구이다. 어플리케이션 상태, 데이터 소스, 배포, 시스템, 연결 등 다양한 기능을 제공한다.

(이런 도구가 있다는 것을 필자는 이번에 처음 알게 되었고, 궁금해서 더 조사해 보기로 하였다.)

Probe에 대한 자료

Probe 자료는 잘 사용되지 않고 있어서 그런지 인터넷 검색을 하여도 잘 나오지 않았다. 겨우겨우 찾아 낸 사이트가 github 였다.

Probe 설치해 보기

여기에 나온 내용으로 Probe 설치 테스트를 할 수 있었다. 설치 방법은 아래와 같다.

  1. Probe 소스 파일을 아래와 같이 git clone 명령으로 내려 받는다.
git clone https://github.com/psi-probe/psi-probe.git

명령어를 실행하면 아래와 같다.

kimkc@kimkcui-MacBookPro probe % git clone https://github.com/psi-probe/psi-probe.git
Cloning into 'psi-probe'...
remote: Enumerating objects: 54626, done.
remote: Counting objects: 100% (1030/1030), done.
remote: Compressing objects: 100% (499/499), done.
remote: Total 54626 (delta 564), reused 927 (delta 498), pack-reused 53596
Receiving objects: 100% (54626/54626), 33.42 MiB | 10.71 MiB/s, done.
Resolving deltas: 100% (38049/38049), done.
kimkc@kimkcui-MacBookPro probe %
  1. probe 프로젝트를 아래와 같이 maven 빌드를 실행한다.
mvn package

빌드를 진행하면 아래와 표시된다.

kimkc@kimkcui-MacBookPro psi-probe % mvn package
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] psi-probe                                                          [pom]
[INFO] psi-probe-core                                                     [jar]
[INFO] psi-probe-rest                                                     [jar]
[INFO] psi-probe-tomcat7                                                  [jar]
[INFO] psi-probe-tomcat85                                                 [jar]
[INFO] psi-probe-tomcat9                                                  [jar]
[INFO] psi-probe-web                                                      [war]
[INFO] 

(중간 생략)

[INFO] Reactor Summary for psi-probe 3.5.5-SNAPSHOT:
[INFO] 
[INFO] psi-probe .......................................... SUCCESS [  1.573 s]
[INFO] psi-probe-core ..................................... SUCCESS [ 20.977 s]
[INFO] psi-probe-rest ..................................... SUCCESS [  1.375 s]
[INFO] psi-probe-tomcat7 .................................. SUCCESS [  4.093 s]
[INFO] psi-probe-tomcat85 ................................. SUCCESS [  3.823 s]
[INFO] psi-probe-tomcat9 .................................. SUCCESS [  3.801 s]
[INFO] psi-probe-web ...................................... SUCCESS [  4.559 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  40.441 s
[INFO] Finished at: 2021-06-30T16:11:58+09:00
[INFO] ------------------------------------------------------------------------
kimkc@kimkcui-MacBookPro psi-probe %

위와 같이 모든 프로젝트가 “SUCCESS"라고 표시가 된다면 제대로 완료된 거다.

  1. tomcat 사이트에서 다운 받아서, 적당한 디렉토리에 파일 압축을 푼다.

여기서는 tar.gz 파일 다운 받아서 아래 명령어로 압축을 풀었다.

tar -xvf apache-tomcat-8.5.68.tar.gz
kimkc@kimkcui-MacBookPro probe % tar -xvf apache-tomcat-8.5.68.tar.gz
x apache-tomcat-8.5.68/conf/
x apache-tomcat-8.5.68/conf/catalina.policy
x apache-tomcat-8.5.68/conf/catalina.properties
x apache-tomcat-8.5.68/conf/context.xml
x apache-tomcat-8.5.68/conf/jaspic-providers.xml

압축이 모두 풀리면 파일 내용을 확인 한다.

kimkc@kimkcui-MacBookPro apache-tomcat-8.5.68 % cd /Users/kimkc/dev/probe/apache-tomcat-8.5.68 
kimkc@kimkcui-MacBookPro apache-tomcat-8.5.68 % ls
BUILDING.txt    LICENSE         README.md       RUNNING.txt     conf            logs            webapps
CONTRIBUTING.md NOTICE          RELEASE-NOTES   bin             lib             temp            work
kimkc@kimkcui-MacBookPro apache-tomcat-8.5.68 %
  1. 이제 {tomcat 디렉토리}/webapps에 probe로 빌드한 war 파일을 넣는다.

probe war 파일은 아래 디렉토리에 위치한다.

{probe 소스 코드디렉토리}/psi-probe-web/target/probe.war

war파일을 톰켓 webapps에 넣는다.

kimkc@kimkcui-MacBookPro psi-probe % cp ./psi-probe-web/target/probe.war ../apache-tomcat-8.5.68/webapps
  1. 마지작으로 톰켓 사용자 정보파일(apache-tomcat-x.x.x/conf/tomcat-users.xml)에서 role 정보를 아래와 같이 추가한다.
(생략)
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
(중간 생략)

  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-status"/>
  <user username="devkuma" password="1234" roles="manager-gui,manager-script,manager-status"/>

</tomcat-users>

이 tomcat의 probe 계정은 사용자명 “devkuma"이고 비밀번호가 “1234"이 된다.

위 정보를 넣지 않으면 probe 웹에 접근할 수 없게 된다.

  1. 이제 톰켓을 재기동한다.
kimkc@kimkcui-MacBookPro bin % ./startup.sh 
Using CATALINA_BASE:   /Users/kimkc/dev/probe/apache-tomcat-8.5.68
Using CATALINA_HOME:   /Users/kimkc/dev/probe/apache-tomcat-8.5.68
Using CATALINA_TMPDIR: /Users/kimkc/dev/probe/apache-tomcat-8.5.68/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Using CLASSPATH:       /Users/kimkc/dev/probe/apache-tomcat-8.5.68/bin/bootstrap.jar:/Users/kimkc/dev/probe/apache-tomcat-8.5.68/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
kimkc@kimkcui-MacBookPro bin %

아래 링크로 들어가봐서 화면이 열리면 제대로 설치된 것이다.

http://localhost:8080/probe/

Probe를 통해서 웹어플리케이션(.war) 파일을 배포하기

  1. 아래 위치에 이동한다.
http://10.10.100.158:8080/probe/adm/deploy.htm
  1. Select a .war file to upload *에 웹 서비스 war 파일을 선택한다.

  2. Context name (ex. /dummy)을 넣는다.

  3. “Deploy” 버튼을 클릭한다.

  4. 위에 입력한 대로 서비스 실행되는지 확인한다. Context name/dummy로 넣었다면 웹 주소는 아래와 같게 된다.

http://10.10.100.158:8080/dummy

주의: Probe로 통해서 배포를 하게 되면 Tomcat 자체가 재시작되지 않고, 웹어플케이션 war 파일만 교체해 주어서 웹 서비스가 다시 올라가게 된다. 이 과정에 서비스에 잠시 멈춤 현상이 발상하게 되기에 무중단 배포라고 볼수 없다. 어째듯, 간단히 테스트로써 배포 기능을 사용하는 것은 괜찮을 지라도 이를 이용해서 실제 서비스를 배포해서는 안된다.