본문 바로가기
APM/Scouter

[스카우터] Scouter 설치부터 WAS 연동까지..

by sangyeon 2022. 1. 17.
728x90

이번 글에서는 오픈소스 APM 툴인 Scouter에 대해 공부해보려 한다.

 

1. 스카우터란?

- 스카우터는 복잡한 N-Tier 환경의 웹 기반 시스템에 대해 효율적인 성능 모니터링 체계를 마련함으로써 시스템 자원의 활용도를 극대화 시키는 오픈소스 APM 툴이다.

 

1-1. 제품의 특성

  • 웹 어플리케이션 관리 (실시간 모니터링)
  • 비지니스 트랜잭션 관리 (성능/안정성)
  • 오픈소스 모니터링 및 확장 팩 (성능/안정성)
  • 사용 사례의 증가 (호환성/확장성)

 

1-2. 스카우터 활용

 

1-2-1. 서비스 모니터링

  • 동시 사용자
  • 응답 시간
  • 실시간 처리 현황

 

1-2-2. 리소스 모니터링

  • CPU, 메모리 사용량
  • DB 커넥션
  • 파일 I/O

 

1-2-3. 장애 분석 및 해결

  • 장애의 진단과 분석
  • 성능 개선
  • 안정화

 

1-2-4. Xlog와 트랜잭션 프로파일링

  • 실시간 분포도
  • 다이나믹 프로파일링
  • 트랜잭션 추적

 

2. 스카우터 구성 

이미지 출처 - https://acet.pe.kr/m/620

 

모듈 설명
Scouter Agent 모니터링 대상 시스템에 구성되며, 각종 성능 정보를 수집, 스카우터 서버로 전달하는 역할
Scouter Collector 에이전트로부터 실시간 모니터링 정보를 수집, 가공하며 실시간 대시보드 제공 및 통계정보 관리, 장애/에러 경보 등 관리에 필요한 각종 기능을 수행
Scouter Repository 서버에서 가공된 데이터는 데이터 형태에 따라 DB, File 시스템에 저장되며 이러한 데이터를 통해 시스템 분석에 필요한 각종 데이터 확보
Scouter Client 이클립스 기반의 클라이언트를 통해 시스템 모니터링 및 스카우터에 대한 관리를 수행

 

 

3. 스카우터 설치

3-1. 스카우터 설치 파일 다운로드

아래 github 사이트에서 설치파일 다운로드

https://github.com/scouter-project/scouter/releases/tag/v2.15.0

 

Release v2.15.0 · scouter-project/scouter

Important execute the command to run scouter client for Mac(OSX) xattr -cr scouter.client.app We will find out the solution without it. scouter client for Mac needs Java11+ Features [collector] ...

github.com

- scouter-all-2.15.0.tar.gz

혹은 scouter-min-2.15.0.tar.gz

 

 

3-2. 설치파일 압축 해제

[oracle@wlschsy-wls-0 scouter]# pwd
/u01/app/scouter

[oracle@wlschsy-wls-0 scouter]# tar xzvf scouter-all-2.15.0.tar.gz

[oracle@wlschsy-wls-0 scouter]# ls -arlt
total 32
drwxrwxr-x. 6 oracle oracle 4096 Jan 17 08:59 ..
drwxr-xr-x. 3 oracle oracle 4096 Jan 17 08:59 agent.batch
drwxr-xr-x. 5 oracle oracle 4096 Jan 17 08:59 webapp
drwxr-xr-x. 8 oracle oracle 4096 Jan 17 08:59 .
drwxr-xr-x. 4 oracle oracle 4096 Jan 17 08:59 agent.java_6_7
drwxr-xr-x. 8 oracle oracle 4096 Jan 17 09:04 server
drwxr-xr-x. 5 oracle oracle 4096 Jan 17 09:08 agent.host
drwxr-xr-x. 5 oracle oracle 4096 Jan 17 09:17 agent.java

디렉토리 정보

 

- server(collector) : Agent가 전송한 데이터 수집/처리

- agent.host : OS의 CPU, Memory, Disk 등의 성능 정보 전송

- agent.java : 실시간 서비스 성능 정보, Heap Memory, Thread 등 Java 성능 정보

- agent.java_6_7 : for java6, java7

- agent.batch : 배치 잡 모니터링

- webapp : rest api 독립 서버, server에 embedded로 실행 가능

 

 

3-3. server(collector) 설정 및 구동

$ scouter_home/server/conf/scouter.conf

[root@wlschsy-wls-0 conf]# pwd
/u01/app/scouter/server/conf


[root@wlschsy-wls-0 conf]# cat scouter.conf 
db_dir=/u01/app/scouter/server/data/
log_dir=/u01/app/scouter/server/logs/
net_udp_listen_port=6100
net_tcp_listen_port=6100


$ vi startup.sh
#!/usr/bin/env bash

nohup java -Xmx2048m -Xms2048m -classpath ./scouter-server-boot.jar scouter.boot.Boot ./lib > nohup.out &
sleep 1
tail -100 nohup.out


===============================================

$ Scouter collector 구동

[oracle@wlschsy-wls-0 server]$ ./startup
-bash: ./startup: No such file or directory
[oracle@wlschsy-wls-0 server]$ ./startup
-bash: ./startup: No such file or directory
[oracle@wlschsy-wls-0 server]$ ./startup.sh 
nohup: redirecting stderr to stdout
  ____                  _            
 / ___|  ___ ___  _   _| |_ ___ _ __ 
 \___ \ / __/   \| | | | __/ _ \ '__|
  ___) | (_| (+) | |_| | ||  __/ |   
 |____/ \___\___/ \__,_|\__\___|_|                                      
 Open Source S/W Performance Monitoring  
 Scouter version 2.15.0


* 기동 정지는 stop.sh


$ 프로세스 상태 확인
[oracle@wlschsy-wls-0 server]$ ps ax|grep scouter-server|grep -v grep
30691 pts/2    Sl     0:04 java -Xmx2048m -Xms2048m -classpath ./scouter-server-boot.jar scouter.boot.Boot ./lib

 

 

3-4. agent host 설정 및 구동

[oracle@wlschsy-wls-0 conf]$ pwd
/u01/app/scouter/agent.host/conf

$ 설정 확인
[oracle@wlschsy-wls-0 conf]$ cat scouter.conf 
### scouter host configruation sample
net_collector_ip=127.0.0.1         # Collector의 IP
net_collector_udp_port=6100     # Collector의 서버 udp port
net_collector_tcp_port=6100      # Collector의 서버 tcp port

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)
disk_warning_pct=88                # CPU 경고 임계치 (%)
disk_fatal_pct=92                     # CPU 에러 임계치 (%)


$ 스카우터 host 서버의 기동과 중지
[oracle@wlschsy-wls-0 agent.host]$ ./host.sh
nohup: redirecting stderr to stdout
  ____                  _            
 / ___|  ___ ___  _   _| |_ ___ _ __ 
 \___ \ / __/   \| | | | __/ _ \ '__|
  ___) | (_| (+) | |_| | ||  __/ |   
 |____/ \___\___/ \__,_|\__\___|_|                                      
 Open Source S/W Performance Monitoring  
 Scouter version 2.15.0
 
Configure -Dscouter.config=./conf/scouter.conf
Scouter Host Agent Version 2.15.0 2021-10-01 04:56 GMT
System JRE version : 1.8.0_311


$ 프로세스 상태 확인
[oracle@wlschsy-wls-0 agent.host]$ ps ax|grep scouter.host|grep -v grep
  764 pts/2    Sl     0:01 java -classpath ./scouter.host.jar scouter.boot.Boot ./lib

 

 

3-5. agent java 설정

[oracle@wlschsy-wls-0 conf]$ pwd
/u01/app/scouter/agent.java/conf

$ 설정 확인
[oracle@wlschsy-wls-0 conf]$ cat scouter.conf 
### scouter java agent configuration sample
obj_name=WLSCHSY_server_1                    # 감시 대상 서버 별칭
net_collector_ip=127.0.0.1                          # Collector의 IP
net_collector_udp_port=6100                     # Collector udp listen port
net_collector_tcp_port=6100                      # Collector tcp listen 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의 경우에는 client(WAS)가 기동하면서 실행된다.

 

 

3-6. Scouter agent.java 시작 및 종료

- 독립 실행이 아닌 WAS 실행시 attach 되어 실행 된다.

cat startManagerServer.sh

# Scouter agent
export AGENT_HOME="/u01/app/scouter/agent.java/"
JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:${AGENT_HOME}/scouter.agent.jar"
JAVA_OPTIONS="${JAVA_OPTIONS} -Dscouter.config=${AGENT_HOME}/conf/scouter.conf"

export JAVA_OPTIONS


$ ps -ef|grep weblogic
oracle    4093  4044 78 15:38 pts/0    00:00:34 /u01/jdk/bin/java -server -Dserver.name=WLSCHSY_server_1 -Dserver.port=9073 -Xms2g -Xmx2g -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1536m -XX:+UseG1GC -cp /u01/app/oracle/middleware/wlserver/server/lib/weblogic-launcher.jar -Dlaunch.use.env.classpath=true -Dweblogic.Name=WLSCHSY_server_1 -Djava.security.policy=/u01/app/oracle/middleware/wlserver/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Xloggc:/Log/WAS/WLSCHSY_domain/gc/gc.WLSCHSY_server_1.out -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Log/WAS/WLSCHSY_domain/heap -Djava.system.class.loader=com.oracle.classloader.weblogic.LaunchClassLoader -D_Offline_FileDataArchive=true -Dweblogic.connector.ConnectionPoolProfilingEnabled=false -Dcom.bea.wlw.netui.disableInstrumentation=true -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false -Dweblogic.system.BootIdentityFile=/u01/data/domains/WLSCHSY_domain/boot.properties -Dweblogic.threadpool.MinPoolSize=50 -Dweblogic.wsee.skip.async.response=true -Dweblogic.security.allowCryptoJDefaultJCEVerification=true -Dweblogic.security.allowCryptoJDefaultPRNG=true -Djava.security.egd=file:/dev/./urandom -Dweblogic.SocketReaders=3 -Dweblogic.MuxerClass=weblogic.socket.PosixSocketMuxer -Dweblogic.Chunksize=65536 -Doracle.jdbc.fanEnabled=false -XX:+DisableExplicitGC -javaagent:/u01/app/scouter/agent.java//scouter.agent.jar -Dscouter.config=/u01/app/scouter/agent.java//conf/scouter.conf

 

 

4. 스카우터 Windows Client 설치 후 모니터링

Scouter 클라이언트 설치 (모니터링 PC)

아래 링크를 통해 패키지 다운로드

https://github.com/scouter-project/scouter/releases/tag/v2.15.0

 

* 클라이언트 실행 시 주의

2.15 버전에서 이클립스 실행시 jdk 11버전이 필수이기 때문에 jdk 11을 설치하고 경로를 잡아줘야 한다.

scouter.ini 파일에 하기 빨간 색 부분으로 java 11 경로를 잡아준다.

C:\Users\syhwang\Desktop\scouter.client.product-win32.win32.x86_64\scouter.client
> scouter.ini 파일 수정 - 하기 빨간 색 부분 추가해 준다.

-vm 
C:\java\jdk-11.0.11\bin\javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.6.300.v20210813-1054.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.300.v20210828-0802
-data
@user.home/scouter
-vmargs
-Xms128m
-Xmx1024m
-XX:+UseG1GC
-Dosgi.requiredJavaVersion=1.8

- 접속 정보 > IP:6100

- 계정 > admin / admin

 

아래는 실행 완료 초기 화면(대시보드)

 

728x90