본문 바로가기

엔지니어링(TA, AA, SA)/성능과 튜닝

[성능] Scouter 주요 개념

Scouter는 애플리케이션 성능 모니터링 오픈소스 소프트웨어 입니다.

아래는 스카우터가 모니터링을 제공하는 실행 환경 흐름에 기반한 Scouter 구조도입니다.



 Modules

 설명

 Server(Collector)

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

 Host Agent

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

 Java Agent

 실시간 서비스 성능 정보 Heap Memory/Thread 등 Java 성능 정보



Scouter Agent


에이전트 호스트는 운영체제의 CPU/Memory 정보를 수집하는 역할을 수행합니다. 아래는 스카우터 Agent 설정파일의 예시입니다. (/opt/apm/scouter/agent.host/conf/scouter.conf)


# Scouter Server IP Address (Default: 127.0.0.1)

net_collector_ip=192.168.0.147    // Data 수집 (Collector & Server) 서버 IP Address


# Scouter Server Port (Default: 6100)

net_collector_udp_port=6100      // Data 수집 (Collector & Server) 서버 TCP Port

net_collector_tcp_port=6100       // Data 수집 (Collector & Server) 서버 UDP Port


# Log directory(Default: /logs)

log_dir=./logs


# Scouter Name(Default: tomcat1)

obj_name=jboss_standalone_ha_11_143    // agent name 설정


trace_interservice_enabled=true    // 서비스 연계 추적으로 HTTP으로 요청하는 서비스 간 연결 추적이 활성화됨.

hook_method_patterns=org.mybatis.jpetstore.*.*  // Hooking 하여 기록할 method의 pattern 정의 여러개인 경우 comma(,)로 구분.



모니터링하고 싶은 어플리케이션에 scouter agent.java 설정 방법입니다.


 설정

 설명

 -javaagent

 Byte code Instrumentation 기법으로 실제 실행 환경의 동작 모니터링을 위한 agent Library loading을 위한 설정

 -Dscouter.config

 agent.java의 설정 파일의 위치를 지정






하단 scouter 설명 출처: http://gunsdevlog.blogspot.com/2017/07/scouter-apm-2-12.html



1-1. Performance Counter(시계열 성능 메트릭)


Counter View를 Collector의 컨텍스트 메뉴에서 여는 경우, 해당 Object Type의 인스턴스 전체에 대해 하나의 차트로 보여줍니다 (TPS 차트를 선택한 경우, 동일한 Object Type인 tomcat1, tomcat2, ... tomcatX에 대한 TPS가 하나의 차트로 보여짐.)


Object Family: 모니터링 항목 특성에 따른 모니터링 대상의 종류 (Host / Java)

Object Type(Monitoring Group Type): Family의 하위 개념. 어떠한 대상들을 하나의 차트에서 모니터링 할 것인가 (Object Family가 Host라면, Object Type은 Linux, Windows 등 / Java라면, Tomcat, Jetty 등이 될 수 있음)


Object Type은 사용자 지정이 가능하여, 이를 이용해 한번에 모니터링할 대상을 동일한 Object Type으로 묶기도 함.



1-2. Object Request(원하는 시점에 대한 각 Object들의 특정 정보 요청)


요청할 수 있는 정보는 Object Family에 따라 달라지며, Scouter Client 사용자가 요청의 주체이다.




Java 모니터링 요소 일부


Queuing Time: Java프로그램(주로 Servlet Container)의 앞단의 reverse proxy나 gateway 서버로부터 java 프로그램으로 요청이 들어오기까지의 시간을 의미.

Recent User: Scouter에서는 최근 5분간 1번이라도 요청을 보낸 사용자수를 의미함.(측정시간 변경 가능)


Active Service EQ: 현재 시점에 얼마나 많은 서비스가 동시에 수행되는지를 한 눈에 파악하기 위한 이퀄라이저 형태의 차트. 이 차트를 더블클릭하게되면 현재 수행되는 서비스를 "Active Service View"에서 목록 형태로 보여주게 됨.

Active Service View: 서비스명과 수행중인 SQL 그리고 호출하고 대기중인 원격 Service URL이 보여짐. 코드의 어떤 부분이 수행중인지 알 수 있도록 Stack Trace 및 Thread의 Lock 정보등이 제공됨.





스카우터는 아래 그림과 같이 NMS + SMS + APM이 결합된 EMS 통합관제시스템으로 이해할 수 있음.






Scouter 설치 및 사용 가이드: https://www.slideshare.net/ienvyou/scouter-jboss