APM
Application Performance Management/Monitoring 의 줄임말로써, 애플리케이션(시스템, 응용 소프트웨어)의 성능과 서비스 안정성을 감시하고 관리하는 솔루션을 말한다.
사내에서 APM 툴로 오픈소스인 스카우터(Scouter)를 활용하였다.
스카우터는 LG CNS에서 개발한 오픈소스 APM이다. 간단한 설치 및 직관적이고 다양한 모니터링 기능을 제공하며 오픈소스이기 때문에 누구나 쉽게 사용할 수 있다.
1. Scouter 다운로드
https://github.com/scouter-project/scouter/releases
Scouter 릴리즈 페이지에서 최신 버전을 다운로드 한다.
- scouter-all-[version].tar.gz : Scouter Collector와 Agent를 포함하는 압축파일
- scouter.client.product-[os].tar.gz : 각 OS별 Client(Viewer) 프로그램
2. Scouter Server 설치 및 가동
scouter-all-[version].tar.gz 압축을 풀어준뒤, scouter server를 실행한다.
startup.sh 또는 startup.bat 실행하면 된다.
로컬에서 다운로드받은 tar.gz 파일을 리눅스 서버에 전송하기 위해 아래와 같이 입력하여 압축 파일을 전송한 뒤 scouter server를 실행하였다.
### 로컬 -> 서버로 파일 단일 전송
> scp [전송할 파일 경로] [유저명]@[IP주소]:[받을 경로]
전송할 파일 경로는 절대경로를 명시한다.
### tar.gz 압축 풀기
> tar -xvf [파일명]
netstat -an | grep 6100 을 해보면 Scouter Server가 LISTEN 하고 있는 것을 알 수 있다.
3. Scouter Client 실행
- scouter.client.product-[os].tar.gz의 압축을 풀고 실행한다.
- 맥용 클라이언트는 Java 11 버전 이상이어야 한다.
- 접속할 Scouter Serve의 IP나 도메인을 입력한다.
- ID와 Password를 입력한다.
기본값 : admin / admin
4. Hose Agent 실행
- Host Agent 실행 전에 먼저 Collector 접속 설정이 필요하다.
- 설정 파일에 Collector의 IP와 Port 정보를 설정한다.
- 설정 파일(default) : [scouter-dir]/agent.host/conf/scouter.conf
### scouter hose configuration
net_collector_ip=[IP정보]
net_collector_udp_port=6100
net_collector_tcp_port=6100
- net_collector_ip에는 Collector 접속 IP나 도메인을 기입한다.
- 기본 port 값이 6100이므로, Collector 설치시 port 정보를 변경하지 않았다면 port 설정은 하지 않아도 된다.
5. Java Agent 실행
Java Agent는 Heap Memory, Thread 등의 Java Application의 성능 정보를 파악할 수 있다.
tomcat 위에서 기동할 application을 모니터링 하기 위해 scouter agent를 설치 및 설정해보자.
host agent를 설치시 scouter 폴더에 agent.java 폴더가 있는데 해당 폴더가 java agent 작업을 할 때 살펴봐야 하는 부분이다. 해당 경로에도 conf 폴더가 있고 scouter.conf 파일에서 collector 서버와 연결을 해주는 설정을 해주어야 한다.
### scouter java agent configuration sample
#obj_name=WAS-01
#net_collector_ip=[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
tomcat 에도 catalina.sh 나 startup.sh 파일에서 scouter agent의 정보를 넣어준다.
export SCOUTER_AGENT_DIR=[파일경로]/agent.java
JAVA_OPTS=" ${JAVA_OPTS} -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar"
JAVA_OPTS=" ${JAVA_OPTS} -Dscouter.config=${SCOUTER_AGENT_DIR}/conf/scouter1.conf"
JAVA_OPTS=" ${JAVA_OPTS} -Dobj_name=8080"
이후 서버 재기동 및 스카우터도 시작한다.
/tomcat/bin/startup.sh 및 scouter/server/startup.sh 를 실행하면 된다.
/ ___| ___ ___ _ _| |_ ___ _ __
\___ \ / __/ \| | | | __/ _ \ '__|
___) | (_| (+) | |_| | || __/ |
|____/ \___\___/ \__,_|\__\___|_|
Open Source S/W Performance Monitoring
Scouter version 2.20.0
20240620 13:55:33 [SCOUTER] Version 2.20.0 2023-05-29 05:14 GMT_ENV_java8plus
20240620 13:55:33 [SCOUTER] loaded by system classloader
20240620 13:55:33 [SCOUTER] jar:file:/APP/scouter/agent.java/scouter.agent.jar
20240620 13:55:33 [SCOUTER] objType:tomcat
20240620 13:55:33 [SCOUTER] objName:/devRCS/8080
20240620 13:55:33 [A113] Counter Collector Started (#19)
20240620 13:55:33 [A113] InteractionCounter Collector Started (#19)
▶▶ 클라이언트 프로그램 실행 ◀◀
Client 에 들어가서 보면 host agent 아래에 톰캣을 상징하는 고양이가 들어가 있다면 정상적으로 실행된 것이다.
'Etc > Etc' 카테고리의 다른 글
[Redis] 레디스에 대해 알아보자 (1) | 2024.06.07 |
---|---|
[Etc] IntelliJ에서 Spring Framework 프로젝트를 Gradle Project로 변경하는 방법 (0) | 2023.09.13 |
[Etc] Intellij Gradle Project 셋팅 (2) | 2023.09.12 |
[Etc] MacBook M2 초기 환경설정 (개발자 필수 설치파일 추천) (0) | 2023.05.22 |
[MAC] shell 파일 생성하기 (0) | 2023.02.17 |
최근댓글