IT/Linux

Scouter를 활용한 Tomcat 성능 모니터링 구성

xego 2025. 3. 22. 16:21

Java 기반 웹 애플리케이션 서버(WAS)인 Tomcat에서 Scouter를 이용한 성능 모니터링 시스템의 구축 및 활용 방법을 확인해 보도록 하겠다.

 

■ Scouter

오픈 소스 APM(Application Performance Monitoring)
Java/JVM 애플리케이션을 위한 성능 모니터링 도구
애플리케이션의 실시간 성능을 모니터링하고 분석하는 데 사용
실시간 모니터링: JVM 메모리, CPU 사용률, 액티브 트랜잭션, 응답 시간 등을 실시간으로 모니터링
트랜잭션 추적: 요청부터 응답까지의 전체 처리 과정을 추적하여 병목 지점 식별
SQL 모니터링: 느린 쿼리 식별 및 데이터베이스 연결 상태 모니터링

 

■ Scouter 아키텍처

Agent (에이전트) Java Agent: Java 애플리케이션(Tomcat 등)에 장착
Host Agent: 서버 시스템 리소스(CPU, 메모리, 디스크 등) 모니터링
모니터링 대상 시스템에 설치되어 성능 데이터를 수집
Server (수집 서버) 에이전트로부터 데이터를 수집하고 저장
성능 데이터 분석 및 통계 처리
경고 발생 및 관리
Client (클라이언트) 수집된 데이터를 시각화하여 사용자에게 제공
실시간 대시보드, 트랜잭션 분석 도구 등 포함
Java Swing 기반 독립 애플리케이션으로 제공

* Java : "한 번 작성하여 어디서나 실행" 철학, Java가 실행되는 모든 플랫폼에서 일관된 모양과 동작을 유지함.

* Java swing : Java 프로그래밍 언어를 위한 그래픽 사용자 인터페이스(GUI) 라이브러리


■ Tomcat에 Scouter 설정

1. scouter 다운로드 

# 작업 디렉토리 생성
mkdir -p ~/scouter
cd ~/scouter

# Scouter 최신 버전 다운로드 (GitHub에서)
wget https://github.com/scouter-project/scouter/releases/download/v2.15.0/scouter-all-2.15.0.tar.gz

# 압축 해제
tar -xvf scouter-all-2.15.0.tar.gz

 

2. Scouter 디렉토리 구조 분석

[test@localhost scouter]$ ls
agent.batch  agent.host  agent.java  agent.java_6_7  server  webapp
agent.java: 일반 Java 애플리케이션 및 WAS(Tomcat) 모니터링용 에이전트
agent.java_6_7: Java 6/7 버전 호환 에이전트
agent.host: 서버 자원(CPU, 메모리, 디스크 등) 모니터링용 에이전트
agent.batch: 배치 작업 모니터링용 에이전트
server 디렉토리 : 에이전트로부터 데이터를 수집하고 저장하는 서버 컴포넌트

[test@localhost server]$ ls
38003.scouter  env.sh  logs       sample1.startcon.sh  sample2.startup.sh  scouter-server-boot.jar  startup.bat       startup_512m.sh
conf           extweb  nohup.out  sample1.startup.sh   sample2.stop.sh     startcon.bat             startup.sh        stop.bat
database       lib     plugin     sample2.readlink.sh   sample3.startup.sh  startcon.sh              startup_512m.bat  stop.sh

conf: 서버 설정 파일 디렉토리
database: 수집된 데이터가 저장되는 디렉토리
webapp 디렉토리 : 수집된 데이터를 웹 브라우저에서 시각화하고 분석하는 인터페이스

[test@localhost webapp]$ ls
README.txt  conf  extweb  lib  readlink.sh  scouter-webapp-2.15.0.jar  scouter.webapp.jar  startup.bat  startup.sh  stop.bat  stop.sh


conf: 웹 인터페이스 설정 파일 디렉토리
lib: 웹앱에 필요한 라이브러리 파일

■ Scouter 설정 및 실행 방법

1. 서버 설정 파일 편집

/scouter/server/conf

vi scouter.conf

# 서버가 수신할 포트 설정
net_tcp_listen_port=6100
net_udp_listen_port=6100

cd /scouter/server
./startup.sh

2. 호스트 에이전트 설정

/scouter/agent.host/conf

vi scouter.conf

# 연결할 서버 설정
net_collector_ip=127.0.0.1
net_collector_udp_port=6100
net_collector_tcp_port=6100

cd /scouter/agent.host
./host.sh

3, 에이전트 설정 및 Tomcat 연동

/scouter/agent.java/conf

vi scouter.conf

# 애플리케이션 이름 설정
obj_name=tomcat-test
# 연결할 서버 설정
net_collector_ip=127.0.0.1
net_collector_udp_port=6100
net_collector_tcp_port=6100
vi $TOMCAT_HOME/bin/catalina.sh

# Scouter Agent 설정
SCOUTER_AGENT_DIR="/scouter/agent.java"
CATALINA_OPTS="$CATALINA_OPTS -javaagent:$SCOUTER_AGENT_DIR/scouter.agent.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dscouter.config=$SCOUTER_AGENT_DIR/conf/scouter.conf"

 

 4. 인터페이스 접속

웹 브라우저에서 http://서버IP:6180에 접속하여 모니터링 인터페이스를 확인

6100 포트 - Collector 서버 포트 Scouter의 Collector 서버가 에이전트로부터 데이터를 수집하는 데 사용함.
net_collector_ip_port_id_pws=127.0.0.1:6100:admin:admin
> 웹앱이 IP 127.0.0.1, 포트 6100에서 실행 중인 Collector 서버에 연결한다는 의미
6180 포트 - Webapp 자체의 HTTP 서비스 포트 웹앱이 사용자에게 웹 인터페이스를 제공하는 데 사용하는 HTTP 서버 포트
HTTP 포트는 일반적으로 별도의 설정 라인에 명시되거나, 설정되지 않았을 경우 기본값인 6180을 사용함.

굳이 접속 포트를 바꾸고싶다면 scouter/webapp/conf/scouter.conf 에서 net_http_server_port=8080 해주자