Scouter
Scouter는 APM(Application Performance Management) 소프트웨어로 서버의 성능을 모니터링 하기위한 도구이다.
오픈소스여서 무료로 사용할 수 있다.
Concept
Scouter Server (Collector)
모니터링할 데이터를 수집하는 서버이며, 데이터는 자체 제작된 내부 DB에 저장된다.
Scouter Agent
Scouter Agent에는 Host Agent와 Java Agent가 있다.
Host Agent : CPU, MEMORY, DISK 의 데이터를 전달한다.
Java Agent : Heaps, TPS, Response time, Service Profile 등의 데이터를 전달한다.
Scouter Client
스카우터 서버에 접속하여 수집된 정보를 확인할 수 있는 소프트웨어이다.
설치 및 구동
설치
wget https://github.com/scouter-project/scouter/releases/download/v2.15.0/scouter-all-2.15.0.tar.gz
tar -xvzf scouter-all-2.15.0.tar.gz
설정 및 구동 - Scouter Server
/scouter$ ls
agent.batch agent.host agent.java agent.java_6_7 server webapp
#server 설정파일로 이동
cd server/conf
sudo vi scouter.conf
#다음 입력
db_dir=/u01/app/scouter/server/data/
log_dir=/u01/app/scouter/server/logs/
net_udp_listen_port={SCOUTER_SERVER_PORT}
net_tcp_listen_port={SCOUTER_SERVER_PORT}
#실행
./startup.sh
#정상 실행 확인
ps ax|grep scouter-server|grep -v grep
결과
설정 및 구동- agent host
cd .../scouter/agent.host/conf
sudo vi scouter.conf
##다음 입력
net_collector_ip=127.0.0.1 # Collector의 IP, 이 서버 내에서 Scouter server를 구동중이므로 localhost 값을 넣는다.
net_collector_udp_port={SCOUTER_SERVER_PORT} # Collector의 서버 udp port
net_collector_tcp_port={SCOUTER_SERVER_PORT} # Collector의 서버 tcp port
#CPU
cpu_warning_pct=80 # CPU 경고 임계치
cpu_fatal_pct=85 # CPU 에러 임계치
cpu_check_period_ms=60000 # CPU 감시 주기 (ms)
cpu_fatal_history=3 # CPU 알림 누적 카운트
cpu_alert_interval_ms=300000 # CPU 알림 주기 (ms)
#Memory
mem_alert_enabled=true
mem_warning_pct=90
mem_falat_pct=90
#Disk
disk_warning_pct=88 # CPU 경고 임계치 (%)
disk_fatal_pct=92 # CPU 에러 임계치 (%)
## 구동
./host.sh
##정상 실행 확인
ps ax|grep scouter.host|grep -v grep
설정 및 구동 - agent.java
cd .../scouter/agent.java/conf
sudo vi scouter.conf
##다음 입력
## Agent Name
obj_name=dongaribang-dev
## Scouter APM Address
net_collector_ip=127.0.0.1
net_collector_udp_port={SCOUTER_SERVER_PORT}
net_collector_tcp_port={SCOUTER_SERVER_PORT}
hook_method_patterns=sample.mybiz.*Biz.*,sample.service.*Service.*
trace_http_client_ip_header_key=X-Forwarded-For
profile_spring_controller_method_parameter_enabled=false
hook_exception_class_patterns=my.exception.TypedException
profile_fullstack_hooked_exception_enabled=true
hook_exception_handler_method_patterns=my.AbstractAPIController.fallbackHandler,my.ApiExceptionLoggingFilter.handleNotFoundErrorResponse
hook_exception_hanlder_exclude_class_patterns=exception.BizException
## agent.java 구동의 경우 WAS 가 작동되면서 실행된다.
Tomcat 설정
SpringBoot 에서는 내장 Tomcat을 사용하기 때문에 별도의 파일이 없어서, 빌드시 embedded Tomcat에 scouter 와 연동될 수 있는 속성을 넣어줘야한다.
java -javaagent: {path}/scouter/agent.java/scouter.agent.jar \
-Dscouter.config={path}/scouter/agent.java/conf/scouter.conf \
-Dobj_name=dongaribang-dev \
-jar 실행파일.jar
그러나 java.netUnknownHostException:127.0.0.1 이 발생하여서 WAS 는 모니터링이 되지 않았다.
포트도 열려있는지 확인하고, localhost DNS 설정이 잘 되어있는지도 확인하고 했는데 3시간동안 디버깅한 결과는 java에서 설정파일을 읽을 때 ip 주소 옆에 있는 주석도 같이 읽어서 발생한 문제였다.. 주석을 제거해주니 Scouter Client 에서 OS 정보와 WAS 정보를 둘 다 확인할 수 있게 되었다.
Uploaded by N2T