APM

APM Scouter 설치

gregorio 2018. 2. 23. 12:54

프로젝트를 진행하면서 서버에서 수행되는 Transaction을 모니터링하기 위해서 APM(Application Performance Tool)을 적용한다.


한국에서 가장 많이 사용하는 APM 툴은 Jenifer로 Trial License로 설치하여 성능을 모니터링을 할 수 있으나 Open Source Scouter를 설치하여 모니터링하는 것도 좋은 방법이라고 생각한다.


Scouter는 git hub(https://github.com/scouter-project/scouter)에 접속하면 다운로드를 받을 수 있고 설치 메뉴얼을 제공한다.


설치 메뉴얼에 따라 쉽게 설치가 가능하다.


Scouter 설치 방법


■ Scouter Download

https://github.com/scouter-project/scouter에서 다운로드 받는다.

최신 버전은 Java 1.8 이상을 지원하기 때문에 서버의 환경의 Jdk 버전을 지원하는 Scouter를 다운로드 받는다.

Jdk1.7을 사용하는 환경에서는 v1.7.3.1을 설치한다.


■ Scouter 압축해제

scouter-all-1.7.3.1.tar.gz 파일을 다운 받아 압축을 해제하면 다음과 같이 Folder가 생성된다(명령어 : tar -zxf scouter-all-1.7.3.1.tar.gz)

 - agent.batch : 배치 모니터링

 - agent.host : Resource(CPU, Memory) 모니터링

 - agent.java : WAS 모니터링

 - server : Collector


■ 설치전 준비사항

user 계정에 SCOUTER_AGENT_DIR을 다음과 같이 설정한다.


 export SCOUTER_AGENT_DIR=/scouter/agent.java


WAS(예:Tomcat)의 setenv.sh에 Agent를 등록한다(위치 : $(TOMCAT_HOME)/bin/setenv.sh


JAVA_OPTS=" ${JAVA_OPTS} -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar"

JAVA_OPTS=" ${JAVA_OPTS} -Dscouter.config=${SCOUTER_AGENT_DIR}/conf/scouter.conf"

JAVA_OPTS=" ${JAVA_OPTS} -Dobj_name=TOMCAT-WAS1"



■ Scouter Collector 설정

Scouter가 설치된 디렉토리의 server/conf 디렉토리로 이동한다.


vi Editor로  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



여기서 중요한 부분은 Collector가 listen하는 Port를 설정한다. Default로 6100을 사용하고 있으며, Collector가 설치되는 시스템에서 이미 6100 포트를 사용하면 다른 포트로 지정하여야 한다.


설정이 완료되면 server 디렉토리에서 startup.sh Shell을 실행한다.

./startup.sh


[tomcat server]$ ./startup.sh

nohup: redirecting stderr to stdout

  ____                  _

 / ___|  ___ ___  _   _| |_ ___ _ __

 \___ \ / __/   \| | | | __/ _ \ '__|

  ___) | (_| (+) | |_| | ||  __/ |

 |____/ \___\___/ \__,_|\__\___|_|

 Open Source S/W Performance Monitoring

 Scouter version 1.7.3.1

 


■ agent.host 설정

agent.host는 서버의 자원을 모니터링하는 Component 이다.


../agent.host/conf 파일로 이동하여 scouter.conf 파일을 오픈한다.


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


net_collector_ip는 Collector가 설치된 서버의 IP 주소를 설정한다.

net_collector_udp_port는 Collector가 Listen하고 있는 UDP Port를 설정한다.

net_collector_tcp_port는 Collector가 Listen하고 있는 TCP Port를 설정한다.


설정이 완료되면 ../agent.host/host.sh Shell을 수행한다.


■ agent.java 설정

agent.java는 WAS의 서비스를 모니터링하기 위한 Component이다.


../agent.java/conf 디렉토리에서 scouter.conf 파일을 오픈한다.

obj_name=TOMCAT-WAS1

net_collector_ip=127.0.0.1

net_collector_udp_port=6100

net_collector_tcp_port=6100

#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


obj_name는 WAS Instance이름이다. 

net_collector_ip는 Collector가 설치된 서버의 IP 주소를 설정한다.

net_collector_udp_port는 Collector가 Listen하고 있는 UDP Port를 설정한다.

net_collector_tcp_port는 Collector가 Listen하고 있는 TCP Port를 설정한다.


설정이 완료되면 WAS를 재기동한다.

WAS의 로그에 Scouter 관련된 로그가 생성된다.

  ____                  _

 / ___|  ___ ___  _   _| |_ ___ _ __

 \___ \ / __/   \| | | | __/ _ \ '__|

  ___) | (_| (+) | |_| | ||  __/ |

 |____/ \___\___/ \__,_|\__\___|_|

 Open Source S/W Performance Monitoring

 Scouter version 1.7.3.1


20180223 03:49:27 [SCOUTER] Version 1.7.3.1 2017-08-21 11:58 GMT

20180223 03:49:27 [SCOUTER] loaded by system classloader

20180223 03:49:27 [SCOUTER] jar:file:/engn001/scouter/agent.java/scouter.agent.jar

20180223 03:49:27 [SCOUTER] objType:tomcat

 

 이것으로 WAS와 Scouter의 연동이 완료되었다.


■ Scouter Client설치

Scouter Client는 Eclipse Plugin으로 개발되어 있기 때문에 https://github.com/scouter-project/scouter에서 클라이언트 환경에 맞는 scouter client를 다운로드 받는다.


다운로드가 완료되면 압축을 해제한 후 scouter.exe 파일을 실행하면 모니터링이 가능하다.