ETC DB

prometheus 개요

타마마임팩트_쫀 2021. 7. 21. 16:20

1. 프로메테우스란?

Prometheus 는 원래 SoundCloud에 구축 된 오픈 소스 시스템 모니터링 및 경고 툴킷 입니다. 2012 년에 시작된 이래 많은 회사와 조직에서 Prometheus를 채택 했으며 이 프로젝트에는 매우 활동적인 개발자 및 사용자 커뮤니티가 있습니다. 지금은 독립형 오픈소스 프로젝트이며 많은 회사들이 사용 하고 있고, 또한 kubernetes에서도 Prometheus를 사용하여 매트릭 수집 및 대시보드를 구축하는 방식을 장려하고 있습니다.

 

2. features

Prometheus의 주요 기능은 다음과 같습니다.

  • 메트릭 이름 및 키 / 값 쌍으로 식별되는 시계열 데이터가있는 다차원 데이터 모델
  • 이러한 차원을 활용 하는 유연한 쿼리 언어인 PromQL
  • 분산 스토리지에 의존하지 않습니다.
  • 시계열 수집은 HTTP를 통한 pull 모델을 통해 발생합니다.
  • 푸시 시계열 은 중간 게이트웨이를 통해 지원됩니다.
  • 서비스 검색 또는 정적 구성을 통해 대상 검색
  • 다양한 그래프 및 대시 보드 모드 지원

 

3. 구성

Prometheus 에코 시스템은 여러 구성 요소로 구성되며 그 중 대부분은 선택 사항입니다.

  • 시계열 데이터를 수집하고 저장 하는 기본 Prometheus 서버
  • 애플리케이션 코드를 계측하기 위한 클라이언트 라이브러리
  • 짧은 주기의 작업을 지원하기위한 푸쉬 게이트웨이
  • HAProxy, StatsD, Graphite 등과 같은 서비스를위한 특수 목적 exporter
  • 핸들 경고하기 위한 alertmanager 
  • 다양한 지원 도구

대부분의 Prometheus 구성 요소는 Go 로 작성되어 정적 바이너리로 쉽게 빌드하고 배포 할 수 있습니다.

 

4. 아키텍처

간단하게 설명하자면 아래와 같습니다.
Jobs/exporters는 실제로 매트릭을 수집하는 프로세스라고 보면 됩니다.
이 exporter가 매트릭을 수집하고 HTTP 통신을 통해 매트릭 데이터를 가져갈 수 있게 /metrics 라는 HTTP 엔드포인트를 제공합니다.
그러면 Prometheus server가 이 exporter의 endpoint로 HTTP GET 요청을 날려 매트릭 정보를 수집(Pull)한고, 단기 작업은 중간 푸시 게이트웨이를 통해 메트릭을 스크랩합니다.
스크랩 된 모든 샘플을 로컬에 저장하고이 데이터에 대한 규칙을 실행하여 기존 데이터에서 새 시계열을 집계 및 기록하거나 경고를 생성합니다.
수집한 정보를 Prometheus가 제공하는 간단한 웹 뷰를 통해 조회할 수 있고 그 안에서 테이블 및 그래프 형태로 볼 수 있습니다.
하지만 시각화 도구가 부족해서 이를 직접 사용하지는 않고 대부분 Grafana라는 Data Visualization tool을 이용하여 시각화하고 있습니다.

 

5. 추천 환경

Prometheus는 장애 조건에서도 시스템에 대해 사용 가능한 통계를 항상 볼 수 있습니다.
Prometheus는 순수한 숫자 시계열을 기록하는 데 적합합니다. 이는 기계 중심 모니터링과 동적 인 서비스 지향 아키텍처의 모니터링에 모두 적합합니다. 마이크로 서비스의 세계에서 다차원 데이터 수집 및 쿼리에 대한 지원이 강점입니다.
Prometheus는 문제를 신속하게 진단 할 수 있도록 가동 중단시 시스템의 안정성을 위해 설계되었습니다. 각 Prometheus 서버는 네트워크 스토리지 또는 기타 원격 서비스에 의존하지 않고 독립형입니다. 인프라의 다른 부분이 손상 되었을 때 이를 사용하기 위해 광범위한 인프라를 설정할 필요가 없습니다.

 

6. 비 추천  환경

billing 같이 100 % 정확성이 필요한 경우 수집 된 데이터가 상세하고 완전하지 않을 가능성이 높으므로 Prometheus는 좋은 선택이 아닙니다. 이러한 경우 다른 시스템을 사용하여 billing 데이터를 수집하고 분석하고 이를 제외한 나머지 모니터링에는 Prometheus를 사용하는 것이 가장 좋습니다.