안녕하세요, 오늘은 베스핀글로벌 DevOps팀 전희연님이 작성해주신
Springboot + Prometheus + Grafana을 이용한 Monitoring 구축에 대해 알아보겠습니다 🙂
1. Monitoring 개요
모니터링 시스템은 기본적으로 데이터 수집 => 통합 => 시각화의 단계로 되어있다.
본 Document에서는 Springboot+Prometheus+Grafana 를 이용하여 System Monitoring을 구축한다.

1.1 Library Version
JDK | openjdk version “1.8.0_242” |
---|---|
STS | sts-4.14.1.RELEASE |
Prometheus | prometheus-2.35.0.windows-amd64 |
Grafana | 8.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 생성 후 작업
- com.monitoring.prometheus.controller 패키지 생성
- 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 설치
- Prometheus 2.35.0 / 2022-04-21 Release version zip 파일 Download
- Zip 파일 압축 해제 C:\MyProgram\prometheus-2.35.0.windows-amd64
- C:\MyProgram\prometheus-2.35.0.windows-amd64\prometheus.exe 실행
- 윈도우11의 경우 실행 시 위험하다는 경고창 팝업됨.
- 상세보기 > “실행”을 클릭 방화벽에 의해 Java 엑세스 경고가 팝업됨.
- “엑세스허용”을 클릭 Browser로 127.0.0.1:9090 접속

3.2 Prometheus 설정
- Prometheus 설정 변경

2. C:\MyProgram\prometheus-2.35.0.windows-amd64\prometheus.exe 실행
3. 브라우저로 http://localhost:8080/endpoint1, http://localhost:8080/endpoint2를 번갈아 가면서 접속
4. http://127.0.0.1:9090/ 접속하여 “http_server_requests_seconds_count” 검색

4. Grafana
4.1 Grafana 설치
- 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 연동
- Main Page에서 가운데 부분의 “DATA SOURCES”를 클릭하여 Prometheus 선택

- Prometheus서버의 IP, Port를 URL에 입력 후 아래 “Save & test” 버튼 클릭초록색체크박스와 “Data source is working” 이라는 문구가 표시됨

- Main 화면의 DATA SOURCE 부분이 COMPLETE로 표시됨
4.3 Dash Baord 생성
- DASHBOARD를 클릭하면 아래와 같이 New Dashboard 페이지로 이동

- Dash 보드 생성
- metric 값을 입력 (예, system_cpu_usage)
- Run Query 클릭
- 3번의 차트가 표시됨
- Dash board Title을 입력
- Apply를 클릭하면 생성한 Dash board 생성됨
- Save Dashboard를 클릭
- Dash board Title을 입력
- Save 클릭 시 Dash board가 생성됨

- Main 화면에 생성한 Dash baord의 목록(First dashboard)이 표시됨
- 클릭시 모니터링 화면이 표시됨.

감사합니다:)

문의 : info@bespinglobal.com | 대표번호: 02-1668-1280
이미지 깨진게 많아서 아쉽네요
내부에서 작성 된 자료를 올리면서 누락 된 부분들이 있네요. 수정 후 재업로드 하겠습니다. 감사합니다.