Application Performance Management는 웹 어플리케이션을 운영하는 시스템, 프로그램 성능을 측정하고 모니터링하는 도구
LG CNS에서 만들어 공개한 오픈소스 APM
https://github.com/scouter-project/scouter
▲ Scouter 구성도
Scouter는 네가지 모듈로 구성
Modules | Desc |
Collector | 에이전트로부터 실시간 모니터링 정보를 수집, 가공하며 실시간 대시보드 제공 및 통계정보관리, 장애/에러 경보 등 관리에 필요한 각종 기능 수행 |
Java Agent | 모니터링 대상 시스템(WAS)에 구성 되며, 각종 성능 정보를 수집, 스카우터 서버로 전달하는 역할 수행 |
Host Agent | CPU, Memory, 디스크 성능 정보를 Collector로 전송 |
Client | Collector에서 수집된 정보를 확인하는 클라이언트 |
https://github.com/scouter-project/scouter/releases 에서 최신버전(가이드 작성 기준 scouter-min-2.6.2.tar.gz) 다운로드 후 압축 풀기
[root@junoya junoya]# wget https://github.com/scouter-project/scouter/releases/download/v2.5.1/scouter-min-2.6.2.tar.gz // 다운로드 [root@junoya junoya]# tar xzf scouter-min-2.6.2.tar.gz // 압축 풀기 [root@junoya junoya]# mv scouter /opt/ // 이후 편의를 위해 scouter 폴더 이동 [root@junoya junoya]# cd /opt/scouter [root@junoya scouter]# ls -al // 압축푼 폴더 안 확인 drwxr-xr-x. 3 root root 210 6월 20 15:26 agent.host drwxr-xr-x. 4 root root 57 6월 20 15:26 agent.java drwxr-xr-x. 6 root root 4096 6월 20 15:26 server |
scouter/server/conf/scouter.conf 파일에 다음과 같이 내용 추가
# Agent Control and Service Port(Default : TCP 6100) net_tcp_listen_port=6100 // 포트 # UDP Receive Port(Default : 6100) net_udp_listen_port=6100 // 포트 # DB directory(Default : ./database) db_dir=./database # Log directory(Default : ./logs) log_dir=./logs |
서버 시작
[root@junoya server]# ./startup.sh nohup: redirecting stderr to stdout ____ _ / ___| ___ ___ _ _| |_ ___ _ __ \___ \ / __/ \| | | | __/ _ \ '__| ___) | (_| (+) | |_| | || __/ | |____/ \___\___/ \__,_|\__\___|_| Open Source S/W Performance Monitoring Scouter version 2.6.2 |
*정지는 stop.sh
scouter/agent.host/conf/scouter.conf 파일에 다음과 같이 주석 제거
### scouter host configruation sample net_collector_ip=127.0.0.1 net_collector_udp_port=6100 net_collector_tcp_port=6100 cpu_warning_pct=80 cpu_fatal_pct=85 cpu_check_period_ms=60000 cpu_fatal_history=3 cpu_alert_interval_ms=300000 disk_warning_pct=88 disk_fatal_pct=92 |
서버 시작
[root@junoya agent.host]# ./host.sh nohup: redirecting stderr to stdout ____ _ / ___| ___ ___ _ _| |_ ___ _ __ \___ \ / __/ \| | | | __/ _ \ '__| ___) | (_| (+) | |_| | || __/ | |____/ \___\___/ \__,_|\__\___|_| Open Source S/W Performance Monitoring Scouter version 2.6.2 Configure -Dscouter.config=./conf/scouter.conf Scouter Host Agent Version 2.6.2 2019-04-28 13:41 GMT System JRE version : 1.8.0_212 |
*정지는 stop.sh
scouter/agent.java/conf/scouter.conf 파일에 다음과 같이 주석 제거 및 서버 정보 입력
### scouter java agent configuration sample obj_name=WAS-01 // 모니터링 될 서버명(임의 지정) net_collector_ip=127.0.0.1 // Scouter 서버 IP net_collector_udp_port=6100 // Scouter 서버 TCP 포트 net_collector_tcp_port=6100 // Scouter 서버 UDP 포트 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 경로 확인
[root@junoya agent.java]# pwd /opt/scouter/agent.java |
<confluence installation-directory>/bin/setenv.sh 파일 마지막 줄에 다음 항목 추가
. . . CATALINA_OPTS="-Dconfluence.context.path=${CONFLUENCE_CONTEXT_PATH} ${CATALINA_OPTS}" CATALINA_OPTS="-XX:ReservedCodeCacheSize=256m -XX:+UseCodeCacheFlushing ${CATALINA_OPTS}" export CATALINA_OPTS #########################아래 부터 추가되는 내용############################################# JAVA_OPTS="-javaagent:/opt/scouter/agent.java/scouter.agent.jar" // Agent 위치한 경로 지정 uJAVA_OPTS="${JAVA_OPTS} -Dscouter.config=/opt/scouter/agent.java/conf/scouter.conf" // Agent 위치한 경로 지정 JAVA_OPTS="${JAVA_OPTS} -Datlassian.org.osgi.framework.bootdelegation=META-INF.services,com.yourkit,com.singularity.*,com.jprofiler,com.jprofiler.*,org.apache.xerces,org.apache.xerces.*,org.apache.xalan,org.apache.xalan.*,sun.*,com.sun.jndi.*,com.icl.saxon,com.icl.saxon.*,javax.servlet,javax.servlet.*,com.sun.xml.bind.*,javax.xml.*,scouter.*" export JAVA_OPTS |
Confluence 재시작
systemctl restart confluence.service Confluence 시작시 <confluence installation-directory>/logs/catalina.out 파일에서 다음과 같이 Scouter 구동 확인 가능 / ___| ___ ___ _ _| |_ ___ _ __ \___ \ / __/ \| | | | __/ _ \ '__| ___) | (_| (+) | |_| | || __/ | |____/ \___\___/ \__,_|\__\___|_| Open Source S/W Performance Monitoring Scouter version 2.6.2 20190620 14:49:18 [SCOUTER] loaded by system classloader 20190620 14:49:18 [SCOUTER] Version 2.6.2 2019-04-28 13:41 GMT_ENV_java8plus 20190620 14:49:18 [SCOUTER] jar:file:/opt/scouter/agent.java/scouter.agent.jar 20190620 14:49:18 [SCOUTER] objType:tomcat 20190620 14:49:18 [SCOUTER] objName:/junoya.i.curvc.com/WAS-01 20190620 14:49:18 [A113] Counter Collector Started (#19) 20190620 14:49:18 [A113] InteractionCounter Collector Started (#19) 20190620 14:49:18 [SCOUTER] Configure -Dscouter.config=/opt/scouter/agent.java/conf/scouter.conf 20190620 14:49:18 [A100] agent boot seed=x3oglpmt82t 20190620 14:49:18 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractAppService service.plug loaded #xhhabrt 20190620 14:49:18 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractHttpService httpservice.plug loaded #x1hg5o31 20190620 14:49:18 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractCapture capture.plug loaded #x1hn36kv 20190620 14:49:18 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractCapture springControllerCapture.plug loaded #xdonb7s 20190620 14:49:18 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractJdbcPool jdbcpool.plug loaded #xfi7537 20190620 14:49:18 [NONE] LoadJarBytes scouter.jdbc 33156 bytes 20190620 14:49:18 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractHttpCall httpcall.plug loaded #x18uihq9 20190620 14:49:18 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractCounter counter.plug loaded #x11splbj |