APM/Scouter
[자바 트러블슈팅 공부] 각종 메뉴와 필수 그래프 항목
대기업 가고 싶은 공돌이
2024. 12. 27. 17:57
본 게시글은 이상민 저자의 자바 트러블슈팅 책을 읽고 공부한 내용을 정리한 글이다.
Scouter 클라이언트의 종류
- 이제 클라이언트에 대해서 자세히 살펴보도록 하자.
- 스카우터 서버 즉, 콜렉터에 저장되어 있는 내용을 확인하려면 별도의 클라이언트를 거쳐야만 한다.
- 현재 제공하는 클라이언트의 종류는 설치형, 웹형 이렇게 두 가지로 나뉜다.
- 설치형 클라이언트에서 제공하는 기능을 제대로 익히면, 웹 클라이언트를 사용하는 것은 어렵지 않으니
책에서는 설치형 클라이언트를 중심으로 설명한다고 한다. - 설치형 scouter 클라이언트는 윈도우, 리눅스, 맥을 지원한다.
Object 창 살펴보기
- 먼저 왼쪽 상단의 Objects 창을 살펴보자.
- 해당 창에는 수집 서버들의 목록이 나열되어 있고, 그 목록을 펼치면 서버와 JVM 인스턴스들의 목록이 나온다.
- 이 창을 살펴볼 때 유의할 점이 하나 있다.
- 왼쪽의 방향키를 눌러 확장할 것을 권한다.
- 왜냐하면, 더블클릭을 해서 확장하려고 할 경우, 특정 서버의 데이터만 표시되기 때문이다.
- 오브젝트 창에서 어떤 개체를 더블클릭하면 그 서버나 인스턴스만 활성화/비활성화가 된다.
- 만약 서버 열 대가 있는데, 그중 서버 한 대에만 문제가 있어 확인하려고 할 때에는 유용하지만
잘못하면 다른 서버나 인스턴스가 전부 비활성화 되기 때문에 옆에 방향키를 눌러 확장하는 것을 습관으로 들이자.
- 만약 서버 열 대가 있는데, 그중 서버 한 대에만 문제가 있어 확인하려고 할 때에는 유용하지만
- 만약 비활성화가 됐어도 걱정하지 말자. 상단의 톱니바퀴 모양을 누르면
- 이 창이 뜨는데, 여기서 자유롭게 활성화 시킬 수 있다.
수집 서버 추가/ 삭제하기
- 오브젝트 창의 상단을 살펴보면 데스크톱 모양의 아이콘이 존재한다.
- 이 아이콘을 누르면 다음과 같이 수집 서버 목록이 나타나는데, 여기서 서버를 추가할 수 있다.
사용하지 않는 서버 제거하기
- 만약 인스턴스의 이름을 변경할 경우 이전에 사용하던 인스턴스 이름은 회색으로 그대로 남아있다.
- 이 경우에는 Objcts 창 상단에 있는 점 세개를 눌러 Remove Inactive 메뉴를 클릭하면 된다.
- 그러면 데이터가 수집되고 있지 않은 인스턴스들은 창에서 사라진다.
Scouter의 메뉴
- Object 창을 통해 scouter 서버 및 인스턴스 목록을 확인했으니, 이번에는 상단에 있는 메뉴들을 확인해보자
- 주요 클라이언트 메뉴에는 다음과 같은 것들이 있다.
- File
- Management
- Collector
- Host
- Object
- Window
- 여기서 가장 중요한 것은 Collector 메뉴이고, 나머지 메뉴는 1년에 한 번 쓸가 말까 한 것들이라고 한다.
- 각각의 메뉴는 간단히 훑어보고 자주 사용하는 Collector 메뉴에 대해서는 상세히 알아보자
File
- File 메뉴에서 기억해야할 메뉴는 Export perspective settings와
Import perspective settings다. - 만약 내가 구성한 화면을 같이 일하는 동료가 똑같이 구성하고 싶어하거나,
다른 동료가 구성한 화면을 내가 복제해서 사용하고 싶을 때 이 메뉴가 굉장히 유용하다. - 잘 만든 화면 구성이 있다면 Export Perspective settings를 눌러 현재 화면 구성을 저장한다.
- 그 구성을 복제하고 싶은 사람이 그 파일을 전달받아 Import perspective settings를 눌러서 열면 된다.
Management
- Collector Server 메뉴
- 오브젝트에서 데스크탑 아이콘을 누르는 것과 동일한 역할을 한다.
- Object Map 메뉴
- 우리가 추가해서 활성화한 모든 수집 서버들과 서버, 인스턴스들의 관계를 한눈에 보여주는 화면이다.
- Alert 메뉴
- 모니터링 중인 서버에 발생한 알림들을 모아서 볼 수 있는 화면이다.
- 이 메뉴는 그냥 참고용으로만 사용하자.
- 만약 운영하는 서버의 상태가 안 좋다면, Alert 창으로 알림을 보려고 하지 말고,
나중에 설명할 Alert 플러그인을 활용해서 사용 중인 메신저나 이메일로 알림을 받는 것을 추천한다.
- Group Navigation 메뉴
- 여러 수집 서버에 걸쳐서 저장되어 있는 데이터들을 모아서 볼 수 있는데,
그룹 기능에 대해서는 뒷부분에서 다시 설명한다.
- 여러 수집 서버에 걸쳐서 저장되어 있는 데이터들을 모아서 볼 수 있는데,
host
- 호스트 에이전트를 설정하고, 에이전트에서 수집되는 정보의 그래프를 선택할 수 있는 메뉴다.
- 우선 이 메뉴를 활성화 시키기 위해선 Objects 창에서 편집을 원하는 서버를 선택한 후 메뉴를 클릭해야 한다.
- Performance Counter
- CPU, Disk, Memory, Swap, Network 등의 정보들을 제공하는 그래프들을 보여준다.
- 여기서 제공하는 그래프들에 대한 설명은 24장 scouter로 리소스 모니터링 하기에 나와있다.
- Object Request
- 현재 서버의 상태를 확인할 수 있도록 환경 변수(ENV), 프로세스 자원 사용 현황(Top),
디스크 사용량 등을 보여준다.
- 현재 서버의 상태를 확인할 수 있도록 환경 변수(ENV), 프로세스 자원 사용 현황(Top),
- Configure
- 현재 선택된 호스트 에이전트의 설정을 할 수 있다.
- 이전 글에서 수정했던 호스트 에이전트의 설정파일인
scouter.conf 파일을 클라이언트에서 직접 수정하는 것이 가능하다.
- Edit Object Type
- Object창에서 보여지는 아이콘이나 서버의 종류 등을 임의로 변경할 수 있으며,
Set Color로 색을 지정하면 해당 서버의 그래프 색상이 지정된 색으로 나타난다.
- Object창에서 보여지는 아이콘이나 서버의 종류 등을 임의로 변경할 수 있으며,
- Properties
- Host 메뉴에서 지정한 각종 설정들을 표로 확인할 수 있는 기능을 제공한다.
Object
- 이 메뉴의 대부분의 기능은 방금 살펴본 Host와 비슷하지만 대상이 서버가 아니라 인스턴스 중심이라는 부분이 다르다.
- Objects 창에서 특정 인스턴스를 클릭하고 메뉴창을 열면 된다.
- Performance Counter
- 해당 인스턴스만의 그래프를 보고 싶을 경우 이 메뉴를 선택하면 된다.
- Stack Frequency Analyzer
- 10장 스레드 문제의 진단 부분에서 자세히 살펴보자
- Object Request
- 이곳에 있는 메뉴들은 각별히 주의해야 한다.
- 메뉴 하나하나가 운영 중인 서버의 성능에 막대한 영향을 끼칠 수도 있기 때문이다.
- System.GC, Dump 메뉴는 시스템이 순간적으로 정지할 수도 있으니 조심하자.
Window
- 클라이언트 화면을 관리하기 위한 기능을 제공한다.
- Reset Perspective
- scouter를 설치했을 때 제공되는 초기 화면 상태로 돌아가고 싶을 때 사용ㅇ한다.
- Preferences
- 화면의 각종 값들을 변경할 때 사용한다.
그래프 추가하기
- 맨 처음 아무 생각없이 그래프를 닫았다면 곤혹을 치르기 쉽다.
- 해당 그래프는 자동으로 다시 추가되지 않으며, 재시작 해도 이전 상태가 그대로 유지되기 때문이다.
- 그래프를 추가하는 방법은 크게 두 가지로 나뉜다.
- 서버/ 인스턴스 하나만 모니터링 하는 그래프를 추가하는 것과
- 수집 서버에서 모니터링 되는 전체 서버/ 인스턴스를 모니터링하는 그래프를 추가하는 것이다.
- 먼저 전체 서버/ 인스턴스의 그래프를 추가하는 방법을 살펴보자.
- 상단 메뉴에 Collector라는 것이 있다.
- 이렇게 메뉴가 나타나는데, 여기서 호스트 서버 또는 톰캣 서버를 클릭한 후, 추가하고 싶은 그래프를 클릭하면 된다.
- 톰캣의 Active Speed라는 그래프를 추가해보겠다.
- 이 그래프는 아주 필수적인 그래프이기 때문에 꼭 추가해놓길 바란다.
- 만약 서버의 메모리 사용량 그래프를 추가하고 싶다면
- 운영체제를 클릭한 후 메모리를 찾아가서 누르면 된다.
- 그렇다면 각각 하나의 서버/ 인스턴스 그래프를 추가하려면 어떻게 해야 할가?
- Objects 창에서 하나의 tomcat 인스턴스를 선택 후 마우스 오릉쪽 버튼을 클릭하면 메뉴가 나타난다.
- 여기서 Performance Counter라는 메뉴가 있는데,
- 이 메뉴에 커서를 갖다 대면 추가 가능한 메뉴 목록이 나온다.
- 여기서 클릭을 총해 그래프를 추가할 수 있다.
- 서버 한 대의 리소스를 보는 방법도 마찬가지다.
- 이렇게 추가한 그래프를 입맛대로 배치하는 방법은 그래프 타이틀 부분을 클릭한 상태에서
원하는 곳으로 옮기면 된다. - 만약 이미 존재하는 그래프를 반으로 나누어 배치하고 싶다면, 그래프의 가운데 부분으로 커서를 옮기면 된다.
- 이미 존재하는 그래프에 탭으로 구분하고 싶다면 마우스로 제목을 클릭한 상태에서
드래그해서 해당 그래프의 제목 옆으로 커서를 옮기면 된다.
필수 그래프 목록
- 스카우터에는 매우 많은 그래프가 존재하는데, 이 그래프들을 모두 화면에 나타낼 수도 있지만,
그렇게 하면 정신이 없고, 원하는 정보를 확인하기 힘들다.
Tomcat/JAVA 필수 그래프 목록
- GC Count
- 의미: Java 애플리케이션에서 메모리를 정리한 횟수. GC는 더 이상 사용되지 않는 메모리를 해제하여 새로운 메모리를 사용할 수 있도록 함.
- 왜 중요한가: GC가 너무 자주 발생하면 CPU 리소스를 많이 사용하여 애플리케이션 성능이 저하될 수 있음.
- GC Time
- 의미: GC에 걸린 총 시간.
- 왜 중요한가: GC가 오래 걸리면 애플리케이션이 멈추는 시간이 길어져 사용자 경험에 악영향을 줄 수 있음.
- Heap Used / Heap Memory
- 의미: Java 애플리케이션에서 실제로 사용 중인 메모리 크기와 할당된 총 메모리 크기.
- 왜 중요한가: 메모리 부족으로 인해 OutOfMemoryError가 발생하지 않도록 적절히 관리해야 함.
- TPS
- 의미: 초당 처리되는 요청/트랜잭션 수.
- 왜 중요한가: 시스템의 처리 능력을 나타내는 지표로, TPS가 낮으면 병목현상이 발생했을 가능성이 있음.
- Active Service EQ
- 의미: 현재 실행 중인 요청의 수.
- 왜 중요한가: 요청이 계속 쌓이면 서비스가 느려지거나 장애가 발생할 수 있음.
- Active Speed
- 의미: 요청을 처리하는 평균 속도.
- 왜 중요한가: 요청 처리 속도가 느리면 사용자 응답 시간이 길어짐.
- XLog
- 의미: 요청 처리에 대한 실행 로그. 주로 호출한 메서드, 성능 문제, 지연 시간을 시각적으로 확인할 수 있음.
- 왜 중요한가: 문제 발생 시 성능 병목지점을 빠르게 분석하는 데 유용.
서버 필수 그래프 목록
- CPU
- Memory
- Network TX Bytes / RX Bytes
- 의미: 서버에서 보낸 데이터 양(TX)과 받은 데이터 양(RX).
- 왜 중요한가: 네트워크 트래픽이 비정상적으로 많으면 DDoS 공격이나 비효율적인 데이터 전송 문제가 있을 수 있음.
- Swap
나머지 그래프는 상황에 맞춰서 추가하면 된다.
예를 들어, 성능 테스트 중에는 Network CLOSE_WAIT과 TIME_WAIT
- 의미: 네트워크 연결이 종료된 후 해당 연결 상태를 유지하는 TCP 소켓의 수.
- 왜 중요한가:
- CLOSE_WAIT이 많으면 서버가 제대로 연결을 닫지 않아 리소스 누수가 발생할 수 있음.
- TIME_WAIT이 많으면 연결이 너무 자주 열리고 닫히는 비효율적인 통신 패턴일 수 있음.
을 추가하는 것이 유용하고,
메모리가 부족한 장비에서는 메모리 관련 그래프를 추가하는 것이 좋다.
만약 성능이 아주 중요한 서비스의 경우 Swap 영역으로 메모리가 넘어가면 안 되기 때문에,
이 경우엔 Swap 관련 항목을 추가하는 것을 추천한다.