프로메테우스(Prometheus)

윤준혁·2024년 2월 18일

프로메테우스(Prometheus)란?

  • 2016년 5월에 CNCF에 2번째 인큐베이팅된 프로젝트
  • 이벤트 모니터링 & 알람을 담당
  • 메트릭을 수집하고 시계열DB(TSDB)

    메트릭이란?
    - 시스템 상태를 알 수 있는 측정값
    - CPU 메모리 사용량 표시
    - 웹서비스 관련 HTTP 상태 코드 표시

  • Pull방식으로 데이터를 수집

프로메테우스(Prometheus)의 구조

Prometheus Architecture

주요 구성 요소

Prometheus Server

  • 수집된 Metric을 Pull 방식
  • TSDB에 저장
  • 외부에 노출을 위한 HTTP 서버 존재

Node-Exporter

  • 각 노드에 Linux 레벨의 Metric을 수집

Kube-state-metrics

  • 클러스터의 여러 Metric data를 수집
  • 수집된 data를 Prometheus가 수집할 수 있는 Metric 형태로 변환 후 공개

AlertManager (중요)

  • Alert Rule을 설정하고, Event 발생 시 설정된 Alert 메시지를 전달
  • Email, Slack, Webhook 등의 방법으로 전달

AlertManager의 주요 기능 요소

  • Grouping : 유사한 성격의 경고를 하나의 알림으로 분류
  • Inhibition : 특정 경고가 활성화 되어 있을 경우, 타 경고 알림을 억제
  • Silences : 주어진 시간동안 발생하는 경고를 음소거 하는 역할, 경고에 대한 알림이 발생하지 않음

알림 상태 종류

  • Inactive : 정상 상태
  • Pending : 알람 전송 보류 상태
  • Firing : 알람 발생, 조건에 따라 외부 전달

데이터를 수집하는 방식

  • Node-exporter : exporter는 수집한 매트릭을 HTTP를 통해 가져갈 수 있도록 /metrics라는 HTTP endpoint를 노출, cpu, memory, disk, network등 노드에 대한 메트릭 수집
  • Retrieval : 수집 대상에서 메트릭을 가져오는 역할
  • TSDB : 시간을 기준으로 저장(Key:Value 형태로 저장), 전반적으로 뛰어난 성능 보유
  • HTTP Server : Prometheus에 저장된 데이터를 조회하는 역할, HTTP REST API를 제공, 대시보드 구성 지원

대표적인 Exporter 종류

DIY 구축 시 고려 사항

  • 확장성 : 여러 프로메테우스를 중앙 프로메테우스에서 메트릭 수집 -> 데이터의 수집 강도를 늘려 해결
  • 가용성 : 패치 혹은 서버 재시작등으로 인한 메트릭 수집 불가 -> 다수의 프로메테우스로 메트릭 수집 시 해결 가능

    데이터 중복이나 스토리지 용량 관리 부분에서 이슈가 생길 수 있음(최적화된 방법은 아님)

Thanos란? (Highly available & long term storage capabilities)

  • 클라우드 환경에서 프로메테우스의 확장성과 내구성을 향상시키기 위한 오픈 소스 프로젝트이다.
  • 프로메테우스의 메트릭 데이터를 분산된 원격 스토리지에 저장하고 조회할 수 있게 해주는 기능을 제공
  • 여러 개의 프로메테우스로부터 매트릭을 조합해서 타노스에서 전체 프로메테우스의 메트릭을 볼 수 있도록 해주고, 수집된 메트릭을 스케일이 가능한 스토리지에 저장해서 특정 프로메테우스 인스턴스가 다운이 되더라도 그 인스턴스가 담당하는 메트릭을 조회할 수 있도록 해준다.

Thanos의 주요 기능

  • Global Query View : 다수의 Prometheus 서버들과 클러스터들에 걸친 Query를 지원
  • Unlimited Retention : 다양한 저장소에 메트릭을 저장할 수 있으며, 데이터 보관주기의 제약이 없다.
  • Prometheus Compatible : Prometheus의 인터페이스와 거의 완벽하게 호환되는 API를 제공
  • DownSampling & Compaction : 데이터의 시간주기별 데이터를 생성, 통합데이터 조회의 성능을 높임, 상세 저장주기 설정을 통한 효율성 확보

출처 : [📔Brown Bag 세션 #29] Prometheus란?

0개의 댓글