
본 게시글은 이상민 저자의 자바 트러블슈팅 책을 읽고 공부한 내용을 정리한 글이다.
APM 이란
- APM은 Application Performance Monitoring의 약자로, 애플리케이션의 성능을 모니터링하고
관리하는 도구를 의미한다. - APM을 사용하면 운영 중인 시스템을 모니터링하거나 성능 측정 시 병목 지점을 매우 빠르게 찾을 수 있다.
상업용 APM 종류
- 다이나트레이스 (dynatrace)
- 현존하는 최고의 APM이다.
- AI까지 도입하여, 자동으로 장애를 감지하는 기능도 제공하고 있다.
- 금전적 여유가 충분하다면 반드시 사용할 도구라고 한다.
- 앱 다이나믹스 (AppDynamics)
- 다이나 트레이스의 기술 지원을 맡았던 사람들이 나가서 만든 APM이라고 한다.
- 뉴 레릭 (New Relic)
- 다양한 언어와 다양한 플러그인을 제공하는 APM이다.
- 초기엔 무료로 일정 기간 사용할 수 있다고 한다.
- 인스타나 (instana)
- 와탭 (Whatap) (국산)
- 국내에서 제일 유명한 제니퍼와 scouter APM을 만든 개발자가 제작하고 있는,
클라우드용 APM으로 자바, 노드, php, 파이썬 등의 언어 모니터링이 가능하다고 한다.
- 국내에서 제일 유명한 제니퍼와 scouter APM을 만든 개발자가 제작하고 있는,
- 인터맥스 (interMax) (국산)
- DBMS 모니터링 도구를 만들었던 회사에서 만든 APM이라고 한다.
국내외 APM을 살펴보면 알 수 있는 가장 큰 차이점은
- 국내: 실시간 모니터링에 매우 집중한다.
- 국외: 문제를 발견하고 관리하는 데 집중한다.
이제 오픈소스 즉, 무료인 APM을 살펴보자
오픈소스 APM 종류
- 핀포인트 (Pinpoint)
- 네이버에서 만든 오픈소스다.
- 자바 에이전트에서 데이터를 수집하여, 핀포인트 collector로 정보를 전송한다.
- 이후 Hbase 데이터베이스에 저장한다.
- 핀포인트 장점
- 전반적인 시스템의 연계 현황을 한 눈에 파악 가능하다.
- 하나의 요청을 여러 서버에 걸쳐 처리한 경우에도, 마치 하나의 서버에서 처리한 것 처럼
프로파일링된 결과를 확인할 수 있다.
- 핀포인트 단점
- 실시간 모니터링 기능이 매우 약하다.
- 화면을 사용자의 마음대로 수정할 수 있는 기능이 없다.
- 초당 처리량이 매우 많을 경우(하나의 인스턴스에서 약 1,000 TPS 이상 처리할 경우) 성능 처하 및 문제가 발생할 수 있다.
- 따라서 초당 처리하는 트랜잭션 양이 많다면 운영서버에서 사용하는 것을 피해야한다.
-
더보기Hbase는 NoSQL 저장소중 하나다. 기본적으로 여러 서버를 사용하는 분산 환경을 기반으로 만들어졌기 때문에,
아주 많은 양의 데이터도 클러스터링 하면 저장이 가능한 장점을 갖고있다고 한다. - 스카우터 (Scouter)
- LG에서 개발한, 자바 모니터링을 위한 오픈소스다.
- 에이전트는 데이터를 수집해서 스카우터 서버로 데이터를 전송한다.
- 수집 서버에서는 별도의 파일 기반 저장소에 데이터를 저장한다.
- 스카우터는 파일 기반의 저장소를 사용하기 때문에 한 대의 서버에만 데이터를 저장할 수 있는 구조가
기본이라고 한다. - 이런 단점을 보완하기 위해 2.5 버전 이후부터는 집킨이라는 아파치 분산 저장소를 활용해 데이터를
저장하는 기능을 추가했다고 한다.
- 만약 방화벽이 설정되어 있는 환경이라면 반드시 방화벽을 열어줘야 한다고 한다.
- 에이전트 -> 스카우터 서버 방향 오픈
- 스카우터 서버 -> 클라이언트 방향 오픈
- 에이전트에서 스카우터 서버 방향은 TCP, UDP 포트를 개방해줘야 하는데, 기본 포트 번호는 6100이라고 한다.
- 서버에서 클라이언트 방향은 TCP 포트를 개방해줘야 하는데, 이 역시 6100이 기본이라 한다.
- LG에서 개발한, 자바 모니터링을 위한 오픈소스다.

이 책에서는 스카우터를 사용해서 공부를 진행할 것이다.
다음 주소에서 스카우터를 다운받아보자
https://github.com/scouter-project/scouter/blob/master/scouter.document/main/Quick-Start_kr.md
scouter/scouter.document/main/Quick-Start_kr.md at master · scouter-project/scouter
Scouter is an open source APM (Application Performance Management) tool. - scouter-project/scouter
github.com
- demo-env1.tar.gz 다운로드
- 압축 해제
- 스카우터 서버 시작
- 클라이언트 시작
- 호스트 에이전트 시작
- 모니터링 대상 애플리케이션 시작
- 브라우저 확인
- 가상 부하 생성
- 모니터링
의 순서로 진행해보자.
- 압축을 해제하고 start-scouter-server.sh를 실행한다.
- 스카우터 서버는 자바 버전 8, 11에서만 실행이 가능하다.
- 이제 스카우터 클라이언트를 시작하자, 클라이언트도 따로 자기 OS에 맞게 다운로드 바란다.
- 스카우터 클라이언트는 자바 버전 11 이상에서만 실행 가능하다.
좀 별로다- id와 password는 모두 admin이다.
- 이제 호스트 에이전트를 시작하자.
- start-scouter-host.sh를 실행한다.
- 호스트 에이전트는 서버의 cpu나 메모리 같은 리소스 정보를 수집한다.
- conf에서 포트 주석과 addr 주석을 해제해주어야 한다.
- 모니터링 대상 애플리케이션 시작
- 이제 자바 에이전트를 스프링부트 애플리케이션에서 실행해야한다.
스카우터 서버랑 클라이언트가 실행이 안 돼서 한참 동안 해결방법을 찾았다.
스프링부트와 연동시키는 작업은 내일 진행하도록 하겠다.
'APM > Scouter' 카테고리의 다른 글
[자바 트러블슈팅 공부] XLog(필터링, 통계), PlugIn, Scouter 사용시 유용한 팁 (0) | 2025.01.15 |
---|---|
[자바 트러블슈팅 공부] Scouter 그래프 보는 법 및 Xlog 보는 방법 (1) | 2024.12.31 |
[자바 트러블슈팅 공부] 각종 메뉴와 필수 그래프 항목 (2) | 2024.12.27 |
[자바 트러블슈팅 공부] scouter와 SpringBoot 연동 ( + 파일들의 역할) (0) | 2024.12.24 |