naver pinpoint

Newbie's Log 2015.03.07 19:04

 

 

얼마 전 Naver pinpoint 오픈 소스가 공개 되었다.

pinpoint는  어플리케이션 성능 측정 (Application Performance Management: APM) 도구로서 java로 쓰여진 대규모 분산된 어플리케이션 에서 수행괴는 트랜잭션을 추적하여 프로파일링 데이터를 제공한다. 현재 인프라에서 어플리케이션까지 다양한 네이버 내부 시스템의 장애 분석 및 성능 개선에 사용되고 있다고 한다.

pinpoint는 Google의 Dapper paper를 모델로 하였으며, 시스템의 전체 구조를 분석하고 그 안의 분산 어플리케이션 구성 요소를 통해 트랜잭션을 추적함으로서 어떻게 상호간에 연결되는지를 보여주는 솔루션을 제공한다.

단 한줄의 코드를 변경하지 않고 agent를 설치할수 있으며, 성능에 미치는 영향을 최소화 (자원 사용량이  약 3% 증가) 한다고 한다.

 

Overview

요즘 서비스들은 자체 통신 뿐만 아니라 외부 서비스에 대해 API를 호출하는 서로 많이 다른 구성요소들이 존재한다. pinpoint는 이런 구성요소들 사이의 트랜잭션이 흘러 문제가 생기는 영역과 병목 현상을 볼 수 있는 명확한 뷰를 제공하고 있다.

제공하는 뷰들에 대해 알아보자.

 

ServerMap

각 구성 요소가 어떻게 상호 연결 되어있는지 시각화 함으로서 분산된 시스템의 Topology를 이해하며, 각 노드를 클릭하여 현재 상태, 트랜잭션 수 등과 같은 구성요소에 대한 세부 사항을 확인할 수 있다.

Request/Response Scatter Chart

Request 수, Response 패턴을 시각화 해주며, 트랜잭션은 차트를 드래그 함으로서 상세 정보를 확인할 수 있다.

 

CallStack

분산 환경에서 모든 트랜잭션 코드 수준의 가시성을 얻을 수 있으며, 하나의 뷰에서 병목지점, 실패 위치를 볼 수 있다.

 

Inspector

CPU 사용량, Memory/GC, JVM arguments와 같은 어플리케이션 상세 정보를 제공한다.

 

Architecture

pinpoint의 전반적인 구조는 아래 그림 하나로 한번에 이해할수 있다.

 

우측 상단의 Host JVM이 사용자가 구현한 어플리케이션이 돌가가는 웹 어플리케이션 서버(WAS)이다. 바로 여기에 pinpoint의 agent가 올라가며, collector와 web UI는 HBase를 보고 있다.

 

Supported Modules

pinpoint가 지원하는  모듈들은 다음과 같다.

  • JDK 6+
  • Tomcat 6/7
  • Spring
  • Apache HTTP Client 3.x/4.x, JDK HttpConnector
  • MySQL, Oracle, MSSQL, CUBRID, DBCP
  • iBATIS, MyBatis
  • Arcus, Memcached, Redis

 

pinpooint에 다한 자세한 사항은 여기를 참조하길 바라며, 설치는 여기를 참조하면 된다.

다운받으면 안에 quickstart도 있어 간편하게 사용해볼수 있다. quickstart 사용에 대한 내용은 여기를 참조하길 바란다.

 

 

참조

 


Posted by minji7