Tick Tick Boom

시간이 다 가기 전에

개발

그라파나 와 프로메테우스 그리고 스프링

bbingle 2025. 5. 29. 18:29

1. Grafana 개요

Grafana란 무엇인가?

2014년에 만들어진 오픈소스 데이터 시각화모니터링 도구 입니다.

역사 및 배경

https://grafana.com/blog/2024/02/12/the-story-of-grafana-documentary-from-one-developers-dream-to-20-million-users-worldwide/

2014년 Torkel Ödegaard (토르켈 외데고르) 라는 사람이 만들었습니다.

당시에 다양한 오픈소스 기반 데이터 수집 도구가 존재했지만, 수집한 정보를 효과적으로 시각화하고 분석할 수 있는 도구가 부족했습니다.

더 정확히는 Graphite 라는 데이터 수집도구의 프론트엔드 인터페이스 를 개선하기 위해 처음 개발되었고(불편해서 개선하고자),
Kibana에 경의를 표하고 그래프에 초점을 맞춘다는 의미에서 'Graph'와 'Kibana'를 합쳐 'Grafana'가 되었습니다.

이후 인기를 얻으면서 Grafana Labs 를 설립, 그라파나는 발전되어갔습니다.


2. Grafana가 뭘 할 수 있는데

핵심 기능

데이터 소스 연동 및 통합

그라파나는 다양한 데이터 소스를 연동하고 통합할 수 있도록 합니다. 예를 들어, 프로메테우스, 로키 가 있겠습니다.

 

프로메테우스란?

https://wlsdn3004.tistory.com/35

프로메테우스는 시스템, 서비스의 상태를, 즉, spring 백엔드 서버의 시계열 데이터를 수집하는 시스템입니다.

 

시계열 데이터란?

시계열은 시간 순서대로 기록된 메트릭 데이터의 연속적인 집합입니다.

쉽게 비유하면, 메트릭이 “현재의 날씨 온도”라면 시계열은 “하루 동안 매 시간마다 기록된 온도 변화 그래프”라고 볼 수 있습니다.

시간 온도 (메트릭)
오전 9시 15°C
오전 10시 17°C
오전 11시 18°C
오후 12시 20°C
오후 1시 22°C

 

프로메테우스는 일정 시간 간격으로(예: 15초 간격) 시스템이나 애플리케이션에서 메트릭을 끌어오는 방식(pull 방식) 으로 수집합니다.
예를 들어, 프로메테우스가 아래와 같은 데이터를 가져온다면,

    timestamp: 2025-05-27 10:00:00, cpu_usage_percent: 15%
    timestamp: 2025-05-27 10:00:15, cpu_usage_percent: 17%
    timestamp: 2025-05-27 10:00:30, cpu_usage_percent: 16%

 

그라파나는 프로메테우스가 저장한 시계열 데이터를 그래프, 게이지, 테이블 등으로 직관적으로 시각화해줍니다.

 

프로메테우스의 작동 방식

Pull 방식

프로메테우스는 메트릭 데이터를 수집할 때 Pull 방식을 사용합니다.

이는 모니터링 대상의 특정 엔드포인트 (ex. `/metrics` ) 를 호출하여서 데이터를 가져오는 방식입니다.

 

저장소

Prometheus는 자체적인 시계열 데이터베이스(TSDB)를 사용하여 데이터를 저장합니다. 데이터는 메모리와 디스크에 효율적으로 저장되며, 장기 보관을 위해 원격 스토리지와 연동할 수 있습니다.

 

쿼리 언어: PromQL

Prometheus는 PromQL이라는 강력한 쿼리 언어를 제공합니다.
이를 통해 수집된 메트릭 데이터를 실시간으로 조회하고 분석할 수 있습니다.

예를 들어, 지난 5분간의 HTTP 요청 수를 초당 평균으로 계산하려면 다음과 같은 쿼리를 사용할 수 있습니다.

 

rate(http_requests_total[5m])

 

이는 Grafana와 같은 시각화 도구와 연동하여 대시보드로 표현할 수 있습니다.

 

로키란?
https://wlsdn3004.tistory.com/48

Grafana LokiPrometheus에서 영감을 받은 로그 집계 시스템으로, 로깅 및 이벤트 데이터를 수집, 저장 및 검색하기 위한 오픈 소스 플랫폼입니다.
비용 효율적으로 운영하기 쉽게 설계되었으며 Grafana Labs에서 Loki 프로젝트 개발을 주도하고 있습니다.

 

로키의 작동방식

Promtail은 Grafana Loki와 함께 사용하는 로그 수집기(agent)로, 로그 파일을 실시간으로 감시하고 이를 Loki로 전송하는 역할을 합니다.

 

Promtail은 파일 시스템에 기록되는 로그를 수집합니다.

로그를 직접 Loki로 전송하는 방식이 아니라, 로그 파일에서 읽어서 전송합니다.

 

Spring Boot는 대부분 Logback을 사용하여 로그를 파일로 기록하므로, 이 로그를 Promtail이 실시간으로 추적하여 수집하는 방식이 가장 흔하게 사용됩니다.

 

로그 수준이나 패턴은 Logback의 설정파일(logback-spring.xml)을 통해 쉽게 조정 가능합니다.

 

[Grafana Loki]란? 개념부터 설치까지

Grafana Loki란?Grafana Loki는 Prometheus에서 영감을 받은 로그 집계 시스템으로, 로깅 및 이벤트 데이터를 수집, 저장 및 검색하기 위한 오픈 소스 플랫폼이다. 비용 효율적으로 운영하기 쉽게 설계되었

wlsdn3004.tistory.com

 

그라파나는 아래와 같은 기능들을 지원합니다.

  • 강력한 대시보드 (Dashboard) 기능
  • 시각화 옵션 (그래프, 테이블, 게이지, 히트맵 등)
  • Alert 기능과 알림 채널 (Slack, 이메일 등)

Grafana의 주요 장점

  • 오픈소스 기반 (Community & Enterprise 버전)
  • 직관적이고 쉬운 사용성
  • 유연한 확장성 및 다양한 플러그인 지원
  • 실시간 데이터 시각화 및 분석 성능
  • 커뮤니티 지원의 강력함 (대시보드 템플릿 공유)

5. 프로젝트에 Grafana 도입 시 고려 사항

시스템 자원 및 운영 관리 측면

  • Grafana와 Prometheus의 시스템 자원 소모량 체크
  • 도입 시 서버 환경에서의 배포 방식(Docker, VM) 선택
  • 데이터 보관 및 백업 전략 간략한 고려 사항

보안 측면

  • Grafana 접근 제어와 인증 처리 방법
  • Prometheus 메트릭 노출 시 주의점 및 인증 처리

이런식으로?

https://velog.io/@idonymyeon/%EB%A1%9C%EA%B7%B8-%EB%A9%94%ED%8A%B8%EB%A6%AD-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EB%8C%80%EC%8B%9C%EB%B3%B4%EB%93%9C%EA%B0%80-%EB%AD%90%EC%A3%A04-Promtail-Loki%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%A1%9C%EA%B7%B8-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EB%8F%84%EC%9E%85

 

(로그, 메트릭) 모니터링 대시보드가 뭐죠?(4) Promtail, Loki를 이용한 로그 모니터링 도입

모니터링은 계속된다

velog.io

 

'개발' 카테고리의 다른 글

API의 역사와 발전  (1) 2025.05.08
aws ec2 프리티어 인스턴스 만들기  (0) 2022.10.23
그래프  (0) 2022.10.14
트리 - Tree  (0) 2022.10.14