Prometheus란?

황정준·2023년 1월 12일
1

프로메테우스란?

  • 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시스템
  • 처음엔 SoundCloud에서 자사 모니터링 시스템 구축을 목적으로 만들었으나 2016년도에 CNCF 프로젝트로 편입됨 (오픈소스 프로젝트)
  • 현재는 Grafana Labs에서 유지 보수중
  • CNCF(Cloud Native Computing Foundation)
    • 컨테이너와 관련된 다양한 기술적인 문제들을 오픈소스로 해결하는 것을 목표로 하는 단체 (쿠버네티스도 여기 소속)

프로메테우스 특징

  • Pull 방식의 메트릭 수집, 시계열 데이터 저장
  • PromQL을 활용하여 저장된 시계열 쿼리 및 집계
  • 서비스 디스커버리

프로메테우스 구조

Prometheus Server

  • 시계열 데이터를 생성하고 저장하는 핵심 서비스
  • Retrieval
    - 서비스 디스커버리로부터 모니터링 대상을 받아오고 Exporter로부터 주기적으로 그 대상의 메트릭을 수집하는 모듈
  • TSDB
    - 시계열 데이터를 저장하는 자체 스토리지 엔진
    • 외부에 DB를 두는 것이 아니면 프로메테우스는 로컬에 데이터를 저장해둔다.
  • HTTP Server
    - 통신할 때 사용하는 HTTP Server

Alertmanager

  • 특정 메트릭이 임계치를 넘어가거나 경계에 잡혔을 때 이메일, 슬랙 등을 통해 알림 전송 가능

Data Visualization

  • 프로메테우스 자체 web UI가 있어 데이터 시각화가 가능
    • 시각화 기능은 약한 편이라 보통 Grafana라는 대시보드 툴로 대체해서 쓰는 편
  • PromQL이라는 쿼리를 사용해서 데이터 조회

Service Discovery

  • 서비스 디스커버리란 MSA같은 분산 환경에서 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치를 알아낼 수 있는 기능
  • 프로메테우스는 서비스 디스커버리기능을 지원함 (쿠버네티스 등등)
  • 쿠버네티스에 존재하는 모든 노드와 팟의 메트릭을 수집 가능

Exporter

  • 타겟 시스템에서 메트릭을 읽어서 프로메테우스가 풀링 할 수 있도록 하는 모니터링 에이전트
  • 데이터를 가져오고 싶은 시스템에 설치하는 프로그램

Pushgateway

  • 프로메테우스가 메트릭을 푸시할 수 있게 지원
  • 푸시된 메트릭을 프로메테우스에서 가져갈 수 있도록 중재자 역할 수행

장단점

장점

  • Pull 방식의 구조를 채택해서 모든 메트릭 정보를 중앙 서버로 보내지 않아도 됨
  • 다양한 써드파티 프로그램과의 연동을 통해 운영이 쉬움
  • 구조가 복잡하지 않고 간단
  • 모든 데이터를 수집하지 않고 일정 주기로 메트릭을 수집해 애플리케이션에 무리 없음

단점

  • 클러스터링이 불가능
    • 스케일을 키우고 싶으면 프로메테우스를 여러개 구축해 계층형으로 연결해야 함
  • 모든 데이터를 수집하지 않아서 대략적인 데이터 흐름을 보긴 좋지만 모든 데이터를 필요로하는 목적에는 부적합
    • APM(Application Performance Monitoring)같이 모든 로그를 추적해야하는 상황에는 좋지 않음
    • Pulling하는 그 순간의 스냅샷 정보만 알 수 있음

Grafana

그라파나란?

  • 오픈소스 메트릭 데이터 시각화 도구
  • 다양한 데이터소스들의 데이터 시각화를 지원
    • InfluxDB, OpenTSDB, AWS CloudWatch, Azure Monitor, ElasticSearch 등등

프로메테우스와의 조합

  • 프로메테우스 자체의 시각화 도구가 빈약함
  • 그래서 그라파나와 함께 쓰는 경우가 많음
  • 프로메테우스로 데이터를 수집하고 그라파나로 해당 데이터를 보여주는 대시보드 구성

도커를 이용해 프로메테우스와 그라파나를 구축해보니 생각보다 간편해서 놀라웠다.
가지고 놀면서 사용법을 잘 익봐야겠다.ㅎㅎ

profile
호기심 많은 주니어 백엔드 개발자입니다.

0개의 댓글