Springboot + Prometheus + Grafana을 이용한 Monitoring 구축

안녕하세요, 오늘은 베스핀글로벌 DevOps실 전희연님이 작성해 주신 Springboot + Prometheus + Grafana을 이용한 Monitoring 구축에 대해 알아보겠습니다. 궁금한 부분이 있으면 댓글을 달아 주세요:)

본 글은 Springboot 프로젝트를 모니터링하기 위해 Prometheus + Grafana를 활용하여 Monitoring System을 구축하는 방법을 설명한다. Springboot 프로젝트의 Spring Boot Actuator를 활성화하여 Actuator가 제공하는 Metric을 Prometheus로 수집하고 Grafana를 이용하여 시각화하는 방법에 대해 Step by Step으로 기술한다.

목차

1. Monitoring 개요

2. Springboot Project

3. Prometheus

4. Grafana

1. Monitoring 개요

모니터링 시스템은 기본적으로 데이터 수집 => 통합 => 시각화의 단계로 되어있다.

본 Document에서는 Springboot+Prometheus+Grafana 를 이용하여 System Monitoring을 구축한다.

1.1 Library Version

JDKopenjdk version “1.8.0_242”
STSsts-4.14.1.RELEASE
Prometheusprometheus-2.35.0.windows-amd64
Grafana8.5.2

1.2 Prometheus 특장점

  • CNCF의 프로젝트들(k8s, Jaeger, Mixer etc.)은 대부분 Prometheus를 지원함
  • K8s나 Docker Engine은 Container & Node의 Metric를 내보내는 Endpoint를 자체적으로 지원하고 있기 때문에, 프로메테우스와 연동하면 소스 코드 없이 모니터링 시스템 구축이 가능
  • Application의 Custom Metric를 수집 가능
  • 다차원 데이터 모델(메트릭 이름 및 키/값 차원 집합으로 정의된 시계열)
  • 이 차원을 활용하는 강력하고 유연한 쿼리 언어인 PromQL
  • 분산 스토리지에 대한 종속성이 없고 단일 서버 노드는 자율적임
  • 시계열 수집을 위한 HTTP 풀 모델
  • 푸시 시계열은 일괄 작업을 위한 중개 게이트웨이를 통해 지원됨
  • 서비스 검색 또는 정적 구성을 통해 대상 검색
  • 다양한 그래프 및 대시보드 지원 모드
  • 계층적 및 수평적 연합 지원

1.3 Grafana 특장점

  • Grafana Labs에서 개발, 특정 소프트웨어에 종속되지 않은 독립적인 시각화 도구
  • 30가지 이상의 다양한 수집 도구 및 DB들과 연계를 지원
  • 시계열 데이터 시각화에 많이 쓰임
  • 관계형 데이터베이스 데이터를 시각화 하여 사용할 수 있음
  • 기능을 확장하는 다양한 플러그인 (2022.05.09 기준 249개)
  • 개별 사용자들이 만들어 둔 대시보드의 공유가 매우 활발
  • 오픈 소스라서 사용자의 요구 사항에 맞게 수정 가능, 필요에 따라 설치형과 서비스형 모두 선택 가능

2. Springboot Project

2.1 Web Project 생성

2.2 Springboot Project 생성 후 작업

  1. com.monitoring.prometheus.controller 패키지 생성
  2. MainController.java 생성

3. src/main/resources/application.properties 를 yml 로 변경

4. yml 파일에 Prometheus 설정 추가

5. Project 실행(Run As > Spring Boot App)

6. Prometheus Metric 실행 확인 – http://localhost:8080/actuator/prometheus 브라우저 접속

아래와 같이 표시가 되면 성공.

3. Prometheus

3.1 Prometheus 설치

  1. Prometheus 2.35.0 / 2022-04-21 Release version zip 파일 Download
  2. Zip 파일 압축 해제 C:\MyProgram\prometheus-2.35.0.windows-amd64
  3. C:\MyProgram\prometheus-2.35.0.windows-amd64\prometheus.exe 실행
  4. 윈도우11의 경우 실행 시 위험하다는 경고창 팝업됨.
  5. 상세보기 > “실행”을 클릭 방화벽에 의해 Java 엑세스 경고가 팝업됨.
  6. “엑세스허용”을 클릭 Browser로 127.0.0.1:9090 접속

3.2 Prometheus 설정

  1. Prometheus 설정 변경

2. C:\MyProgram\prometheus-2.35.0.windows-amd64\prometheus.exe 실행

3. 브라우저로 http://localhost:8080/endpoint1http://localhost:8080/endpoint2를 번갈아 가면서 접속

4. http://127.0.0.1:9090/ 접속하여 “http_server_requests_seconds_count” 검색 

  

4. Grafana

4.1 Grafana 설치

  1. GrafanaOSS 8.5.2 version 설치 (Default로 설치)   

2. C:\Program Files\GrafanaLabs\grafana\bin\grafana-server.exe를 실행

3. Browser로 http://localhost:3000/ 접속

4. 첫 로그인 admin / admin 으로 로그인

5. Password 변경

6. Main 화면으로 이동

4.2 Prometheus 연동

  1. Main Page에서 가운데 부분의 “DATA SOURCES”를 클릭하여 Prometheus 선택
  1. Prometheus서버의 IP, Port를 URL에 입력 후 아래 “Save & test” 버튼 클릭초록색체크박스와 “Data source is working” 이라는 문구가 표시됨
  1. Main 화면의 DATA SOURCE 부분이 COMPLETE로 표시됨

4.3 Dash Baord 생성

  1. DASHBOARD를 클릭하면 아래와 같이 New Dashboard 페이지로 이동
  1. Dash 보드 생성
    1. metric 값을 입력 (예, system_cpu_usage)
    2. Run Query 클릭
    3. 3번의 차트가 표시됨
    4. Dash board Title을 입력
    5. Apply를 클릭하면 생성한 Dash board 생성됨
    6. Save Dashboard를 클릭
    7. Dash board Title을 입력
    8. Save 클릭 시 Dash board가 생성됨
  1. 클릭시 모니터링 화면이 표시됨.
  2. Main 화면에 생성한 Dash baord의 목록(First dashboard)이 표시됨

감사합니다:)

문의 : info@bespinglobal.com | 대표번호: 02-1668-1280

4 thoughts on “Springboot + Prometheus + Grafana을 이용한 Monitoring 구축”

Leave a Comment