Scouter 모니터링 시스템

풀어갈 나의 이야기·2021년 12월 4일
3

Monitoring

목록 보기
1/1
post-thumbnail

Scouter overview

  • scouter는 LG CNS에서 개발한 APM(Application Performance Monitoring) 도구

  • Windows, Mac OS X, Linux와 같은 다양한 OS를 지원하며, 데이터 수집을 위해 Agent 설치가 필요하다.

modules

  • scouter 는 4가지 모듈이 존재한다.
modules기능
collector에이전트로부터 실시간 모니터링 정보를 수집, 가공하며 실시간 대시보드 제공 및 통계정보관리, 장애/에러 경보 등 관리에 필요한 각종 기능을 수행
Java Agent모니터링 대상 시스템(WAS)에 구성되면 되며, 각종 성능 정보를 수집, 스카우터 서버로 전달하는 역할을 한다.
Host AgentCPU, Memory, 디스크 성능 정보를 Collector로 전송한다.
ClientCollector에서 수집된 정보를 확인하는 클라이언트 프로그램

Plugin

  • Sample
    • scouter-plugin-server-null : 수집데이터를 단순히 출력해 주는 sample plugin
  • Alert
    • scouter-plugin-server-null : 수집데이터를 단순히 출력해 주는 sample plugin
    • scouter-plugin-server-email : Scouter에서 발생하는 alert를 email로 전송하는 plugin
    • scouter-plugin-server-telegram : Scouter에서 발생하는 alert를 telegram으로 전송하는 plugin
    • scouter-plugin-server-slack : Scouter에서 발생하는 alert를 slack으로 전송하는 plugin
    • scouter-plugin-server-line : Scouter에서 발생하는 alert를 line으로 전송하는 plugin
    • scouter-plugin-server-dingtalk : Scouter에서 발생하는 alert를 dingtalk으로 전송하는 plugin
  • Counter
    • scouter-plugin-server-influxdb : Scouter의 성능 counter 데이터를 시계열 DB인 influxDB로 연동하는 plugin

Server

설치 및 실행

  • Scouter는 Agent와 Collector Server 그리고 User용 Client 프로그램으로 구성되며, 이들간의 관계를 잘 아는 것이 중요하다.
    • 각 서버에 설치된 Scouter의 Agent들이 성능 데이터를 Collector로 전송한다.
    • 사용자는 Client 프로그램을 통해 성능 데이터를 본다.
Agent  ⇨⇨⇨  [성능 데이터]  ⇨⇨⇨  Collector(Server)
Client  ⇦⇦⇦  [성능 데이터]  ⇦⇦⇦  Collector(Server)

설치 단계

세부 설치법은 github document 를 참조하고, 대략적인 순서와 큰 구성만 다룬다.
https://github.com/scouter-project/scouter/blob/master/scouter.document/main/Setup_kr.md

1. Scouter 다운로드

  • Scouter 릴리즈 페이지에서 최신버전을 다운로드

2. Scouter Server 설치 및 기동

  • 적절한 위치에 scouter-all-[version].tar.gz 의 압축을 풀어주고, Scouter Server를 실행
    • startup.sh 또는 startup.bat 실행
  • netstat -an | grep 6100 을 해보면 Scouter Server가 LISTEN 하고 있는것을 알 수 있을 것이다.
위 설정에서 알 수 있듯이 SCOUTER는 UDP와 TCP를 모두 사용한다.
성능정보는 UDP를 통해 Collector에 전송되며, TCP 연결은 Client 프로그램을 통해 사용자가 Agent에 특정 요청(예를 들면 Top Process 목록 요청)을 보낼때 사용된다.
연결은 UDP, TCP 모두 Agent가 수행하며, 따라서 Agent와 Collector 사이에 방화벽등이나 보안 정책이 적용되어 있다면 TCP및 UDP 6100 포트가 허용되어 있어야 한다.

3. Scouter Client 실행

  • 접속할 Scouter Serve의 IP나 도메인을 입력

    • ID와 Password를 입력
    • 기본값 : admin / admin
  • Collector에 접속되면 좌측 상단의 Object-View에서 Collector 서버 하나가 있는 것을 확인할 수 있다.
    * 이후에 Agent를 실행할때마다 이 Collector 서버 하위에 모니터링 대상이 나타나게 된다.

4. Host Agent 실행

  • Host Agent 실행 전에 먼저 Collector 접속 설정이 필요
  • 설정 파일에 Collector의 IP와 Port 정보를 설정한다.
    - 설정 파일(default) : [scouter-dir]/agent.host/conf/scouter.conf
  • Host Agent를 시작한다.
    • ./host.sh(또는 host.bat)
    • 정지할 경우는 ./stop.sh (또는 stop.bat)를 수행

5. Java Agent 실행

  • Java Agent는 단독으로 실행되는 것이 아니라, 모니터링할 Java Program이 실행될때 attach되어 모니터링을 수행한다.
    • 따라서 실행하는 Java Program에서 scouter agent를 인식할 수 있도록 명령행 옵션을 설정해야 한다.
    • -javaagent:/[somewhere]/scouter.agent.jar

Client

클라이언트 세부 메뉴

  • (1) Perspective를 관리한다. 이미 만들어진 화면 구성이 있다면 (+)를 클릭하여 추가할 수 있다.
  • (2) 현재 로드된 Perspective(화면구성)이다. 현재 Perspective 에 새로운 차트를 추가하고 재배치했다면 (2)에서 오른쪽 마우스를 눌러 다른 이름으로 저장할 수 있다. 원래 보던 Perspective 는 (1) 을 눌러서 다시 로드할 수있다.
  • (3) 오픈젝트 익스플로러의 툴바 버튼들이다. 오브젝트를 필터링하거나 인액티브 상태의 오브젝트들을 화면에서 제거하는 메뉴들이 있다.
  • (4) 액티브 서비스 이퀄라이져이다. 바를 더블 클릭하면 현재 액티브 서비스 리스트를 상세히 조회 할 수 있다.
  • (5) XLog 차트의 응답시간 축이다. MAX 시간 값을 변경하려면 (5) 글자 부근을 클릭하여 값을 명시적으로 입력한다. 그리고 화면을 한 번 선택한 후 Up / Down 키을 이용하여도 된다.
  • (6) 현재 XLog 차트에 나타나고 있는 트랜잭션 수이다.
  • (7) 오브젝트 네비게이션 View 이다. 화면에서 최상의(sjhost_6100)오브젝트는 Scouter 서버이다.
  • 모니터링 그룹 관점에서 그룹 내 하위 서버의 상태나 오브젝트들을 조회할 수 있는 메뉴들이 링크되어 있다.
  • 메뉴는 오른쪽 마우스를 통해 선택할 수 있다. 오른쪽 마우스를 클릭하면 시스템에 대한 성능들을 조회할 수 있다.
  • Scouter 서버 아래의 sjhost는 서버 Host 를 의미한다. 그리고 tomcat1/tomcat2는 JAVA EE 타입의 오브젝트이다. JAVA 나 WAS 관련 성능 정보를 조회할 수 있으며 화면의 XLog 또한 Tomcat 타입이 디플트이다.
  • 임의의 오브젝트를 Double click하면 선택한 오브젝트로 필터링 된다.
  • (8) Scouter Client 의 힙메모리 사용량이다. 이것을 보고 클라이언트 프로그램의 메모리 부족을 판단할 수 있다.
  • (9) XLog 를 제어하기 위한 툴바, 에러 보기, 혹은 상세 필터링을 위한 화면을 열수 있다.
  • (10) 오브젝트별 대표 성능지표를 조회 할 수 있다. 예를 들어 host 타입(sjhost)은 CPU 가, Tomcat 타입(tomcat1)은 Active Service Count 가 출력된다.
  • (11) XLog 의 X 축은 트랜잭션이 종료된 시간이다. 좌/우 방향키로 이동할 수 있고, +/- 키로 확대 축소가 가능하다.
  • (12) XLog 에서 왼쪽 마우스를 드레그하여 영역을 선택할 수 있고, 영역에 속한 점들(트랜잭션)의 성능을 상세 분석할 수 있다.

XLog 보는 방법

Scouter 에서 응답시간 분포 그래프를 XLog 라고 부른다. XLog 는 Transaction Log 라는 의미에서 2004년에 처음 만들어졌다.
XLog 는 전체 트랜잭션을 한눈에 파악할 수 있고 느린 트랜잭션을 선별하여 조회할 수 있기 때문에 응용 프로그램을 튜닝하는데 가장 효과적인 방법이라 할 수 있다.

XLog 차트는 하나의 트랜잭션(서비스 수행)을 하나의 점으로 표현하는 차트이다.
세로축은 트랜잭션이 수행된 응답시간, 가로축은 트랜잭션의 종료시간이다.
화면의 그래프는 일정시간(2초) 간격으로 Reload 된다. 이때 그래프는 좌측으로 쉬프트 된다.

위 화면에서처럼 왼쪽마우스 버튼을 이용하여 드레그하면 일부 점들을 선별하여 선택할 수 있다. 이렇게 선택된 트랜잭션들은 화면처럼 리스트로 나타난다. 리스트에서 하나를 선택하면 해당 트랜잭션에 대한 상세 정보를 볼 수 있다.

"Performance Counter"와 "Object Request"

  • Scouter에는 모니터링 항목을 크게 두가지로 구분한다.

    • "Performance Counter", 그리고 "Object Request"
  • Performance Counter는 시간에 따라 변하는 값을 실시간 차트 형태로 보여주며

  • Object Request는 사용자가 특정 성능 정보를 요청하여 조회하는 기능이다.

  • 그리고 보통 Performance Counter에 포함하기도 하지만, 그 성격이 전혀 다른 특수한 몇가지 기능이 있다. (XLog, Active Service EQ 등)

  • 이러한 기능들은 상단메뉴에서도 접근이 가능하지만 Object View에서 콘텍스트 메뉴에서 접근하는 것이 더 직관적이다.

1 Performance Counter

  • Performance Counter는 시계열 성능메트릭을 의미한다.

2 Object Request

  • Object request는 원하는 시점에 사용자가 각 Object들에 특정 정보를 요청하는 기능이다.

3. Java 모니터링

  • 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
    • 특정 날짜의 유니크 방문자 수를 보여줌

refference
https://github.com/scouter-project
https://judo0179.tistory.com/26
http://gunsdevlog.blogspot.com

profile
깨끗한 스케치북 일수록 우아한 그림이 그려지법, 읽기 쉽고, 짧은 코드가 더 아름다운 법.. 또한 프로그래머의 개발은 구현할 프로그래밍이 아닌, 풀어갈 이야기로 써내려가는것.

0개의 댓글