XLog 보는 방법
https://github.com/scouter-project/scouter/blob/master/scouter.document/client/Reading-XLog_kr.mdScouter 에서 응답시간 분포 그래프를 XLog 라고 부른다. XLog 는 Transaction Log 라는 의미에서 2004년에 처음 만들어졌다. XLog 는 전체 트랜잭션을 한눈에 파악할 수 있고 느린 트랜잭션을 선별하여 조회할 수 있기 때문에 응용 프로그램을 튜닝하는데 가장 효과적인 방법이라 할 수 있다.
XLog 차트는 하나의 트랜잭션(서비스 수행)을 하나의 점으로 표현하는 차트이다. 세로축은 트랜잭션이 수행된 응답시간, 가로축은 트랜잭션의 종료시간이다. 화면의 그래프는 일정시간(2초) 간격으로 Reload 된다. 이때 그래프는 좌측으로 쉬프트 된다.
위 화면에서처럼 왼쪽마우스 버튼을 이용하여 드레그하면 일부 점들을 선별하여 선택할 수 있다. 이렇게 선택된 트랜잭션들은 화면처럼 리스트로 나타난다. 리스트에서 하나를 선택하면 해당 트랜잭션에 대한 상세 정보를 볼 수 있다.
APM (Application Perpermance Monitoring) 은 어플리케이션 성능을 모니터링 할 수 있는 툴이다. 공공/금융 기업은 주로 제니퍼(Jennifer)라는 APM(상용)을 많이 사용한다. 스카우터는 이 중 톰캣 또는 JBoss 같은 톰캣 계열 어플리케이션 서버에 한정되어 사용할 수 있는 APM 모니터링 툴이다.
Scouter 소개 (1)
스카우터는 LG CNS에서 개발한 오픈소스 APM이다. 간단한 설치에 비해 직관적이고 다양한 모니터링 기능을 제공하며 오픈소스이기 때문에 누구나 쉽게 사용할 수 있다.
1. scouter 다운로드
scouter 릴리즈 페이지에서 최신버전을 다운로드한다.
다운로드 받고 압축을 풀어준다. 그럼 scouter 폴더가 생성되고, 안에 들어가보면 다음과 같은 폴더를 볼 수 있다.
2. Collecter 서버 실행
/server/startup.sh 로 collector 서버를 실행할 수 있다.
netstat -an | grep 6100 을 해보면 scouter server가 LISTEN하고 있는 것을 알 수 있다.
pc에 클라이언트 프로그램을 다운받는다. 버전 2.15.0이 설치가 안 돼서 버전 2.12.0.1을 다운받았다.
압축을 풀고 scouter.exe을 실행시키면 ID와 Password를 입력하라고 나오는데 기본값은 둘 다 admin 이다.
또한 접속할 서버의 ip주소를 적어주고 접속하면 scouter의 object에서 확인할 수 있다.
4. Host Agent 실행
/scouter/agent.host/conf
설정파일에 Collector의 ip와 port 정보를 설정한다.
기본 port 값이 6100이므로, Collector 설치시 port 정보를 변경하지 않았다면 port 설정은 하지 않아도 된다.
./host.sh 로 Host Agent를 시작한다.
5. Java Agent 실행
나는 이중화를 위해 8080, 8081, 8082, 8083 포트가 모두 하나의 스프링부트 어플리케이션을 띄우도록 설정해놓았다.
그러므로 각 포트마다 모니터링을 해야 하므로 conf 파일을 수정하여 각 포트와 연결되도록 설정할 것이다.
포트가 4개이므로 conf파일을 4개 만든다.
1) /scouter/agent.java/conf
기존에 있던 testcase-scouter.conf 를 제외하고 scouter1.conf 부터 scouter4.conf 파일 4개를 만들었다.
안에 내용은 동일한데, obj_name만 변경해주었다.
2) tomcat의 bin/catalina.sh 파일 수정
Scouter와 연동할 tomcat의 bin/catalina.sh 파일을 vi 편집기로 열어서 옵션을 추가해준다.
나는 톰캣을 두 개 설치했기 때문에 8083포트로 연결되는 톰캣의 파일을 수정해주었다.
3) 톰캣의 /bin/startup.sh 로 가동해준다.
두 톰캣을 각각 가동해주면 클라이언트 프로그램에서 -Dobj_name로 설정해준 이름이 뜨게 되고 8080, 8083 포트로 접속했을 경우를 모니터링할 수 있다.
나머지 8081과 8082포트는 젠킨스에서 빌드 시 쉘에 추가해주면 되는데, -DScouter.config로 conf파일을 연결해주고
-Dobj_name으로 클라이언트에 보여질 이름을 설정해주면 된다.
이렇게 작성하고 젠킨스에서 배포하면 8081, 8082 포트가 켜지고 클라이언트에서 각 포트를 모니터링 할 수 있는 것이다.
-------------------------------------------------------------------------------------------------------------------------------------------
1. 오픈소스 APM 툴 스카우터 소개 (2)
- 스카우터는 복잡한 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. 스카우터 구성
| 모듈 | 설명 |
| 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
github.com
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
아래는 실행 완료 초기 화면(대시보드)


















