들어가며
드디어 본론이 나왔다! 이전 글에서 Pinpoint 아키텍처 및 서버 구성 방식, HBase 설치 및 세팅 방법에 대해 알아보았다.
Pinpoint 적용기: 1️⃣Pinpoint 아키텍처 및 서버 구성 방식 (Spring Boot 3.2.0, Maven 4.0.0, JDK 17)
들어가며회사에서 pinpoint 를 적용해봐! 라는 업무를 받았다. pinpoint가 뭔데? APM이 뭔데? 아무런 설명을 듣지 못하고 작업을 진행하게 되었지만 이 또한 기회...! 공부하면서 서버에 직접 적용까지...
ssonzm.tistory.com
Pinpoint 적용기: 2️⃣HBase 설치 및 세팅
들어가며이번에는 pinpoint를 사용하기 위해 HBase 설치하고 세팅하는 과정을 정리하려고 한다. 그 과정에서 마주했던 문제들 그리고 해결방법까지 정리할 것이다. 이번엔 내용이 많으니까 바로 본...
ssonzm.tistory.com
이번에는 pinpoint web, collector, agent를 설치해볼 예정이다. web, collector를 설치하고 세팅해둔 서버 B가 있고 agent들을 세팅할 수 있는 서버 A가 있다. 이는 여기에서 다시 확인할 수 있다.
1. Pinpoint Web & Collector 설치
pinpoint 실행 전 hbase 먼저 실행해두는 것 잊지 말기!

스프링 3.2.0, 자바 17로 세팅이 된 상태에 가장 적합한 버전이 2.5.x라고 판단하였기에 2.5.1 버전으로 설치를 진행했다.
#Web
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.5.1/pinpoint-web-boot-2.5.1.jar
#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
chmod +x pinpoint-web-boot-2.5.1.jar
2. 백그라운드 실행
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-web-boot-2.5.1.jar > pinpoint-web.log 2>&1 &
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-collector-boot-2.5.1.jar > pinpoint-collector.log 2>&1 &
해당 서버에서 pinpoint web 기본 포트인 8080을 사용 중이었기 때문에 다른 포트로 변경이 필요했다.
이런 경우에는 아래의 코드를 실행하면 된다.
nohup java -jar -Dpinpoint.zookeeper.address=localhost -Dserver.port={원하는 포트 번호} pinpoint-web-boot-2.5.1.jar > pinpoint-web.log 2>&1 &
{서버 ip}:{원하는 포트 번호} 로 접속을 하면

이와 같은 pinpoint web UI가 보여진다.
전체 실행 중인 프로세스 확인을 해보면
PID | 내용 |
957854 | HBase |
983114 | Pinpoint web |
983342 | Pinpoint collector |
⚠️ 발생했던 오류
1. 백그라운드 실행 과정에서 zookeeper 에러 발생

pinpoint-web-env.properties 파일에서 zookeeper 주소를 hbase가 설치된 서버 ip로 변경해줌
만약 로컬로 실행 중이라면 localhost로 수정해주면 된다.
참고) 특정 값이 존재하는 파일 찾는 방법
grep -r {찾으려는 문자열} {찾으려는 위치}
예시)
grep -r YOUR_RELEASE_ZOOKEEPER_ADDRESS ./webapps/*
2. 9991 연결이 안 되어서 에러 발생 -> 방화벽 포트 개방

Agent가 collector로 로그 전송할때 9991~ 9993포트를 이용하기때문에 필수로 열어둬야 한다.
방화벽 포트 개방 명령어
sudo firewall-cmd --add-port=9991/tcp --permanent
sudo firewall-cmd --add-port=9992/tcp --permanent
sudo firewall-cmd --add-port=9993/tcp --permanent
업데이트
sudo firewall-cmd --reload
방화벽 개방 포트 리스트 조회
sudo firewall-cmd --list -all
3. Pinpoint 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
{pinpoint-agent-2.5.1 파일 경로}/pinpoint-root.config
{pinpoint-agent-2.5.1 파일 경로} /profiles/local/pinpoint.config
{pinpoint-agent-2.5.1 파일 경로} /profiles/release/pinpoint.config
profiler.transport.grpc.collector.ip={Pinpoint Collector가 위치한 서버의 IP}
profiler.collector.ip={Pinpoint Collector가 위치한 서버의 IP}
세가지 설정 파일에서 기본으로 지정된 localhost를 원하는 IP로 변경해주어야 한다.

스프링 프로젝트 실행 결과를 보면 위와 같이 나온다. 이러면 성공적으로 Pinpoint Agent 세팅이 끝났다.
이제 거의 다 왔다!
다시 Pinpoint Web으로 들어가보면 Agent와 세팅되어 UI가 변경된 걸 확인할 수 있다.
포스트맨으로 서버에 요청을 한 후에 다시 확인해보면


또 한 번 UI가 변경되어 있을 것이다. 좌측의 Inspector 메뉴에서는 CPU Usage, Memory/Garbage Collection과 같은 부가 정보에 대한 차트를 확인할 수 있다.
마치며
이렇게 Pinpoint 적용기가 끝났다! 생각보다 간단하지만 실제로 부딪혀서 해보니까 후딱 끝낼 수 있는 정도는 아니었던 거 같다 ...! 스프링 버전, 자바 버전, 환경 등 모두 다르기 때문에 그런 것 같다. 혹시나 비슷한 스펙의 애플리케이션을 사용하고 핀포인트 설치에서 헤매는 분이 계신다면 이 글이 도움이 될 것이라고 생각한다.
:wq 💟
댓글