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
728x90
반응형