경험/기술

[APM] 모니터링 도구 Scouter 도입

호야_ 2024. 2. 22. 18:02
728x90

애플리케이션의 성능 모니터링을 위해 다양한 도구를 사용하고 있다. 이번에 도입해 본 Scouter는 LG CNS에서 개발한 APM(Application Performance Monitoring) 도구로, 애플리케이션의 성능을 실시간으로 모니터링하고, 문제를 식별하여 해결하는 데 필수적인 인사이트를 제공한다.

APM 구조

  • Spring Boot: 3.0.11
  • Java: 17
  • WAS EC2: t4g.small (vCPU: 2, RAM: 2GB) (AMI: Amazon Linux 2 AMI (HVM))
  • APM EC2: t2.micro (vCPU: 1, RAM: 1GB) (AMI: Amazon Linux 2 AMI (HVM))

 

APM EC2 구성

ec2 생성은 다른 글에서도 너무 많이 다뤄서 넘어가겠다.

 

JAVA 8 설치

sudo yum install java-1.8.0-openjdk -y

 

Scouter 설치 및 Collector 실행

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

 

Releases · scouter-project/scouter

Scouter is an open source APM (Application Performance Management) tool. - scouter-project/scouter

github.com

2024.02.22 기준 최신 버전 v2.20.0

 

# 설치
wget https://github.com/scouter-project/scouter/releases/download/v2.20.0/scouter-all-2.20.0.tar.gz

# 압축 풀기
tar -xvf scouter-all-2.20.0.tar.gz

# 이동
cd scouter/server

# collector 실행
./startup.sh

 

WAS EC2 구성

WAS EC2는 기존에 SpringBoot + Java로 구성되어 있는 서버가 올라가 있다.

 

JAVA 17 설치

sudo yum install java-17-amazon-corretto

 

Scouter 설치

# 설치
wget https://github.com/scouter-project/scouter/releases/download/v2.20.0/scouter-all-2.20.0.tar.gz

# 압축 풀기
tar -xvf scouter-all-2.20.0.tar.gz

# 이동
cd scouter/agent.host/conf

 

Scouter Host conf 수정

# conf 수정
vi scouter.conf

--- scouter.conf --------------------

### scouter host configruation sample
net_collector_ip=*****
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는 APM EC2의 프라이빗 IPv4 주소를 넣어줬고,
# 다른 것들은 기본세팅이다. (주석만 풀어줌)

 

Scouter Host 실행

# 이동
cd ..

# host 실행
./host.sh

 

Scouter Client 접속

우선 접속을 하기 위해 APM EC2에서 인바운드 규칙을 설정해야 한다.
- client를 들어갈 로컬 pc ip (TCP)
- WAS EC2의 프라이빗 ip (TCP, UDP)
APM EC2 인바운드 규칙

윈도우 버전 다운로드 링크: https://github.com/scouter-project/scouter/releases/download/v2.20.0/scouter.client.product-win32.win32.x86_64.zip

다운로드하고 압축 해제한 후 scouter.exe를 실행한다.

  • Server Address: `EC2 퍼블릭 ip`:6100
  • ID: admin(초기값)
  • Password: admin(초기값)

앞서 설정한 host.agent는 os에 대한 에이전트로 cpu,  memory 등을   모니터링할  수 있다.

더보기

위 사진 같은 경우 곧 진행할 java.agent를 설정한 후라 다를 수 있다. memory도 없을 수 있는데 추가하는 방법은:

연결되어 있는 서버를 우클릭해서 추가해 주면 된다.

 

Java Agent conf 수정

# 이동
cd scouter/agent.java/conf

# conf 수정
vi scouter.conf

--- scouter.conf --------------------

### scouter java agent configuration sample
obj_name=WAS-01
net_collector_ip=*****
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

------------------------------------
# 위와 똑같이 net_collector_ip는 APM EC2의 프라이빗 IPv4 주소를 넣어줬고,
# 다른 것들은 기본세팅이다. (주석만 풀어줌)

 

Spring 서버 코드 수정

# 수정 전
nohup java -jar -Dserver.port=${TARGET_PORT} -Dspring.profiles.active=prod $JAR_NAME > $LOG_FILE 2>&1 &

# 수정 후
nohup java -javaagent:$SCOUTER/agent.java/scouter.agent.jar \
          -Dscouter.config=$SCOUTER/agent.java/conf/scouter.conf \
          -jar \
          -Dserver.port=${TARGET_PORT} \
          -Dspring.profiles.active=prod \
          $JAR_NAME > $LOG_FILE 2>&1 &

 

모니터링 결과 👨🏻‍💻 🔥

테스트로 보내본 결과

 

 

 

언제나 잘못된 설명이나 부족한 부분에 대한 피드백은 환영입니다🤍

728x90