IT etc

Scouter 오픈소스 APM으로 웹어플리케이션 성능 모니터링 하기 (무료)

내. 일. 을 바꾸는 업무 자동화 2021. 12. 21. 11:08
반응형

Scouter는 APM (Application Performance Management)프로그램으로 오픈소스 입니다. 

간단하게 웹어플리케이션의 성능을 관리하고 실시간 모니터링 할 수 있는 프로그램입니다. 

기본적으로 CPU 상태, Heap 메모리, GC, 데이터소스 커넥션풀, 스레드풀, 응답시간, 요청시간 등에 대해 실시간으로 성능을 모니터링 하는 기능을 제공합니다. 또한 응답시간에 따른 수행 쿼리에 대한 분석도 가능한 프로그램으로, 비슷한 상용 프로그램으로는 여러분이 잘 알고 있는 Jennifer(제니퍼 소프트) 프로그램을 떠올릴 수 있을 것 같습니다. 

 

제니퍼소프트의 "제니퍼"의 UI는 아래와 같습니다. 

이와 비슷한 기능을 제공하는 Scouter은 무료 오픈 소스로, GIT에 공개되어 있습니다. 

(https://github.com/scouter-project/scouter/releases)

오늘은 운영환경의 어플리케이션 모니터링을 위해 Scouter를 설치하고 모니터링 하는 방법에 대해 포스팅 해 보도록 하겠습니다. 

이번 포스팅은 Windows 운영체제를 기준으로 설명하도록 하겠습니다. 

먼저, Scouter 페이지에서 최신버전을 다운로드 받아 줍니다. (링크)

아래 이미지와 같이 두 개의 파일을 다운로드 받아 압축을 풀어 줍니다. 

먼저, 모니터링할 운영환경에 설치되는 파일인,

scouter-all-2.10.2.tar.gz (모니터링용 엔진) 파일의 압축을 풀어 scouter 폴더를 통째로 c:\ 에 복사해 줍니다. 

다음은, 클라이언트(뷰어) scouter.client.product-win32.win32.x86_64.zip 파일의 압축을 풀어 c:\scouter 폴더 안에 통째로 복사해 줍니다. (뷰어 파일은 원하는 공간에 압축을 풀어 사용하셔도 무방 합니다.)

 

작업이 끝나면 해당 폴더 안에는 아래와 같은 디렉토리들이 존재합니다. 

1) 여기서 server 폴더는 Scouter Server 모듈이 존재하는 서버 기동을 위한 폴더 입니다.

2) agent.host 폴더는 Host Agnet 모듈이 존재하는 폴더 입니다. 

3) scouter.client 폴더는 Scouter Viewr (모니터링을 위한 프로그램) 폴더 입니다.

즉, 1)과 2)는 서버(모니터링을 할 대상)에서 돌아가는 서비스이며, 3)은 모니터링을 위한 프로그램으로 이해하시면 됩니다. 

 

이제, Scouter 서버를 기동시켜 보도록 하겠습니다. 

윈도우의 cmd 창을 실행시켜, c:\scouter\server 경로로 이동 합니다. 그리고, startcon.bat 라는 명령어를 통해 서버를 기동시켜 줍니다. 

위와 같이 startcon.bat를 실행시키면 아래와 같은 기동 명령어들이 지나가며, cmd 창이 유지되는데 이 창을 닫으시면 서버 실행이 끝나므로, 열어 두셔야 합니다.  (창을 닫으면, 서버 실행이 끝나게 됩니다.)

다음은 뷰어 프로그램을 실행시켜 보도록 하겠습니다. 

탐색기를 이용해서 c:\scouter\scouter.client 폴더로 이동합니다. 그리고, scouter 아이콘을 더블클릭 하여 뷰어 프로그램을 실행 시켜 줍니다. 

아래와 같은 뷰어 프로그램이 실행되며 접속(모니터링 할 대상)에 대한 주소와 계정정보를 넣으라고 나타나게 됩니다. 

이번 포스팅에서는 기본 셋팅 그대로 진행하도록 하겠습니다. 

만약, 운영서버와 모니터링 할 PC가 다르다면 접속 주소를 해당 IP로 지정하시면 되고, 방화벽 설정이 필요하나,

이번 포스팅에서는 로컬(개발)환경에서 실행시키는 예제로 포스팅하게 되므로 아래와 같이 127.0.0.1:6100 그대로 입력하시면 됩니다. 

아이디와 암호는 모두 admin 으로 입력하고 OK 버튼을 눌러 주세요.

접속이 완료 되면 아래 이미지와 같이 왼쪽 상단에 Object 부분에 수집서버 이름(보통 pc 이름) 으로 모니터링할 서버가 나타나는 것을 알 수 있습니다. 

다음 단계는 어플리케이션 모니터링을 위해 Host Agent 서비스를 실행 시켜야 합니다.

(모니터링할 대상 서버에서 설치되었다고 가정하고 포스팅 하겠습니다.

만약, 응용 시 config 설정이 필요하다면 c:\scouter\agent.host\conf 폴더에 scouter.conf 파일을 수정하시면 됩니다.)

 

cmd 창을 실행시켜, c:\scouter\agent.host 폴더로 이동한 뒤 host.bat 파일을 실행시켜 줍니다. 

위의 server 구동과 마찬가지로 Host Agent 서비스 기동 후, cmd 창을 닫지 않아야 됩니다. 

(다시 한번 설명드리면 지금 포스팅은 하나의 서버에 어플리케이션이 구동된다 가정하고 server와 host agent를 구동하는 예제 입니다.)

Host Agent 실행 후, 클라이언트(뷰어)로 돌아가 보면 Object view에 하위 객체가 보일 것 입니다. Perf는 CPU 점유량이며, 만약 Host Agent가 여러 대라면 여러개로 구성도 가능합니다. 

환경설정을 위해 Window - Perferences 메뉴를 열어 줍니다. 

Host 서버는 해당 포스팅에서는 windows이므로 윈도우를 지정하고, 모니터링할 JavaEE는 tomcat을 사용하기 때문에 tomcat로 지정하겠습니다. 

자, 여기까지 진행하셨다면 어플리케이션을 모니터링 하는 모든 단계에 설정이 끝났다고 생각하시면 됩니다. 

지금부터는 실제 모니터링할 서비스에 scouter가 attach되는 방법을 설명할 것 인데, 두가지로 나눠 설명하겠습니다. 

1) 개발환경(이클립스) tomcat 구동 시, attach 되어 설정하는 부분

2) 운영환경의 tomcat 구동 시, attach 되도록 환경설정 하는 부분

 

먼저, 1) 개발환경의 이클립스 tomcat에 attach 시키는 방법 입니다. 

이클립스를 실행 시킨 뒤, 서버설정 Overview에서 실행 옵션 창을 클릭하여 줍니다. 

 Arguments 탭으로 이동하여 VM arguments에 아래의 세 줄을 추가 해 줍니다. 

1
2
3
-javaagent:"C:\scouter\agent.java\scouter.agent.jar"
-Dscouter.config="C:\scouter\agent.java\conf\scouter.conf"
-Dobj_name=Numbers
cs

 

OK를 눌러 저장 후, 이제 tomcat를 실행시켜 보도록 합시다. 

아래 이미지와 같이 scouter 설정파일이 attach 되어 실행됨을 콘솔 창에서 확인 할 수 있습니다. 

클라이언트(뷰어)로 돌아와 보면, 방금 attach 된 어플리케이션이 목록에 나타나며, 바로 모니터링이 가능합니다. 

물론 서비스에 요청을 주셔야겠죠? 구동한 서비스를 실행시켜 이것저것 조회하며 트랜잭션을 발생시켜 봅시다. 

간단한 활용 설명을 하면, 여러 상태 모니터링이 가능하며 주로 저는 Xlog를 사용하여 응답시간 별 트랜잭션의 분석을 위해 사용하곤 한답니다. 사용법은 오른쪽 Xlog의 영역에서 모니터링할 트랜잭션 영역을 마우스로 드래그하여 영역을 지정하면 됩니다. 

지나가는 쿼리나 수행 시간에 대한 상세한 내용이 표현되므로 위의 예제를 예로 들면 9초 이상 소요되는 트랜잭션에 대한 문제점 해결등을 위해 사용한답니다. 

 

위까지 진행하셨다면 개발환경(로컬)에서 설정하여 모니터링이 가능하실 것이며, 

이번에는 운영서버 ( 이클립스 없이 바로 tomcat에 적용)에 대해 설명해 보도록 하겠습니다. 

 

2) 운영환경의 tomcat 구동 시, attach 되도록 환경설정 하는 부분

운영환경의 tomcat가 설치된 폴더로 이동하여, bin 폴더안의 catalina.bat 파일을 열어 수정합니다. 

catalina.bat 파일에 위의 로컬(개발)환경과 마찬가지로 tomcat 실행 시, attach 될 수 있도록 아래의 세 줄을 추가하여 어플리케이션을 기동하면 됩니다. 

만약 윈도우의 서비스 형태로 등록되어 있다면 서비스로 구동할 경우 catalina.bat 파일을 읽지 않으므로 아래 명령어를 cmd창에서 실행하여 서비스 실행 시, 옵션이 추가 될 수 있도록 실행합니다.

(cmd 창을 열어 tomcat의 bin 폴더에서 실행)

1
2
3
tomcat9.exe //US//서비스등록된이름 ++JvmOptions="-javaagent:C:\scouter\agent.java\scouter.agent.jar"
tomcat9.exe //US//서비스등록된이름 ++JvmOptions="-Dscouter.config=C:\scouter\agent.java\conf\scouter.conf"
tomcat9.exe //US//서비스등록된이름 ++JvmOptions="-Dobj_name=Numbers"
cs

자, 위와 같이 진행하면 운영서버 환경에서 어플리케이션 모니터링도 가능합니다. 

응용하면, 운영서버에 server과 host.agent 서비스를 돌리고, 클라이언트(뷰어)는 사용자 pc에 설치하여 모니터링도 가능합니다. (단, 운영서버에 접속이 가능하도록 네트워크 방화벽 설정 필요)

 

오늘은 마치 제니퍼와 비슷한 기능을 하는 무료 오픈소스인 Scouter에 대해 포스팅 해 보았는데요, 

어플리케이션 모니터링을 통해 운영환경의 개선 등 활용하여 진행하면 좋을 것 같습니다. 

 

다음 포스팅에서 뵙겠습니다. 

반응형