기타/관리

[APM] Scouter 설치 및 자바 애플리케이션과 연동하기 with Docker

펭귄힝 2024. 5. 17. 17:35

오늘은 내가 만든 자바 애플리케이션에 Scouter를 연동시켜보려 한다.

 

여기서 말하는 Scouter란 무엇일까?

검색하면 바로 나오지만 그냥 간단히 말해서 자바로 만들어진 성능 관리 모니터링 도구라고 정의할 수 있겠다.

 

 

0. 동작 흐름

 

직접 Scouter를 사용해보기 전에 간단한 흐름을 알고 사용하면 좋다.

출처: https://github.com/scouter-project/scouter/blob/master/scouter.document/main/Quick-Start_kr.md

 

Collector(Server) 를 띄우고 각각의 agent 들이 정보를 수집하여 Collector 로 보내는 방식이다.

그리고 Collector의 정보를 Client 를 실행하여 확인이 가능하다.

 

 

 

 

 

 

 

 

 

 

1. Scouter 설치 및 실행

자 그럼 본격적으로 스카우터를 설치하고 실행해보자

 

https://github.com/scouter-project/scouter/releases/tag/v2.20.0

 

Release v2.20.0 · scouter-project/scouter

Notification execute the command to run scouter client for Mac(OSX) xattr -cr scouter.client.app The following JAVA environment variable must be added to dynamically load SCRIPT PULGIN in a JAVA P...

github.com

 

위 스카우터 공식 github 에 접속해서 사진에 보이는 파일의 다운로드 링크를 복사한다. (이 글에서는 2.20.0 버전을 사용한다.)

 

 

 

 

 

 

복사한 다운로드 링크를 서버 컴퓨터에 붙여넣어서 다운로드 한다. 이때, 서버 컴퓨터에는 자바 11 버전 이상이 설치되어 있어야 한다. (필자는 현재 자바 11 버전이 설치되어 있는 환경에서 진행한다.)

 

 

 

 

 

 

다운로드한 파일의 압축을 풀어준다.

 

 

 

 

 

 

압축을 풀면 위와 같이 scouter 라는 새로운 폴더가 생긴다.

 

 

 

 

 

Scouer 서버(Collector) 실행

 

scouter/server 경로로 이동해서 startup.sh 파일을 실행해준다.

 

 

 

 

 

 

netstat -an | grep 6100 명령을 사용하여 6100번 포트가 잘 열려있는지 확인해준다.

(6100번 포트를 기본으로 사용하여 통신하기 때문에 클라이언트에서 모니터링을 원활히 하기 위해서는 서버 컴퓨터에서 6100번 포트를 열어두어야 한다. AWS의 경우 인바운드 규칙을 설정해주어야 함.)

 

 

 

 

 

Host Agent 실행

여기서 말하는 Host Agent 는 애플리케이션을 띄우고 있는 호스트 PC의 성능 정보를 위에서 실행한 스카우터 서버(Collector)로 보내는 역할을 수행한다.

 

 

Host Agent 를 실행하기 전에 먼저 설정을 해주어야 한다. scouter/agent.host/conf 폴더로 이동하여 vi scouter.conf 명령으로 설정 파일을 연다.

 

 

 

 

 

원래는 모두 # 으로 주석처리가 되어있을텐데 위의 중요한 3개만 주석을 해제하고 저장해준다.

 

 

 

 

 

 

scouter/agent.host 로 이동하여 ./host.sh 명령으로 스크립트를 실행해준다. (위 사진에서는 host.bat 파일을 실행하려 하고있지만 host.sh 를 실행해주도록 하자. 그래야 쉘을 벗어나서 다른 작업을 할 수 있다.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 클라이언트로 Scouter 서버 접속해서 확인

위의 과정을 모두 마쳤다면 이제 클라이언트로 접속해서 확인해보자.

 

 

가장 먼저 아까 봤던 스카우터 공식 github에 접속하여 위 사진에 보이는 파일을 로컬 PC(윈도우 환경) 에 다운로드하여 압축을 풀어준다.

 

 

 

 

 

 

압축을 풀었다면 scouter.exe 를 실행한다.

(이 때, 자바 11버전 이상이 설치되어 있어야 한다. 필자는 17버전 설치되어 있음)

 

 

 

 

 

 

위와 같이 뜰텐데 자신의 서버 주소와 포트, 아이디 비밀번호 모두 admin 으로 입력하고 ok 해준다.

 

 

 

 

 

 

이렇게 뜨면 연결이 된 것이다. 녹색 불은 연결된 것을 나타내고 빨간색 불은 연결되지 않았음을 나타낸다.

현재 Host Agent 만 실행해두었기 때문에 서버 컴퓨터에 대한 정보만 확인 가능하다.

 

 

 

 

 

 

 

 

 

 

3. 자바 애플리케이션 연동

이제 내가 만든 애플리케이션을 Scouter 와 연동시켜보겠다.

 

 

로컬 PC에 있는 Gradle 프로젝트인데 대충 이렇게 생겼다. 여기에 Scouter Java Agent 파일을 추가해주어야 한다.

 

 

 

 

 

공식 스카우터 github에 접속해서 위 사진에 보이는 파일을 로컬 PC에 다운받자

 

 

 

 

 

 

압축 파일 내부의 aget.java 폴더 안의 파일들만 사용할 것이므로 이것만 따로 압축풀어준다.

 

 

 

 

 

프로젝트 내의 별도로 scouter 폴더를 만들고 그 안에 agent.java 폴더 안에 있는 scouter.agent.jar 파일과 conf/scouter.conf 파일을 꺼내어 넣어주었다.

 

 

 

 

 

 

최종적으로 프로젝트 내의 scouter 폴더 내부의 모습은 이렇다. 이제 scouter.conf 파일을 텍스트 편집기로 열어서 수정해주어야 한다.

 

 

 

 

 

 

위와 같이 주석되어 있는 부분을 해제하여 변경해주도록 하자. 설정 필드 이름만 봐도 알 수 있듯이 Collector 의 아이피와 포트 번호를 적어주면 된다. 필자의 경우 스카우터가 구동 중인 서버 컴퓨터에서 도커로 애플리케이션을 배포할 것이기 때문에 도커 컨테이너에서 호스트 OS의 아이피를 나타내는 172.17.0.1 을 적어주었다.

 

이제 Dockerfile 을 수정하여 CI/CD 가 원활히 되도록 해주어야 한다.

 

 

 

 

 

Dockerfile 의 내용을 수정해주었다.

scouter 폴더의 내용을 컨테이너 내부로 복사시키고 애플리케이션을 실행할 때 스카우터의 agent와 그 설정 파일을 지정해주면 된다.

 

 

 

 

 

 

최종적으로 Dockerfile 을 수정하여 배포한 후 클라이언트로 다시 접속하여 확인해보면 위와 같이 성능에 대한 지표가 잘 나타나는 것을 확인해볼 수 있다.

 

 

 

 

 

 

 

 

 

참고 자료