경험/기술

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

2024. 1. 17.
목차
  1. APM EC2 구성
  2. Java 8 설치
  3. Hbase 설치
  4. Java 11 설치
  5. Collector 설치
  6. Web 설치
  7. WAS EC2 구성
  8. Agent 설치
  9. 기존 JAR 실행시키는 부분 수정
  10. Pinpoint Web 확인
  11. 핀포인트 구성 중 이슈 정리
728x90

APM

기존에 CI/CD를 구성하며 올려줬던 WAS에 분산 환경 APM 도구이며 네이버에서 만든 pinpoint를 도입하며 겪었던 경험을 공유하고자 한다.

  • Spring Boot: 3.0.11
  • java: 17
  • WAS EC2: t4g.small (vCPU: 2, RAM: 2) (AMI: Amazon Linux 2 AMI (HVM))
  • APM EC2: t4g.small (vCPU:2, RAM: 2) (AMI: Amazon Linux 2 AMI (HVM))
더보기

처음에는 APM EC2는 t2.micro로 구성했는데 RAM 1기가 이상을 사용해서 바로 터져버려서 t4g.small로 업그레이드.. 😅 (2기가도 부족한 것 같다, 매우 불안정..)

아무 요청도 없고 실행만 시켜둔 상태
테스트로 health-check만 4-5번 정도 보냈을 때..

 

APM EC2 구성

  • AMI: Amazon Linux 2 AMI (HVM)를 선택
  • t4g.small을 사용하기 위해서 아키텍처는 64비트(Arm) 선택
  • 키 페어는 새 키 페어를 생성하거나 기존에 있는 것을 사용 (생성하는 것을 추천)
  • SSH 접속은 보안을 위해 내 IP로 설정
  • 스토리지는 프리티어가 30GB까지 지원하기 때문에 최대로 설정
  • 나머지는 전부 기본값으로 설정

EC2의 보안 > 인바운드 규칙에서 9991 ~ 9993까지는 필수로 포함!

Agent가 Collector로 로그 전송을 할 때 사용하는 tcp 포트가 9991 ~ 9993까지가 기본값으로 되어있다.

 

Java 8 설치

sudo yum install java-1.8.0-openjdk -y
sudo yum install java-1.8.0-openjdk-devel -y

환경변수 설정
readlink -f /usr/bin/java

sudo vi /etc/profile

# 맨 아래에 추가
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-2.amzn2.0.1.aarch64 # 이 부분이 다를 수도 있음
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

적용
source /etc/profile

확인
echo $JAVA_HOME

 

Hbase 설치

wget https://archive.apache.org/dist/hbase/1.2.7/hbase-1.2.7-bin.tar.gz

tar xzvf hbase-1.2.7-bin.tar.gz

vi /home/ec2-user/hbase-1.2.7/conf/hbase-env.sh

# 이 옵션을 주석처리 하지 않으면 hbase 실행시 warning 이 뜸
# 사진과 같이 JAVA_HOME 설정 후 전부 다 주석처리
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m ..."
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m ..."

# 매번 hbase-1.2.7 를 입력하기 번거로우니 해당 디렉토리에 link를 걸어서 hbase로 사용
ln -s hbase-1.2.7 hbase

# hbase 시작
hbase/bin/start-hbase.sh

 

Pinpoint Agent에서 받은 데이터들을 담을 테이블 생성

# 스크립트 다운
wget https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase

# 스크립트 실행
hbase/bin/hbase shell ../hbase-create.hbase

 

Java 11 설치

WAS에서 자바 17을 사용하고 있어서 Agent는 2.5.1을 사용할 것이고, 2.5.X부터는 자바 11을 최소 요구사항으로 가지고 있어서 자바 11도 설치를 해야 한다.

# 둘 중 하나 사용
sudo yum install java-11-amazon-corretto
sudo yum install java-11-amazon-corretto-headless # headless 버전으로 설치하면 GUI 연관 런타임 종속성을 생략하기 때문에 좀 더 가벼운 듯 하다.

# 설치 확인
java -version

# 자바 8을 먼저 설치해서 java 1.8이라고 나올 것이다. 그래서 대표 버전을 변경해준다.
# 참고: Hbase에는 절대 경로로 설정했기 때문에 상관없음
sudo alternatives --config java

 

Collector 설치

# 설치
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.5.1/pinpoint-collector-boot-2.5.1.jar

# 실행권한 부여
chmod +x pinpoint-collector-boot-2.5.1.jar

# 실행
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-collector-boot-2.5.1.jar >/dev/null 2>&1 &

 

Web 설치

# 설치
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.5.1/pinpoint-web-boot-2.5.1.jar

# 실행권한 부여
chmod +x pinpoint-web-boot-2.5.1.jar

# 실행
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-web-boot-2.5.1.jar >/dev/null 2>&1 &

 

WAS EC2 구성

기존에 WAS 서버가 있다고 가정하고 구성해보려고 한다. 기존에 운영 중인 서버가 없는데 모니터링부터 구성한다면 굳이? 우선 애플리케이션부터 개발하고 모니터링을 구성하는 것을 추천한다!

 

Agent 설치

# agent 설치
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.5.1/pinpoint-agent-2.5.1.tar.gz

# 압축 해제
tar xvzf pinpoint-agent-2.5.1.tar.gz

# 이동
cd pinpoint-agent-2.5.1

# config 파일 수정
sudo vi pinpoint-root.config

# 127.0.0.1 로 되어있을 텐데, 앞서 구성한 APM EC2의 ip로 수정해줍니다.
# 같은 vpc로 구성했을 것이기 때문에 프라이빗 IP 주소로 해야한다.
profiler.transport.grpc.collector.ip=xxx.xx.x.xxx

 

기존 JAR 실행시키는 부분 수정

echo "> $JAR_NAME 실행"
nohup java -jar -Dserver.port=${TARGET_PORT} -Dspring.profiles.active=prod $JAR_NAME > $LOG_FILE 2>&1 &

# 수정 후
echo "> $JAR_NAME 실행"
nohup java -javaagent:$PINPOINT/pinpoint-agent-2.5.1/pinpoint-bootstrap-2.5.1.jar \
-Dpinpoint.agentId=luckkids01 \	# 수정 가능
-Dpinpoint.applicationName=luckkidsServerApp \	# 수정 가능
-Dpinpoint.config=$PINPOINT/pinpoint-agent-2.5.1/pinpoint-root.config \
-Dserver.port=${TARGET_PORT} \
-Dspring.profiles.active=prod \
-jar $JAR_NAME > $LOG_FILE 2>&1 &

 

Pinpoint Web 확인

APM EC2에서 보안 > 인바운드 설정에서 8080 포트를 열어준 뒤 `퍼블릭 IP:8080`로 들어가게 되면 

이렇게 요청이 잘 온 것을 확인할 수 있다.

 

핀포인트 구성 중 이슈 정리

  • 핀포인트가 안 들어가지거나 연결이 안 됨
  • `REAL TIME > Active Request` ERROR로 뜸
  • 메모리 부족
  • HBASE 다운..?
 

[APM] Pinpoint 구성 중 이슈 정리

핀포인트 웹에 안 들어가지거나 연결이 안 됨 ps -ef | grep java# 시스템에서 실행 중인 모든 프로세스 중에서 "java"라는 문자열을 포함하는 프로세스들의 정보를 보여주는 데 사용 나의 이슈는 hbase

mingeonho1.tistory.com

 

 

 

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

728x90
저작자표시 비영리 변경금지 (새창열림)
  1. APM EC2 구성
  2. Java 8 설치
  3. Hbase 설치
  4. Java 11 설치
  5. Collector 설치
  6. Web 설치
  7. WAS EC2 구성
  8. Agent 설치
  9. 기존 JAR 실행시키는 부분 수정
  10. Pinpoint Web 확인
  11. 핀포인트 구성 중 이슈 정리
'경험/기술' 카테고리의 다른 글
  • nGrinder 간단하게 사용해보기
  • [APM] 모니터링 도구 Scouter 도입
  • [CI/CD] [Github Actions] 배포 자동화 구성
  • [Java] [Lombok] 제대로 알고 사용하기 !
호야_
호야_
안녕하세요😊 아는 것만 보이는 게 아닌, 아는 만큼 보인다고 생각하는 백엔드 개발자입니다.
호야_
개발잠
호야_
전체
오늘
어제
  • 분류 전체보기 (28)
    • 경험 (28)
      • 이슈 (12)
      • 기술 (11)
      • 회고 (5)

블로그 메뉴

  • 깃허브
  • 블로그관리 홈
  • 글쓰기

인기 글

최근 글

최근 댓글

250x250
hELLO · Designed By 정상우.
호야_
[APM] 모니터링 도구 Pinpoint 도입
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.