본문 바로가기
스프링부트/액추에이터

3. 스프링 부트 액추에이터(그라파마 연동)

by amobu0 2024. 6. 2.

실전 스프링 부트(책) 및 김영한 님의 강의에서는 마이크로미터, 그라파나, 프로메테우스에 대한 상세 내용을 다루는 것은 책, 강의 범위를 벗어나기 때문에 기초 내용과 올바른 방향을 설명하는데 초점을 맞추고 더 자세한 내용이 필요한 경우 별도의 학습이 필요하고 공식 문서를 참고하라고 나와있다.

 


그라파나(Grafana)

그라파나는 수집한 여러 가지 측정지표를 다양한 그래프, 시계열 차트, 게이지 테이블 등을 이용해서 대시보드에 그려주는 시각화 도구로 매우 유연하고 다양한 데이터소스를 제공한다. 즉, 프로메테우스를 통해 데이터를 조회하고 보여주는 역할을 한다.


그라파나 설치 (24년 6월 2일 기준   &&  설치 환경: macOS /  Apple M2)

그라파나를 설치해보자 

 

그라파나 공식홈페이지 다운로드 - curl -O https://dl.grafana.com/enterprise/release/grafana-enterprise-11.0.0.darwin-amd64.tar.gz

 

 

다운로드가 완료되면  다운로드된 압축파일을 원하는 곳에 풀고 H2 데이터베이스를 실행하는 것처럼 그라파나 폴더 -> bin 폴더에서 터미널을 열고 ./grafana-server를 입력한다. 프로메테우스를 처음 실행할 때와 똑같은 에러 메시지가 나온다. 이전 글에서 프로메테우스 차단 해제 방법과 같은 방법으로 차단 설정을 해제한다. 시스템 설정 -> 개인정보 보호 및 보안에 들어가 그래도 허용을 선택해서 차단 해제 후 ./grafana-server 명령어로 그라파나를 재실행한다. (주의 -  프로메테우스 터미널 창을 닫지 않고 그라파나를 실행한다.)

 

시스템 설정 -> 개인정보 보호 및 보안에서 그라파나가 차단된 상태

 

터미널에서 실행 결과

 

 

 

 

http://localhost:3000으로 접속하면 로그인 페이지화면이 나타난다. Email or username에 admin & Password에 admin을 입력하고 로그인에 성공하면 새 비밀번호 설정은 Skip을 눌러서 건너뛴다.

http://localhost:3000 그라파나 로그인 페이지

 

 

 

새 비밀번호 페이지를 Skip하면 다음과 같은 화면이 나타난다.

그라파나 로그인 후 화면

 


그라파나와 프로메테우스 연동

프로메테우스가 애플리케이션에서 메트릭 정보를 가져오듯이 그라파나도 프로메테우스에서 데이터정보를 가져와 시각화하기 때문에 그라파나와 프로메테우스 연동작업이 필요하다. 

 

그라파나 페이지 왼쪽 아래 설정아이콘 Configuration -> Data source -> Add data source를 눌려서 Prometheus를 추가한다.

 

 

 

 

Setting 화면이 나오는데 HTTP URL칸에 http://localhost:9090을 입력한다.
1개의 설정만 해주고 Save & test를 눌려 연동결과 알림을 확인한다.

url에 http://locatlhost:9090을 입력한 화면

 

 

 

 

Data source에 다시 접속하면 Prometheus가 추가된 결과를 확인할 수 있다.

 

Data source에 Prometheus가 들어가 있는 모습

 


그라파나 - 대시보드 만들기

주의  - 다음 3가지를 꼭 수행하기!!!

  1. 애플리케이션 실행
  2. 프로메테우스 실행
  3. 그라파나 실행

이제 모니터링을 할 수 있는 대시보드를 만들어보자 http://localhost:3000/dashboards에 접속하거나 대시보드 아이콘을 눌려서 대시보드 페이지로 이동하면 오른쪽에 New 아이콘에서 New Dashborad 버튼으로 대시보드를 생성한다.

대시보드 생성 페이지

 

대시보드를 생성하고 Saved dashboard -> 대시보드 이름 설정 -> Save한다. 

 

 

 

http://localhost:3000/dashboards에 접속하거나 대시보드 아이콘을 클릭하면 General 폴더 안에 설정한 이름으로  추가된 대시보드를 확인할 수 있다.

General 폴더에 Amobu0 dashboard가 추가된 화면

 


그라파나 - 패널 만들기

패널 - 대시보드가 큰 틀이라면 패널은 그 안에 모듈처럼 들어가는 실제 그래프를 보여주는 컴포넌트이다.

대시보드에 들어가서 Save dashboard 아이콘 옆에 있는 Add Panel아이콘으로 패널을 생성한다.

패널이 생성된 화면

 

 

생성된 Add Panel 창에서 Add a new panel을 눌리면 아래와 같은 화면이 나타난다. 여기에서 본인이 원하는 메트릭을 추가해서 대시보드를 만들 수 있지만 공유 대시보드를 사용하는 편이 더 낫기 때문에 바로 공유 대시보드 사용으로 넘어가도록 한다.

사용자가 원하는 메트릭 불러와서 패널을 생성할 수 있는 화면

 


그라파나 - 공유 대시보드

 

공유 대시보드를 만드는 방법은 New 버튼에서 Import를 선택하거나 왼쪽 Dashborads 메뉴에서 Import를 눌려 ULR or ID 입력 페이지를 출력한다. 

대시보드 메뉴의 Import dsahboard 페이지 화면

 

 

Import dahsboard 페이지를 닫지 않고 새 브라우처 창을 열어서 아래의 링크로 접속한다.

https://grafana.com/grafana/dashboards/?search=spring 

 

Grafana dashboards | Grafana Labs

No results found. Please clear one or more filters.

grafana.com

 

spring을 검색하면 수많은 대시보드를 볼 수 있고 들어가서 스크롤을 내리면 ID가 나와있다. 이 ID를 Import하면 공유 대시보드를 불러올 수 있다. 예제로 첫 번째 사진으로 나오는 JVM(Micrometer)를 Import해보자.

https://grafana.com/grafana/dashboards/?search=spring  페이지

 

 

 JVM을 클릭해서 스크롤을 아래로 내리다보면 오른쪽에 ID 4701이 나타난다. ID를 복사하거나 외우고 있다가 Import via grafana.com에 입력하고 오른쪽의 Load버튼을 눌리면 Options 화면이 나타나는데 아래 3번째 사진처럼 prometheus를 선택하고 import한다.

JVM 공유 대시보드 ID 4701
Options에서 Prometheus를 선택

 

 

Import 후 예제로 불러오고 싶었던 JVM 공유 대시보드가 생성된 결과를 확인할 수 있다. 공유 대시보드를 수정하기 위해서는 저장을 필수로 해야 하기 때문에 꼭 공유 대시보드를 저장하고 수정하거나 활용하도록 한다. 

JVM 공유 대시보드 출력 화면

 

 

 

다음 글에서는 애플리케이션에 주로 발생하는 장애를 직접 일으키고 그라파나에서 어떻게 확인하는지에 대한 내용을 작성하고자 한다.

 


 

실무에서는 어떻게 웹 애플리케이션의 장애를 확인하고 대응하는지... 모니터링하는 방법이 궁금해서 궁금증 해결을 위한 자료를 찾다가 실전 스프링 부트 책에서 액추에이터의 존재를 알게 되었다. 책의 내용은 약간 어려워서 액추에이터에 대한 다른 자료를 찾다가 뒤늦게 내가 구매한 김영한님의 스프링부트 강의 내용에 액추에이터가 포함되어 있다는 것을 알았다. 참고로 김영한님의 스프링 로드맵을 구매하였지만 queryDSL, 스프링 고급편, 스프링부트는 아직 보지 않은 상태이기 때문에 액추에이터의 존재를 몰랐다. ㅜㅜ 인강을 다 봤다면 더 빨리 알 수 있지 않았을까라는 약간의 아쉬움이 남는다.

 

글에 관해서 틀린 부분이나 문제는 댓글로 알려주시면 감사하겠습니다.


출처: 책 -  https://jpub.tistory.com/1458

 

실전 스프링 부트

인류에겐 이런 스프링 부트 가이드북이 필요했다 방대한 스프링 부트 공식 문서 중 실무에서 잘 쓰이는 팁을 찾기란 어렵다. 이 책은 초급에서 중급 수준의 독자를 대상으로 스프링 부트의 기본

jpub.tistory.com

 

출처: 인강 - https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%ED%95%B5%EC%8B%AC%EC%9B%90%EB%A6%AC-%ED%99%9C%EC%9A%A9?#curriculum

 

스프링 부트 - 핵심 원리와 활용 | 김영한 - 인프런

김영한 | 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다.  [임베딩 영상] 김영한의 스

www.inflearn.com