728x90
애플리케이션의 성능 모니터링을 위해 다양한 도구를 사용하고 있다. 이번에 도입해 본 Scouter는 LG CNS에서 개발한 APM(Application Performance Monitoring) 도구로, 애플리케이션의 성능을 실시간으로 모니터링하고, 문제를 식별하여 해결하는 데 필수적인 인사이트를 제공한다.
- 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
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)
윈도우 버전 다운로드 링크: 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(초기값)
더보기
위 사진 같은 경우 곧 진행할 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