NAVER Cloud Platform Application Performance Monitoring “Pinpoint”

Chang Hwan Jang
NAVER CLOUD PLATFORM
12 min readSep 2, 2019

--

NAVER Cloud Platform Application Profiling & Monitoring Service

대규모 분산 시스템 상에서 다양한 트랜잭션의

흐름을 한눈에 살펴보고 싶다면?

단순한 UI와 다양한 서버 환경을 지원하는 네이버 클라우드 플랫폼의분산
환경 성능 분석/진단/추적 플랫폼 서비스 Pinpoint를 도입해보세요.

네이버 클라우드 플랫폼의 Pinpoint Installation Image?

Pinpoint 서비스는 분산 서비스 및 시스템의 성능 분석/진단/추적 플랫폼
서비스로서 “N” 계층의 SOA(Service Oriented Architecture)
Micro-Service
로 구성된 아키텍처 서비스의 추적 및 분석 기능을 제공하고, 분산 애플리케이션의 트랜잭션 분석, Topology Detection, Bytecode Instrumentation을 활용한 진단 기능을 제공합니다.

Pinpoint Features Overview
Pinpoint Features Overview

네이버 클라우드 플랫폼의 Pinpoint 서비스는 크게 3단계의 개발 목표를 수립하여, 지속적으로 사용자에게 업데이트할 예정입니다.

  • v1 : Pinpoint Installation Image Service (2017)
  • v2 : Pinpoint Simple Deployment Service (2019 예정)
  • v3 : Pinpoint as a Service (2020 1Q 예정)
Pinpoint Development Roadmap

“Pinpoint Installation Servcice” vs “Pinpoint as a Service” 비교는 아래의 표에서 확인하실 수 있습니다.

“Pinpoint Installation Service” vs. “Pinpoint as a Service”

NAVER Cloud Platform Pinpoint 주요 특징

Cloud-Based Java Application Profiling & Monitoring

대규모 어플리케이션 서비스 다양한 구성 요소로 이루어져 있으며 외부 서비스에 대한 API 호출을 수행 할뿐만 아니라 내부적으로도 통신합니다.
Pinpoint는 이러한 구성 요소 간에 트랜잭션 흐름을 추적하고 문제 영역 및
잠재적 인 병목 현상을 식별 할 수 있도록 명확한 지표를 제공합니다.

  • Server Map

구성 요소의 상호 연결 방식을 시각화하여 분산 시스템의 토폴로지를 이해합니다. 노드를 클릭하면 구성 요소에 대한 세부 정보 (예 : 현재 상태 및 트랜잭션 수)가 표시됩니다.

  • 실시간 활성 스레드 차트

실시간으로 응용 프로그램 내부의 활성 스레드를 모니터링 합니다.

  • 요청/응답 분산 형 차트

시간 경과에 따른 요청 수 및 응답 패턴을 시각화하여 잠재적인 문제를 식별합니다.

Pinpoint Server Map
  • CallStack

분산 환경의 모든 트랜잭션에 대해 코드 수준의 가시성을 확보하여 단일보기에서 병목 지점 및 장애 지점을 식별합니다.

Pinpoint CallStack View
  • Inspector

CPU 사용, 메모리/Garbage 수집, TPS 및 JVM 인수와 같은 응용 프로그램에 대한 추가 세부 정보를 봅니다.

Pinpoint Inspector View

Simple & Variable Plugin Agent 제공

클라우드 기반 다양한 Java Agent에 대한 Plugin을 지원하고, User Defined Plug-in 개발 및 적용이 가능합니다. 해당 사용자의 서비스의 코드 수정 없이 Environment & Properties 변경으로 해당 애플리케이션의 모니터링 및 분석이 가능합니다.

Pinpoint Agent에서 성능 수집을 지원하는 Application 및 Version 정보는
아래와 같습니다. 아래의 지원 가능한 Application 리스트는 지속적으로
업데이트 예정입니다.​

상세한 최신 정보는 https://github.com/naver/pinpoint에서 확인하실 수 있습니다.

Pinpoint Agent Supported Module (https://github.com/naver/pinpoint)

Pinpoint Bytecode Instrumentation 작동 방법

(출처 : https://d2.naver.com/helloworld/1194202)
Bytecode Instrumentation 기술은 Java 바이트코드를 다루므로 위험하고
생산성이 낮으며 개발자가 실수할 가능성이 있습니다. Pinpoint는 인터셉터로 추상화해 생산성접근성을 높였습니다. Pinpoint는 클래스 로드 시점에
애플리케이션 코드를 가로채 성능 정보와 분산 트랜잭션 추적에 필요한 코드를 주입합니다. 애플리케이션 코드에 직접 추적 코드가 주입되므로 성능이
좋습니다.

Pinpoint Bytecode Instrumentation (https://d2.naver.com/helloworld/119402)

Pinpoint는 API 인터셉트와 성능 데이터 기록 부분을 분리합니다. 추적 대상 메서드에 인터셉터를 주입해 앞뒤로 before() 메서드와 after() 메서드를 호출하게 하고 before() 메서드와 after() 메서드에 성능 데이터를 기록하는 부분을 구현하였습니다. Pinpoint Agent는 bytecode instrumentation을 통해 필요한 메서드의 데이터만 기록하므로 생성되는 프로파일링 데이터의 크기가 줄어듭니다.

Pinpoint Components Architecture

Pinpoint Components Architecture는 아래와 같이 크게 Agent ,
Collector, Store(HBase), Web 4가지 컴포넌트로 구성되어 있습니다.

  • Pinpoint Agent

Profiling & Monitoring 대상이 되는 Target Application에 설치되는 모듈

  • Pinpoint Collector

Pinpoint Agent에서 수집된 결과 및 상태를 수집하고 저장하는 모듈

  • Pinpoint Web

Pinpoint Collector을 통해 수집된 결과를 HBase(Store)를 통해 사용자 UI에
실행하는 모듈

  • HBase(Store)

Pinpoint Collector을 통해 수집된 분석 정보 및 데이터가 저장되는 데이터베이스

Pinpoint Architecture (Simple Version)

Pinpoint Simple Installation Service 제공

네이버 클라우드 플랫폼에서는 사용자의 용량에 맞는 Pinpoint OS VM Image 선택만으로 간단하게 Pinpoint Server 환경을 구축할 수 있습니다.

Pinpoint Supported OS Version

아래와 같이 네이버 클라우드 플랫폼 콘솔에서 Pinpoint VM 이미지 선택만으로 Pinpoint 서비스를 시작할 수 있습니다.

Pinpoint Installation VM Image

네이버 클라우드 플랫폼 Pinpoint 서비스는 어떻게 사용하나요?

간략하게 정리하면 아래와 같이 간단한 Console UI 활용으로 서비스에 적용할 수 있습니다.

서버 생성부터 마법사 형태로 생성할 수 있으며, 간단한 설정 및 설치를 통해 즉시 사용하실 수 있습니다.

  • [서버 생성] 사용자가 원하는 사양의 서버 이미지 선택
서버 이미지 생성/확인
  • [공인 IP 신청] 네이버 클라우드 서비스 이외에서도 접속이 가능하도록
    설정 가능
공인 IP 신청/확인
  • [포트 포워딩 설정] Pinpoint 서비스 설정을 위한 포트 포워딩 설정
포트 포워딩 설정/확인
  • [ACG 설정] 네트워크 보안을 위한 Access Control Group 설정
ACG 설정/확인
  • [터미널 접속] 생성된 Pinpoint 서버 접속
터미널 접속/확인
  • [초기 패스워드 확인] 서버 관리자 비밀번호 확인
관리자 패스워드 확인
  • [Pinpoint 접속] Pinpoint프로세스 가동 및 서비스 확인
Pinpoint 프로세스 시작/중지/확인 방법
  • [Pinpoint Agent 설치] Pinpoint Agent 설치 및 적용 확인
Pinpoint Agent 설치 및 적용 확인 방법
  • [Pinpoint Web 접속] Pinpoint Web 서비스 접근 및 로그인
Pinpoint Web 서비스 접속 방법

네이버 클라우드 플랫폼 Pinpoint 상품 사용 시

참고할 만한 사이트는 없나요?

네이버 클라우드 플랫폼의 Pinpoint 서비스는 기본적으로 Pinpoint Open Source를 바탕으로 구현이 되어 있어서, 기존 Pinpoint 사용자라면 누구나
쉽게 적응이 가능합니다.

아래와 같이 Pinpoint 사용 시 참고할 만한 사이트 및 정보를 정리하였습니다.

Apache HBase의 설치/운영 및 관리 방법에 대해 확인할 수 있습니다.

Apache HBase Site

Pinpoint 운영에 관련된 FAQ 항목을 확인할 수 있습니다.

Pinpoint Official FAQ

Pinpoint 공식 Gitub 사이트에서 추가 정보를 확인할 수 있습니다.

Pinpoint Official Github

Pinpoint 공식 릴리즈 버전에 대한 상세정보를 확인할 수 있습니다.

Pinpoint Version Release

Pinpoint Plugin Agent 개발 및 Pull Request 방법에 대해 확인할 수 있습니다.

Pinpoint Plugin Developer Guide

Pinpoint Architecture 및 기술관련 자료를 확인할 수 있습니다.

Pinpoint Technology Details

네이버 클라우드 플랫폼 Pinpoint 서비스는 어떻게 사용할 수 있나요?

네이버 클라우드 플랫폼의 네이버 클라우드 플랫폼 Pinpoint 서비스를
사용하기 위해서는 아래와 같이 서비스 약관 동의 및 서비스 사용 신청 후
정상적으로 사용하실 수 있습니다.

글을 마무리 하며

네이버 클라우드 플랫폼 Pinpoint 서비스는 설치형 서비스 경험을 바탕으로Pinpoint as a Service의 형태로 발전시킬 수 있도록 Roadmap을 준비하고
있습니다.

개발자가 클라우드 플랫폼에서 쉽게 Java Application 분석 및 모니터링
서비스를 쉽게 구축하고, 사용이 가능하도록 발전시켜 나갈 예정입니다.

네이버 클라우드 플랫폼 Pinpoint 서비스에 많은 관심과 격려를 부탁 드립니다.

감사합니다.

--

--