2023-06-29,   Do-soo, KIM

이번 포스팅에서는 오픈소스 APM 중 OpenTelemetry와 Scouter에 이어 Pinpoint에 대해서 소개하고자 합니다.

Pinpoint는 Naver에서 개발한 오픈소스 SW로 대규모 분산 시스템의 성능을 분석하고 문제를 진단, 처리하는 플랫폼 입니다.

내부적으로 서버맵, 실시간 활성 스레드 차트, 요청/응답 차트, API의 호출 상세 이력, 서버의 상태를 실시간으로 시각화하여 볼 수 있는 기능 등을 제공합니다.

Pinpoint는 아래와 같이 구성되어 있습니다.

image

[출처: pinpoint-apm.gitbook.io]

  • Pinpoint Collector: Agent로부터 받은 데이터를 HBase에 저장
  • Pinpoint Agent: 애플리케이션의 모니터링 정보를 수집하여 Collector에 전달
  • Pinpoint Web UI: HBase에서 데이터를 조회해서 시각화된 모니터링 서비스 제공

그럼, Pinpoint를 구축하여 Java Application을 모니터링 해 보도록 하죠.

이전 포스팅에서 소개했던 Scouter는 직접 설치하여 구축했지만, Pinpoint는 설치형 서비스 이외에 클라우드 서비스를 제공하고 있습니다.
따라서, 별도의 설치 없이 네이버 클라우드 플랫폼 서비스를 이용해서 서버를 사용할 수 있습니다. (Agent는 따로 설치해야 합니다.)

1. 클라우드 서비스 이용하기

1.1 Repository 생성

네이버 클라우드 플랫폼에 접속한 뒤, Services > Management & Governance > Pinpoint Cloud 메뉴를 선택하여 Repository 생성 화면으로 연결합니다.
(네이버 클라우드 플랫폼은 유료로 이용하는 서비스이니 참고하세요)

[Repository 생성] 버튼을 클릭하고, 필요한 정보를 입력하면 생성할 수 있습니다.
아래와 같이 생성된 목록을 확인할 수 있습니다.

image

1.2 Agent 설정

위 그림과 같은 화면에서 [바로가기] 버튼을 클릭하여, 웹 콘솔로 접속합니다.
웹 콘솔 화면의 오른쪽 상단의 설정 버튼 클릭 후, “Installation” 메뉴를 클릭하면 아래와 같은 화면이 표시됩니다.

image

다음로는 아래의 과정을 순서대로 진행하면 됩니다.

  • Download Link에서 Agent 파일을 다운로드한 뒤 압축을 해제합니다.(이 과정은 최초 1회만 수행하면 됩니다.)
  • Agent License Key 값을 복사하여, Agent 폴더 내의 pinpoint.license 파일에 붙여넣기 하고 저장합니다.
  • 이제 pinpoint.config 파일을 수정해야 하는데, 아래와 같이 profiler.entrypoint 값에 모니터링 대상의 entry point를 적어줍니다.

# Needs to be a comma separated list of fully qualified class names, or fully qualified package names with wild card class.
# profiler.include=com.navercorp.pinpoint.testweb.controller.*,com.navercorp.pinpoint.testweb.MyClass

# for play framework.
profiler.entrypoint=com.epozen.test.main

1.2 Java Application 실행

아래와 같이 성능 측정 대상 Application을 실행합니다.

java -javaagent:{다운로드 한 agent 파일 경로} -Dscouter.config=/scouter/agent.java/conf/scouter.conf -jar {모니터링 대상 java application 경로}

2. 실행 결과

Java Application이 실행되면, Pinpoint 웹 콘솔화면에서 실시간 모니터링 결과를 확인할 수 있습니다.

image

표시된 차트의 scatter 영역을 드래그 하면, 아래와 같이 transaction list도 볼 수 있습니다.

image

이상으로 Pinpoint에 대해서 살펴보고 간단하게 사용하는 방법을 소개하였습니다.
이번 포스팅은 여기서 마치겠습니다.

Reference

https://www.ncloud.com/product/applicationService/pinpoint
https://tech.trenbe.com/2022/02/22/pinpoint.html

업데이트: