Prometheus 알아보기

Prometheus 상세히 알아보기

쿠버네티스 홈 서버를 구축하며 서버 상태를 모니터링하기 위해 Prometheus 와 Grafana를 무작정 구성하였다.

Prometheus 가 어떤 역할을 하는지 정리하기 위해 이 글을 작성한다.


Prometheus 는 무엇인가

Prometheus 는 애플리케이션/서버의 메터릭을 주기적으로 수집하고, 이를 시계열 데이터로 저장 후 조회할 수 있도록 하는 로그 수집 서비스이다.

  1. Metric Source
    1. short-lived jobs(배치/크론잡)는 Push Gateway 로 메트릭을 push 하여 메트릭을 수집합니다.
    2. 상시 실행 서비스는 /metrics 엔드포인트를 노출하고, Prometheus 서버가 이를 주기적으로 호출하여 메트릭을 수집합니다.
  2. Service Discovery
    1. K8s API 를 통해 Pod/Service/Endpoint를 자동으로 찾아 타깃 목록을 갱신합니다.
    2. K8s 또는 Cloud 환경이 아닌경우 file_sd를 통해 타깃 목록을 config 파일로 불러올 수 있습니다.
  3. Prometheus Server
    1. Retrieval: 로그를 타깃 서버에서 수집합니다.
      1. Service Discovery를 통해 대상을 가져온 후 Pull Metric 을 통해 데이터를 수집합니다.
      2. 일정한 주기로 데이터를 수집하고 이를 시계열 데이터베이스에 저장합니다.
    2. TSDB(TimeSeries Database): 시계열 데이터베이스에 수집한 데이터를 저장합니다.
    3. HTTP Server: 조회 API 및 웹 UI 를 제공합니다.

요약하자면

Prometheus 는 각 서비스에게서 Metric 를 제공받고, 이를 시계열 데이터베이스에 저장한다.
저장한 데이터를 PromQL를 통해 조회하여 Grafana 같은 도구를 통해 시각화 할 수 있다.


참고 주소