APM/Scouter

[자바 트러블슈팅 공부] APM이란?, 스카우터 기본 세팅

대기업 가고 싶은 공돌이 2024. 12. 19. 22:02

본 게시글은 이상민 저자의 자바 트러블슈팅 책을 읽고 공부한 내용을 정리한 글이다.

 

APM 이란

  • APM은 Application Performance Monitoring의 약자로, 애플리케이션의 성능을 모니터링하고
    관리하는 도구를 의미한다.
  • APM을 사용하면 운영 중인 시스템을 모니터링하거나 성능 측정 시 병목 지점을 매우 빠르게 찾을 수 있다.

상업용 APM 종류

  • 다이나트레이스 (dynatrace)
    • 현존하는 최고의 APM이다.
    • AI까지 도입하여, 자동으로 장애를 감지하는 기능도 제공하고 있다.
    • 금전적 여유가 충분하다면 반드시 사용할 도구라고 한다.
  • 앱 다이나믹스 (AppDynamics)
    • 다이나 트레이스의 기술 지원을 맡았던 사람들이 나가서 만든 APM이라고 한다.
  • 뉴 레릭 (New Relic)
    • 다양한 언어와 다양한 플러그인을 제공하는 APM이다.
    • 초기엔 무료로 일정 기간 사용할 수 있다고 한다.
  • 인스타나 (instana)
  • 와탭 (Whatap) (국산)
    • 국내에서 제일 유명한 제니퍼와 scouter APM을 만든 개발자가 제작하고 있는,
      클라우드용 APM으로 자바, 노드, php, 파이썬 등의 언어 모니터링이 가능하다고 한다.
  • 인터맥스 (interMax) (국산)
    • DBMS 모니터링 도구를 만들었던 회사에서 만든 APM이라고 한다.

국내외 APM을 살펴보면 알 수 있는 가장 큰 차이점은

  • 국내: 실시간 모니터링에 매우 집중한다.
  • 국외: 문제를 발견하고 관리하는 데 집중한다.

이제 오픈소스 즉, 무료인 APM을 살펴보자

 

오픈소스 APM 종류

  • 핀포인트 (Pinpoint)
    • 네이버에서 만든 오픈소스다.
    • 자바 에이전트에서 데이터를 수집하여, 핀포인트 collector로 정보를 전송한다.
    • 이후 Hbase 데이터베이스에 저장한다.
    • 핀포인트 장점
      • 전반적인 시스템의 연계 현황을 한 눈에 파악 가능하다.
      • 하나의 요청을 여러 서버에 걸쳐 처리한 경우에도, 마치 하나의 서버에서 처리한 것 처럼
        프로파일링된 결과를 확인할 수 있다.
    • 핀포인트 단점
      • 실시간 모니터링 기능이 매우 약하다.
      • 화면을 사용자의 마음대로 수정할 수 있는 기능이 없다.
      • 초당 처리량이 매우 많을 경우(하나의 인스턴스에서 약 1,000 TPS 이상 처리할 경우) 성능 처하 및 문제가 발생할 수 있다.
      • 따라서 초당 처리하는 트랜잭션 양이 많다면 운영서버에서 사용하는 것을 피해야한다.
  • 더보기
    Hbase는 NoSQL 저장소중 하나다. 기본적으로 여러 서버를 사용하는 분산 환경을 기반으로 만들어졌기 때문에,
    아주 많은 양의 데이터도 클러스터링 하면 저장이 가능한 장점을 갖고있다고 한다.
  • 스카우터 (Scouter)
    • LG에서 개발한, 자바 모니터링을 위한 오픈소스다.
      • 에이전트는 데이터를 수집해서 스카우터 서버로 데이터를 전송한다.
      • 수집 서버에서는 별도의 파일 기반 저장소에 데이터를 저장한다.
      • 스카우터는 파일 기반의 저장소를 사용하기 때문에 한 대의 서버에만 데이터를 저장할 수 있는 구조가
        기본이라고 한다.
      • 이런 단점을 보완하기 위해 2.5 버전 이후부터는 집킨이라는 아파치 분산 저장소를 활용해 데이터를 
        저장하는 기능을 추가했다고 한다.
    • 만약 방화벽이 설정되어 있는 환경이라면 반드시 방화벽을 열어줘야 한다고 한다.
      • 에이전트 -> 스카우터 서버 방향 오픈
      • 스카우터 서버 -> 클라이언트 방향 오픈
    • 에이전트에서 스카우터 서버 방향은 TCP, UDP 포트를 개방해줘야 하는데, 기본 포트 번호는 6100이라고 한다.
    • 서버에서 클라이언트 방향은 TCP 포트를 개방해줘야 하는데, 이 역시 6100이 기본이라 한다.

이 책에서는 스카우터를 사용해서 공부를 진행할 것이다.

다음 주소에서 스카우터를 다운받아보자

 

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

 

  1. demo-env1.tar.gz 다운로드
  2. 압축 해제
  3. 스카우터 서버 시작
  4. 클라이언트 시작
  5. 호스트 에이전트 시작
  6. 모니터링 대상 애플리케이션 시작
  7. 브라우저 확인
  8. 가상 부하 생성
  9. 모니터링

의 순서로 진행해보자.

 

  • 압축을 해제하고 start-scouter-server.sh를 실행한다.
    • 스카우터 서버는 자바 버전 8, 11에서만 실행이 가능하다.
  • 이제 스카우터 클라이언트를 시작하자, 클라이언트도 따로 자기 OS에 맞게 다운로드 바란다.
    • 스카우터 클라이언트는 자바 버전 11 이상에서만 실행 가능하다.
    • 좀 별로다
    • id와 password는 모두 admin이다.
  • 이제 호스트 에이전트를 시작하자.
    • start-scouter-host.sh를 실행한다.
    • 호스트 에이전트는 서버의 cpu나 메모리 같은 리소스 정보를 수집한다.
    • conf에서 포트 주석과 addr 주석을 해제해주어야 한다.
  • 모니터링 대상 애플리케이션 시작
    • 이제 자바 에이전트를 스프링부트 애플리케이션에서 실행해야한다.

스카우터 서버랑 클라이언트가 실행이 안 돼서 한참 동안 해결방법을 찾았다.

 

스프링부트와 연동시키는 작업은 내일 진행하도록 하겠다.