티스토리 뷰

728x90
반응형

 포스팅은 오픈소스 APM Tool인 Scouter를 설치하고 WildFly와 연동하는 가이드입니다. 


Scouter는 "개발자를 위한 APM"이라는 목적에 맞게 어플리케이션 성능을 모니터링 할 수 있는 자유도가 높은 툴 입니다.

먼저, Scouter는 아래와 같은 모듈들로 구성됩니다.

 Modules

 설명

 Server (Collector)

 Agent가 전송한 데이터 수집/처리

 Host Agent

 OS의 CPU,Memory,Disk 등의 성능 정보 전송

 Java Agent

 실시간 서비스 성능 정보와 Heap Memory, Thread 등의 Java 성능정보

 Client (Viewer)

 수집된 성능 정보를 확인하기 위한 Client 프로그램 

각 서버에 설치된 Scouter의 Agent들이 성능 데이터를 Collector로 전송하며, 사용자는 Client 프로그램을 통해 성능 데이터를 봅니다.

그럼 설치를 해보도록 하겠습니다. 

1. 다운로드

https://github.com/scouter-project/scouter/releases/

아래와 같이 scouter-all , scouter.client.product를 다운로드 받습니다. client는 OS에 맞게 선택하시면 됩니다.

 


2.scouter-all 압축을 풀면 아래와 같이 확인됩니다.

[wildfly@k8s-worker~/scouter$]ls -al

total 12

drwxrwxr-x.  8 wildfly wildfly  111 Jan  3 15:26 .

drwx------. 25 wildfly wildfly 4096 Jan  8 11:00 ..

drwxr-xr-x.  3 wildfly wildfly  154 Jan  3 15:26 agent.batch

drwxr-xr-x.  5 wildfly wildfly 4096 Jan  4 10:11 agent.host

drwxr-xr-x.  5 wildfly wildfly  105 Jan  3 18:11 agent.java

drwxr-xr-x.  4 wildfly wildfly   57 Jan  3 15:26 agent.java_6_7

drwxr-xr-x.  8 wildfly wildfly 4096 Jan  4 10:09 server

drwxr-xr-x.  5 wildfly wildfly  206 Jan  3 15:26 webapp

[wildfly@k8s-worker~/scouter$]pwd

/home/wildfly/scouter


3.Scouter server 구성하기 

/home/wildfly/scouter/server 내의 scouter.conf 파일을 수정합니다. 

-Agent Control and Service Port : scouter 는 에이전트에서 서버로 데이터를 전달할 때 udp 와 tcp port 를 사용합니다. 그리고, 두개의 프로토콜은 방식이 다르기 때문에 같은 값으로 지정해도 전혀 문제는 없습니다. 

-DB directory : xlog나 profile 등의 데이터들을 저장함

-Log directory : Scouter 로그경로

# 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 D


# Log directory(default : ./logs)

log_dir=./logs


4.Scouter host 설정하기

/home/wildfly/scouter/agent.host내의 scouter.conf 파일을 수정합니다.

# Scouter Server Port (Default : 6100)

net_collector_udp_port=6100

net_collector_tcp_port=6100


# Log directory (Default : ./logs)

log_fir=./logs


5.Scouter java agent 설정하기 

/home/wildfly/scouter/agent.java내의 scouter.conf 파일을 수정합니다.

- obj_name : scouter모니터링 화면상에서 확인할 수 있는 jvm agent 의 이름


[wildfly@k8s-worker~/scouter/agent.java/conf$]cat scouter.conf

### scouter java agent configuration sample

obj_name=Wildfly

net_collector_ip=172.21.70.24

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


standalone.conf

#

# Specify options to pass to the Java VM.

#

if [ "x$JAVA_OPTS" = "x" ]; then

   JAVA_OPTS="-Xms60m -Xmx70m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/log/wildfly/log/gc.log-"`date +%Y-%m-%d`

   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS,scouter -Djava.awt.headless=true"

   #JAVA_OPTS=" $JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,scouter"

   JAVA_OPTS=" $JAVA_OPTS -Dscouter.config=/home/wildfly/scouter/agent.java/conf/scouter.conf"

   JAVA_OPTS=" $JAVA_OPTS -javaagent:/home/wildfly/scouter/agent.java/scouter.agent.jar"

   export JAVA_OPTS=" $JAVA_OPTS -Dobj_name=WildFly"

else

   echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"

fi


http://gunsdevlog.blogspot.com/2018/05/scouter-apm-xlog-howto.html

728x90
반응형