Before 2022/AWS & DevOps

Prometheus 소개

Eljoe 2021. 2. 20. 17:30

Prometheus?

SoundCloud에서 개발하였으며, 시스템 이벤트 모니터링 및 경고를 제공하는 시계열 오픈소스 프로그램이다.

자체 쿼리(PromQL)을 제공하고 있으며, GO Language로 작성, Apache 2.0 라이센스를 따르는 독립형 오픈소스 프로젝트이다.

 

구성요소

  • 시계열(Metric) 데이터를 스크랩하여 저장하는 Main Prometheus 서버
  • 이러한 데이터를 활용하는 쿼리 언어인 PromQL
  • 다양한 그래프를 제공하지만, 주로 Grafana와 연동해서 사용한다.
  • AlertManager를 통해 경고 알림을 제공한다.
  • 분산 저장장치에 의존하지 않는다.
  • 단일 서버 노드는 자율적이다.

Architecture

Prometheus 구성 요소

Prometheus가 다른 모니터링 프로그램과 다른 점은 데이터를 수집하는 방식이 Push 방식이 아니라 Pull 방식으로 데이터를 수집한다.

 

  1. Push 방식 : 서버별 클라이언트가 Metric 데이터를 수집해서 서버로 보내는 방식
  2. Pull 방식 : 서버별 클라이언트가 Metric 데이터를 수집하면 서버가 접근해서 데이터를 가져오는 방식

즉, 클라이언트에 해당되는 Jobs/Exporter가 Metric 데이터를 수집 후 제공하는 HTTP 엔드포인트(ex : /metric)를 통해 서버가 접근해서 해당되는 데이터를 HTTP GET 요청으로 가져가는 방식이다.

 

Push gateway : Exporter를 쓰기 어려운 경우(Batch Job, Proxy Forwarding...) 사용하는 방식으로써, 해당 어플리케이션이 Push gateway에 Metric 데이터를 Push 후, 서버가 접근해서 데이터를 가져오는 방법이다.

 

Alertmanager : 쿼리로 실행된 결과는 알림이 되며, 특정한 규칙을 만들어 이메일 등으로 전송이 되게한다.