관리 메뉴

피터의 개발이야기

[APM] PinPoint APM 본문

Programming/JAVA

[APM] PinPoint APM

기록하는 백앤드개발자 2020. 12. 11. 09:00
반응형

서비스를 운영하면서 모니터링은 꼭 필요합니다. 
데이터가 쌓이면서 일부 쿼리들이 느려지거나,

어떤 시간 대에 어떤 프로세스에 집중되는 지 파악하여 분산화 작업도 수반되어야 합니다.

이 모든 것이 가능하려면 현재 서비스의 구체적 모니터링이 필수적입니다.

 

현재 회사에는 PinPoint를 사용하고 있습니다. 제가 PinPoint를 소개하며 제가 사용하면서 좋았던 점에 대해서 공유합니다.

 

 

 

장점에 대해서

Pinpoint는 대규모 분산 시스템의 성능을 분석하고 문제를 진단, 처리하는 플랫폼입니다. 2012년 7월에 개발을 시작해 2015년 1월 9일에 오픈소스로 공개했습니다.

 

Pinpoint의 특징

사용자가 적었던 과거에는 인터넷 서비스가 단순했다. 2계층(웹 서버, 데이터베이스) 또는 3계층(웹 서버, 웹 애플리케이션 서버, 데이터베이스)으로 구성해 서비스를 운영할 수 있었습니다. 하지만 인터넷 서비스가 발전하면서 대규모 사용자를 지원해야 했고 많은 기능과 서비스 간에 유기적인 연동이 필요하게 됐습니다. 이 때문에 오늘날 인터넷 서비스는 다양한 컴포넌트의 조합으로 구성되었습니다. 3계층을 넘어서 n계층(multitier) 아키텍처로 변경되고 있다. SOA(service oriented architecture)나 마이크로서비스 형식의 아키텍처는 이제 현실이 되었습니다.

 

  • 분산된 애플리케이션의 메시지를 추적할 수 있는 분산 트랜잭션 추적
  • 애플리케이션 구성을 파악할 수 있는 애플리케이션 토폴로지 자동 발견
  • 대규모 서버군을 지원할 수 있는 수평 확장성
  • 코드 수준의 가시성을 제공해 문제 발생 지점과 병목 구간을 쉽게 발견
  • bytecode instrumentation 기법으로 코드를 수정하지 않고 원하는 기능을 추가

참조 : 대규모 분산 시스템 추적 플랫폼, Pinpoint

 

 

Pinpoint의 첫인상

 

 

 

 

 

전제적인 데시보드는 시스템 상황에 대해서 직관적으로 보여주고 있었다.

중앙에 네트워크 트레픽을 다이어그램으로 보여주고 있고,

오른쪽 차트에서는 개별 트래픽의 상태, 발생 시각에 따른 처리 시간을 보여주고 있다.

상단에는 개별서버를 선택할 수 있고 그 서버의 특정 시간을 선택할 수 있다.

 

 

네트워크 트래릭 시각화

 

 

여러 대의 API서버 중에 하나를 선택하였습니다. User들이 얼마나 들어왔고,

이 처리를 위해 Redis와 MySQL, 그리고 다른 API 서버로

얼마나 통신을 하였는지 네트워크트래픽을 시각적으로 잘 보여주고 있었다.

 

 

 

 

정말 획기적이라고 느껴진 부분이었다.

선택한 시간 대역에 들어온 트레픽이 

정상이었는지(녹색), 비정상이었는지(적색)으로 표시하고
해당 발생 시간대역에서 얼마나 시간이 걸렸는지도

시각적으로 잘 보여주고 있었다.

 

 

 

 

 

위 그림처럼 드래그를 통해 해당 트래픽에 대한 상세 정보를 확인할 수 있었다.

 

 

 

프로세스들의 목록 및 상세

 

 

스레드덤프를 떠 놓은 듯 개별 트래픽의 스레드가

어떤 프로세스로 얼마의 시간동안 작동하였는지 
어떤 class에서 어떤 펑션을 수행했는지 

데이터 조회 시 SQL문까지 확인 할 수 있었다.

 

 

 

 

RESTful 서비스 뿐만 아니라

Spring Boot 통계서버의 시스템 모니터링도 가능하였다.

 

 

커서를 가져다 놓으면 동일 시간 대의 힙메모리,  CPU 사용률에 대해서

수치적으로 보여주고 있었다.

 

RESTful은 Spring의 doFilter를 이용하여

서블릿의 Request를 추적하여

개별 요청에 대한 스레드의 처리 과정과 속도를 확인 하였고

외부적인 트래픽이 없이

스케줄되어 있는 통계서버의 현재 시스템 상황을 확일 할 수 있었다.

 

무엇도다 제일 큰 장점은

별도의 코딩 없이 

몇몇의 환경설정으로 이 모든 기능을 무료로 사용할 수 있다는 점이었다. 

 

 

다음에는 PinPoint를 설치하는 과정을 소개하도록 하겠습니다. 

 

 

 

 

반응형
Comments