[Pinpoint] 네이버 Pinpoint 사용하기

tngus2sh·2024년 3월 8일
0

1. Pinpoint란?

pinpoint는 네이버에서 만든 대규모 분산 시스템의 성능을 분석하고 문제를 진단, 처리하는 플랫폼 즉, APM(Application Performance Monitoring) 도구 입니다. 내부적으로 서버맵, 실시간 활성 스레드 차트, 요청/응답 차트, API 호출 상세 기록, 서버의 상태를 실시간으로 시각화하여 볼 수 있는 기능을 제공합니다.


2. 구성요소

Pinpoint에는 여러 모듈이 있지만, 그 중에서도 가장 중요한 모듈은 크게 3가지입니다.
  • Pinpoint Agent
    • 애플리케이션의 모니터링 정보를 Collector로 전달
  • Pinpoint Collector
    • Agent에서 받은 정보를 HBase에 적재
  • Pinpoint Web
    • 적재된 데이터를 Web으로 노출하여 모니터링 제공

Pinpoint는 코드 수준의 정보를 추적합니다. 그러다 보니 트래픽이 많아질 경우 데이터의 양이 폭발적으로 증가한다는 단점이 있습니다.
이를 해결하기 위해 해당 정보들을 HBase에 담아 활용합니다.

HBase
HDFS(Hadoop Distributed File System, 하둡 분산 파일 시스템으로 하둡의 저장소를 담당)으로 구현한 컬럼 기반 분산 NoSQL 데이터 저장소


3. 들어가기 앞서

현재 저희 프로젝트는 두 개의 EC2 환경으로 구성되어 있으며 각각 PloNit 서비스 Plogging 서비스로 나뉘어 운영되고 있습니다. 원래대로라면 각 모듈을 별도의 서버에 구축해야하지만 간단하게 적용하기 위해 PloNit EC2 서버에 Collector와 HBase, Web을 운영하는 형식으로 했습니다. 따라서, 아래와 같이 구성되어 있습니다.


4. Pinpoint 설치

4-1. Monitoring 인스턴스 구성하기

ec2는 Amazon Linux로 진행했습니다.

Java 설치

이전에 Java를 설치하지 않았다면 설치하고 진행해야합니다. 설치를 했더라도 JAVA_HOME 설정을 하지 않았다면 아래에서 HBase 설치할 때 위와 관련된 화면이 뜨게됩니다. 아래와 같이 설정하겠습니다.

$ which java #자바 설치 경로 확인
/usr/bin/java

$ readlink -f /usr/bin/java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java

JAVA_HOME 설정

sudo vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

source /etc/profile

Hbase 설치하기

처음에 HBase를 서버에 있는 Java 11 버전으로 설정했더니 나중에 테이블이 만들어지지 않아서 원인을 찾아봤더니 HBase는 Java 8 버전으로 해야 됩니다. 그래서 저는 서버는 Java 11로 HBase는 Java8로 설정해주었습니다.

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/ubuntu/hbase-1.2.7/conf/hbase-env.sh

# HBase에만 Java 8 버전 적용
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
# 이 옵션을 주석처리 하지 않으면 hbase 실행시 warning 이 뜹니다.
# 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 정보를 담을 테이블 생성하기

Pinpoint Agent로부터 받은 추적 데이터들을 담을 테이블을 생성해야하는데 이는 스크립트를 다운받아서 적용하면 됩니다.

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

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

Pinpoint Collector 설치

같은 Monitoring 인스턴스에 Pinpoint Collector도 설치해줍니다.

# jar 파일 다운로드
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.2.2/pinpoint-collector-boot-2.2.2.jar

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

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

Pinpoint Web 설치

# jar 파일 다운
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.2.2/pinpoint-web-boot-2.2.2.jar

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

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

여기까지 성공적으로 따라왔다면 아래와 같은 화면이 나오게 됩니다.

4-2. Pinpoint Agent EC2 구성하기

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

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

# 이동
cd pinpoint-agent-2.2.2

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

# 앞에서 구성한 monitoring EC2의 ip로 수정해줍니다.
profiler.transport.grpc.collector.ip=pinpoint ip로 변경

참고

https://guide.ncloud-docs.com/docs/pinpoint-pinpoint-1-2
https://roopredev.tistory.com/9

profile
백엔드 개발자

0개의 댓글