개발자 피터
Peter's Dev Blog
개발자 피터
전체 방문자
오늘
어제
  • 분류 전체보기 (77)
    • 🧑🏻‍💻 Develop (13)
      • Devops (3)
      • Elasticsearch (3)
      • Design Pattern (1)
      • SQL (4)
      • Architecture (1)
      • APM (1)
    • 💻 Service (7)
      • E-ROOM (3)
      • Briefing (4)
    • 💡 Problem Solving (43)
      • Baekjoon (40)
      • Programmers (2)
    • 📚 Reading (12)
      • Tech (9)
      • Self-Help (3)
    • 💬 Etc (1)
    • 📈 Retrospective (1)

블로그 메뉴

  • 🌟 깃허브
  • 🏷️ 태그 클라우드
  • 📝 방명록

공지사항

인기 글

태그

  • 그리디
  • 구현
  • boj
  • 백준
  • briefing
  • SQL
  • 독서
  • 문자열
  • java
  • elasticsearch
  • Programmers
  • 브루트포스
  • E-ROOM
  • 백트래킹
  • MySQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
개발자 피터

Peter's Dev Blog

[APM] 오픈소스 APM Pinpoint 알아보기
🧑🏻‍💻 Develop/APM

[APM] 오픈소스 APM Pinpoint 알아보기

2024. 3. 20. 20:21
728x90
반응형

🚀 Pinpoint란?


요즘 서비스들은 여러 다른 컴포넌트들로 구성되어 있어서, 컴포넌트들끼리 서로 통신하고 외부 서비스에 API를 요청하기도 합니다. 하지만 각 트랜잭션이 어떻게 처리되는 지 자세히 알기는 쉽지 않습니다. 이런 상황에서 Pinpoint가 유용합니다. 서로 다른 컴포넌트 사이에서 일어나는 트랜잭션의 흐름을 추적해서 어디에 문제가 있는지, 어디가 병목 지점인지 한 눈에 파악할 수 있게 해줍니다.

(자세한 설명은 링크 참조) https://pinpoint-apm.gitbook.io/pinpoint#want-a-quick-tour

  • Java, PHP, Python으로 작성된 대규모 분산 시스템을 위한 APM(Application Performance Management) 툴
  • 분산 애플리케이션 간의 트랜잭션을 추적함으로써 시스템의 전체 구조와 컴포넌트들이 어떻게 연결되어 있는지 분석하는데 도움을 주는 솔루션을 제공

 

💡 언제 사용하면 될까?


  • 애플리케이션 토폴로지를 한눈에 이해하고 싶을 때
  • 실시간으로 애플리케이션 모니터링을 하고 싶을 때
  • 모든 트랜잭션에 대해 코드 레벨 가시성을 얻고 싶을 때
  • 단 한 줄의 코드 수정없이 APM 에이전트를 설치하고 싶을 때
  • 성능에 미치는 영향을 최소화하고 싶을 때 (리소스 사용량이 대략 3%정도만 상승함)

 

📝 시작 가이드


  • Pinpoint를 간단히 테스트해 보기 위한 빠른 시작 가이드
  • 더 자세한 설치 방법은 설치 가이드를 참조
  • Live Demo) Pinpoint Demo!

 

🌐 기능 살펴보기


ServerMap

  • 분산 시스템의 토폴로지를 이해할 수 있음.
  • 컴포넌트들이 어떻게 서로 연결되어 있는지 시각화하여 보여줌
  • 노드를 클릭하면 해당 컴포넌트의 현재 상태나 트랜잭션 수 같은 세부 정보를 확인할 수 있음

Realtime Active Thread Chart

  • 애플리케이션 내부의 활성 스레드를 실시간으로 모니터링 가능

Request/Response Scatter Chart

  • 시간에 따른 요청 수와 응답 패턴을 시각화하여 잠재적 문제 식별
  • 차트 위에서 드래그하여 트랜잭션을 선택하면 더 자세한 정보 확인 가능

 

CallStack

  • 분산 환경에서 각 트랜잭션에 대한 코드 레벨 가시성 확보
  • 한 화면에서 병목이나 실패 지점 식별

 

Inspector

  • 애플리케이션에 대한 추가적인 세부 정보 확인
  • CPU 사용량, 메모리/Garbage Collection, TPS, JVM arguments 등

 

URI-metric

  • v2.5.0에 신규로 추가된 기능
  • URI 통계 데이터 조회
  • https://pinpoint-apm.gitbook.io/pinpoint/documents/uri_statistics

 

Infrastructure (System metrics)

  • v2.5.0에 신규로 추가된 기능
  • 호스트를 선택해서 System metric 데이터 확인 가능
  • https://pinpoint-apm.gitbook.io/pinpoint/documents/system_metric

 

🧑🏻‍💻 아키텍쳐


Pinpoint Agent

  • 애플리케이션의 모니터링 정보(ex. API 상세 호출 내역, CPU, 활성 스레드 개수 등)를 Collector에 전달
  • Pinpoint Agent는 JVM의 javaagent 옵션을 활용하는데, javaagent를 사용하면 클래스 로더가 클래스를 읽어올 때 동적으로 바이트 코드를 조작할 수 있음.
    → 이는, Pinpoint를 도입하기 위해서 애플리케이션 내의 코드를 수정할 필요가 없다는 것을 의미

Pinpoint Collector

  • Pinpoint Agent로부터 받은 데이터를 HBase 데이터에 적재
  • Pinpoint에서 HBase를 사용하는 이유
    → Pinpoint는 코드 수준의 정보를 추적하기 때문에 트래픽이 많아지게 되면 저장하는 데이터의 양도 기하급수적으로 증가하므로 이러한 대용량 데이터를 저장하기 위해 하둡기반의 분산 데이터베이스인 HBase 사용

Pinpoint Web UI

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

 

🍀 도입하기


Pinpoint를 서비스에 도입하는 과정은 Briefing 서비스에 Pinpoint를 붙여보며 다음 글로 작성하겠습니다:)

 

 

[참고]

https://pinpoint-apm.gitbook.io/pinpoint

https://github.com/pinpoint-apm/pinpoint

https://tech.trenbe.com/2022/02/22/pinpoint.html

https://roopredev.tistory.com/9

728x90
반응형
저작자표시 (새창열림)
    개발자 피터
    개발자 피터
    Backend Engineer 🔥

    티스토리툴바