얼마 전 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 사용에 대한 내용은 여기를 참조하길 바란다.
참조
'Newbie's Log' 카테고리의 다른 글
Google Analytics 데이터를 사용한 블로그 분석 (0) | 2015.05.13 |
---|---|
spring camp 2015 참가 후기 (0) | 2015.04.13 |
데이터 분석이 게임 성패를 가른다. (0) | 2015.03.01 |
데이터 마이닝(Data Mining) 이란? (0) | 2015.03.01 |
크롬 브라우저로 플로우 차트 그리기 - Gliffy Diagrams (1) | 2015.02.27 |