[인프라] 프로메테우스란?

참고


개요

  • 프로메테우스 개념에 대해서 조사 및 정리 진행합니다.

프로메테우스(Prometheus) 란?

  • Prometheus 는 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시스템입니다.
  • 처름에는 SoundCloud 에서 만들어졌으나 2016 년에는 쿠버네티스에 이어 두 번째로 CNCF(Cloud Native Compution Foundation) 산하 프로젝트 멤버로 들어가게 됐습니다.

프로메테우스 대표 기능

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

프로메테우스 구조

  • Prometheus 의 아키텍처는 아래와 같습니다.

  • Pushgateway : Proxy Forwarding을 하여 접근할 수 없는 곳에 데이터가 존재하는 경우에 사용할 수 있는 대안입니다. 애플리케이션이 Pushgateway 에 메트릭을 push 한 후, Prometheus Server 가 Pushgateway 에 접근하여 메트릭을 pulling 합니다.
  • Prometheus Server : 프로메테우스의 메인 서버로, 메트릭 데이터를 수집하고 저장합니다. Prometheus Server 내부에는 Retrieval, TSDB, HTTP Server 모듈이 있습니다.
  • TSDB(Time-Series Database) : 수집된 메트릭은 Prometheus Server 내의 메모리와 로컬 디스크에 저장됩니다. 데이터베이스에 별도로 저장하지 않기 때문에 대상 시스템이 늘어날수록 디스크를 늘려야 합니다.
  • HTTP Server : 프로메테우스에 저장된 데이터를 조회하기 위해서 필요한 서버입니다. 프로메테우스는 데이터를 가져가기 위한 프로토콜로 HTTP REST API를 제공하고, 직접 API를 통해 데이터를 가져가든지, Web UI 대시보드에서 데이터를 조회하는 방법으로 그라파나를 통해 데이터를 시각화 할 수 있습니다.
  • Alertmanager : 프로메테우스에서 문제가 발생했다고 생각되는 시점에 Slack, Mail, HipChat 등을 통해 알람을 보내줍니다. 알람을 거는 기준은 Rule 을 작성해서 load 시키는 방식으로 정할 수 있습니다.

기본 동작 구조

  • Metric 수집
    • 수집 하려는 대상 시스템이 Target System 입니다. MySQL이나, Tomcat 또는 VM 과 같이 여러가지 자원이 모니터링 대상이 될 수 있습니다. 이 대상 시스템에서 메트릭을 프로메테우스로 전송하기 위해서는 Exporter 라는 것을 사용합니다.
  • Pulling 방식
    • 프로메테우스는 Target System 에서 메트릭을 수집하는 방식으로 Pulling 방식을 사용합니다. 프로메테우스가 주기적으로 Exporter 로부터 메트릭을 읽어와서 수집하는 방식입니다. 보통 모니터링 시스템의 에이전트들은 에이전트가 모니터링 시스템으로 메트릭을 보내는 Push 방식을 사용합니다. 특히 Push 방식은 서비스가 오토 스케일링 등으로 가변적일 경우에 유리합니다. Pulling 방식은 모니터링 대상이 가변적으로 변경될 경우, 모니터링 대상의 IP 주소들을 알 수 없기 때문에 어려운 점이 존재합니다.
  • Service Discovery
    • 프로메테우스도 서비스 디스커버리 시스템과 통합을 하도록 되어 있습니다. 앞에서 언급한 DNS 나, 서비스 디스커버리 전용 솔루션인 Hashicorp 사의 Consul 또는 쿠버네티스를 통해서, 모니터링 해야 할 타겟 서비스의 목록을 가지고 올 수 있습니다.
  • Exporter
    • 모니터링 에이전트로 타겟 시스템에서 메트릭을 읽어서, 프로메테우스가 Pulling 할 수 있도록 합니다. 또한, 단순히 HTTP GET 으로 메트릭을 텍스트 형태로 프로메테우스에 리턴합니다. 요청 당시의 데이터를 리턴하는 것일 뿐, Exporter 자체는 기존값(히스토리)를 저장하는 등의 기능은 없습니다.
  • Retrieval
    • 서비스 디스커버리 시스템으로부터 모니터링 대상 목록을 받아오고, Exporter 로부터 주기적으로 그 대상으로부터 메트릭을 수집하는 모듈입니다.
  • 저장
    • 이렇게 저장된 메트릭은 PromQL 쿼리 언어를 이용해서 조회가 가능하고, 이를 외부 API나 프로메테우스 웹 콘솔을 이용해서 서빙이 가능합니다. 또한 그라파나 등과 통합하여 대쉬보드등을 구성하는 것이 가능합니다.

프로메테우스 사용하기에 적합한 일, 적합하지 않은 일

  • Promethrus 는 메트릭 을 저장하기 위한 모니터링 시스템입니다. 커널 스케줄링이나 데이터 수집 실패 같은 요소로 인해 약간의 부정확성과 레이스 컨디션을 피할 수 없는 운영 모니터링 환경을 위해 설계 되었습니다 따라서 Prometheus 에 적합한 일은 다음과 같습니다.
    • 메트릭 기반의 시계열 데이터 저장을 저장하는 일
    • 동적인 혹은 마이크로 서비스의 인스턴스에 대한 메트릭을 수집하는 일
  • 반면에 Prometheus 에 적합하지 않은 일도 있습니다. 이런 일은 다른 도구를 사용하여 해결해야 합니다.
    • 이벤트 로그나 개별 이벤트를 저장하는 일
    • 이메일 주소/사용자 이름과 같이 카디널리티가 높은 데이터를 저장하는 일
    • 100% 의 정확성이 요구되는 일
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY