Pinpoint APM

yellowsunn·2022년 2월 12일
0
post-thumbnail

Pinpoint APM

Pinpoint APM은 Naver 에서 제공하는 오픈소스 기반 모니터링 서비스이다.

특별한 서비스 코드 작업 없이 환경설정만으로 바로 적용이 가능하다는 점이 특징이다.

APM

서비스 상태와 성능을 모니터링하기 위한 서비스

  • 웹/모바일 애플리케이션의 성능을 자동으로 분석하고 내부 동작을 추적
  • 24시간 쉬지 않으며, 문제가 발생하면 관리자에게 자동으로 알람 전송
  • 로그를 통해 장애가 발생한 시간과 원일 빠르게 분석
  • 하나의 대시보드 안에서 성능 문제파악이 용이
  • 시스템 업그레이드 시점 예견

Pinpoint 구조

Pinpoint 서비스를 구축하기 위해서는 다음과 같은 모듈이 구성되어야 한다.

Pinpoint Agent

애플리케이션의 모니터링 정보를 수집하여 Pinpoint Collector에 전달한다.

Pinpoint Agent는 JVM의 javaagent 옵션을 활용하는데, javaagent를 사용하면 클래스로더가 클래스를 읽어올 때 동적으로 바이트코드를 조작할 수 있다. 그렇기 때문에 Pinpoint를 도입하기 위해서 애플리케이션 내의 코드를 수정할 필요가 없다는 장점이 있다. javaagent 옵션에 다음과 같은 Pinpoint Agent jar 파일$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar 를 설정하면 애플리케이션이 실행될 때 바이트코드가 동적으로 조작되어 모니터링 데이터를 수집하고 전달하는 Pinpoint Agent가 실행되게 된다.

Pinpoint Collector

Pinpont Agent에서 받은 데이터를 HBase에 저장한다.

Pinpoint는 코드 수준의 정보를 추적하기 때문에 트래픽이 많아지게 되면 저장하는 데이터의 양도 기하급수적으로 증가하게 된다. 이런 대용량 데이터를 저장하기 위해 Pinpoint는 하둡기반의 분산 데이터베이스인 Hbase를 사용하고 있다.

Pinpoint Web

HBase에서 데이터를 조회해서 Web UI 형태로 시각화된 모니터링 서비스를 제공한다.

참고자료

https://pinpoint-apm.gitbook.io/pinpoint/getting-started/installation
http://developer.gaeasoft.co.kr/development-guide/knowledge/apm/pinpoint/pinpoint-practice/
https://www.youtube.com/watch?v=3Fy6-oGLvuQ

0개의 댓글