티스토리 뷰

지난 시간에 scouter 설치와 application과의 연동을 알아보았다. 이제 이렇게 연동된 application과 server에 대한 정보를 가지고 모니터링을 해야 한다. 우선 scouter client를 구성하기 앞서 설정을 할 부분이 있다. 바로 그룹에 대한 설정이다. 그룹에 대한 설정은 모니터링 대상 application의 tomcat에서 다음과 같이 할 수 있다. 

 

catalina.sh or startup.sh

JAVA_OPTS=" ${JAVA_OPTS} -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar"
JAVA_OPTS=" ${JAVA_OPTS} -Dscouter.config=${SCOUTER_AGENT_DIR}/conf/scouter.conf"
JAVA_OPTS=" ${JAVA_OPTS} -Dobj_name=myFirstTomcat1"
JAVA_OPTS=" ${JAVA_OPTS} -Dobj_type=userGroup1"                    #scouter 1.7 미만
JAVA_OPTS=" ${JAVA_OPTS} -Dmonitoring_group_type=userGroup1"       #scouter 1.7 이상

아래의 두 줄이 이 application이 속할 group을 나타낸다. 필자는 userGroup1 이라는 그룹으로 이 어플리케이션을 묶기로 하였다. 여러개의 어플리케이션이 있고 이것들을 묶어서 관리를 하고 싶다면 아래 두 줄을 다 추가시켜주자. 묶어서 관리를 한다는건 한정된 화면에 많은 서버를 모니터링 해야할때 필요하다. 

 

이렇게 설정이 다 되었으면 어플리케이션을 재기동해준다. 

 


Scouter Client 화면 구성

Scouter를 기동했으면 내가 설정하지 않은 것들이 화면 가득히 펼쳐져있다. 이것들을 지우고 내가 원하는 항목만 넣어보자. 

 

Perspective

 

가장 먼저 해야할일은 Perspective를 구성하는것이다. 이클립스의 Perspective와는 약간 개념이 다른것 같다. 여기서의 Perspective는 설정별 화면 구성을 뜻하는것 같다. User 별로 구성을 할수도, Phase별로 구성을 할수도, 서버별로 구성을 할수도 있다. 이렇게 만들어 두면 간단하게 화면을 전환하여 효율적으로 사용할 수 있다. 

 

서비스를 더블클릭해서 지금부터 구성할 새 화면을 만들어준다. 아래는 phase 별로 화면을 각각 만들어 놓은 것이고 궁극적으로는 이런 형태로 사용하는 것이라고 이해하면 된다. 

 

생성이 되면 Save As... 로 이름을 바꿀 수 있다. 마음에 드는걸로 변경하고 Save!


Scouter는 기본적으로 값이 동적으로 변하는 Performance Counter와 특정 성능정보를 조회해 볼수 있는 Object Request로 모니터링 항목을 구분할 수 있다. 

 

Performance Counter

Collector 

Collector는 JAVA 모니터링을 하는것이라고 생각하면 된다. 모니터링을 하되 하나가 아닌 여러개의 application을 group 단위로 묶어서 모니터링 하기 위한 메뉴이다. 

 

Scouter Collector

상단의 Collector를 열어본다. 그럼 아까 만들어 놓은 그룹이 보일것이다. 아까도 말했지만 이것은 하나의 application에서 수집된 정보가 아닌 이 그룹으로 묶인 application들의 정보이다. 여기에 빨간색으로 표시한 항목들은 필자가 자주 사용하는 항목들이다. 이름만 봐도 무얼 뜻하는지 알수 있어서 몇개의 항목에 대해서만 간단히 알아보자. 

 

  • Active Service
    • 측정 순간에 서버에서 동시에 실행중인 서비스의 개수를 의미합니다.
  • Elapsed90%
    • 90%로 느린 응답시간을 나타냅니다.(예를 들어 100개의 요청이 들어왔다면 이중 90번째로 느린 요청의 응답시간입니다.)
  • Process CPU
    • 해당 Java process가 사용하는 CPU% 입니다.
  • Queuing Time
    • Java 프로그램(주로 Servlet container인 경우)의 앞단의 reverse proxy나 gateway 서버로부터 java 프로그램으로 요청이 들어오기 까지의 시간을 의미합니다.
      (reverse proxy나 gateway 서버에 특별한 설정이 필요합니다.)
  • Recent User
    • 일반적으로 말하는 concurrent user와 유사한 개념입니다.
      HTTP로 서비스되는 환경에서는 concurrent user라는 개념이 모호하므로, Scouter에서는 최근 5분간 1번이라도 요청을 보낸 사용자수를 Recent User라는 개념으로 제공합니다.
      (측정 시간은 설정으로 변경 가능하며, 유니크 사용자를 cookie, header, ip 등으로 판단하는 옵션 제공)
  • Today Visitor
    • 특정 날짜의 유니크 방문자 수를 보여줍니다.
  • Active Service EQ
    • 현재 시점에 얼마나 많은 서비스가 동시에 수행되는지를 한 눈에 파악하기 위한 이퀄라이저 형태의 차트입니다. 이 차트를 더블클릭하게되면 현재 수행되는 서비스를 "Active Service View"에서 목록 형태로 보여주게 됩니다.
  • Active Service View
    • 현재 시점에 서버에서 수행중인 서비스 목록 및 이에 대한 상세 정보입니다.
      서비스명 및 수행중인 SQL이나 호출하고 대기중인 원격 Service URL이 보여지게 되며, 코드의 어떤 부분이 수행중인지 알 수 있도록 StackTrace 및 Thread의 Lock 정보등이 제공됩니다.
  • XLog
    • 모든 요청에 대해 scatter 차트형태로 보여주며 이를 통해 어플리케이션의 상태를 직관적으로 파악할 수 있습니다.
      XLog 차트를 통해 어플리케이션 상태를 파악하고, 상세한 정보는 개별 요청의 Profile View에서 확인하게 됩니다.
      Scouter의 제품 목표 중 하나가 XLog 차트를 이용하여 어플리케이션에서 발생하는 문제를 빠르게 확인하고 원인을 찾아내는 것이기 때문에 여기서 제공하는 기능이 상당히 많습니다.

 

 

여기서 원하는 항목을 하나 눌러본다. 그럼 화면에 바로 추가가 된다. 

 

Scouter Heap Total

필자는 예제를 준비하면서 여러개의 application을 구성하지 않아서 여러개의 application이 하나의 group으로 묶인 것의 Heap Total 을 화면에 구성을 해봤다. group으로 묶어 놓기만 하면 이런식으로 간단하게 여러 object의 정보를 한번에 확인할 수 있다. 

 

Scouter 화면 구성

이런식으로 필요한 기능들을 Collector에서 뽑아내 화면을 구성해볼수 있다. 

 

Host 

Collector에서는 JAVA monitoring을 했다면 Host는 서버의 모니터링을 할 수 있다. 

 

Scouter Host

모니터링 하고 싶은 Host가 Linux라면 펭귄 모양으로 표시가 된다. 이 펭귄을 클릭하면 상단의 Host가 활성화가 된다. 이곳에서는 CPU, Disk, Memory, Network (InBound, OutBound) 등의 항목을 구성할 수 있다. Collector에서 했던것과 마찬가지로 이곳에서도 원하는 항목을 누르면 바로 화면에 나타나고 드래그를 통해서 화면을 구성할 수 있다. 

 

Scouter Host

설치와 설정만 제대로 했다면 Scouter Client 안에 들어와서 application의 정보와 server(host)의 정보를 가지고 와서 보는것은 일도 아니다. 많이 사용되는 항목들도 마찬가지로 화면에 추가를 한다. 서버별로 정리해서 보고 싶다면 Host용 별도의 Perspective를 하나 만들어서 서버쪽만 보는것도 좋지만 이건 Zabbix나 다른 모니터링 툴을 사용하는것이 더 좋은것 같다.

 

Object

Object는 단일 application에 대한 모니터링을 하고 싶을때 사용한다. 위에서 설명한 Collector와 거의 동일하되 Group이 아닌 단독 application이라고 생각하면 된다.  

좌측에서 특정 서버에 올라가 있는 특정 application을 클릭하면 상단의 Object가 활성화가 된다. 이후 할수 있는 일은 위의 Collector에서 한것과 동일하다. 

 


Object Request

Collector고 Host고 Object고 모두 env와  Configration 조회 및 변경이 가능하다. 필요한 부분의 설정 및 환경변수 정보 등을 모두 Scouter Client 내에서 확인할 수 있고 그 외의 유용한 기능들도 이곳에서 찾아볼 수 있다. 

 

Collector Env, Configures

Object Request는 각 모니터링 대상(Object)의 콘텍스트 메뉴에서 사용이 가능하다. 

 

Host Env, Configure

Host > Object Request에서 제공하는 항목은 다음과 같다.

  • Env
    • OS의 환경 변수를 조회합니다.
  • Disk Usage
    • Disk 사용량을 조회합니다.
  • Top
    • 요청 시점의 Process를 조회합니다

 

Object Env, Configure

Object > Object Request에서 제공하는 항목은 다음과 같다.

 

  • Thread List
    • 해당 Java Process의 Thread 목록을 테이블 형태로 보여줍니다.
  • Active Service List
    • 요청 시점에 실행중인 Service 목록을 보여줍니다. Active Service EQ를 더블 클릭해서도 접근할 수 있습니다.
  • Loaded Class List
    • 로드한 Class의 목록을 보여줍니다.
    • 변경한 Hooking 옵션을 Runtime에 적용하기 위해 Class를 Redefine 하는 기능을 제공합니다.
  • Heap Histogram
    • Heap Histogram을 보여줍니다.
  • Thread Dump
    • Thread Dump를 보여줍니다.
  • Env
    • JVM의 환경변수를 조회합니다.
  • Socket
    • 해당 Process에셔 연결한 Socket의 정보를 보여줍니다.
    • Socket#connect의 stackTrace 를 생성하고 조회할 수 있습니다.
  • System.GC
    • System.GC()를 호출합니다.
  • Heap Dump
    • Heap Dump를 생성합니다.
  • File Dump
    • 위에서 언급한 기능들을 수행하여 파일로 저장합니다.

 

이정도만 알아도 Scouter의 기본적인 사용은 할 수 있을것이다. 이 외에 임계치 설정, alert 등 세부적인 Config 설정에 대한 내용은 다음 시간에 알아보도록 하자. 

 

참고 : gunsdevlog.blogspot.com/2017/07/scouter-apm-2-12.html

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31