본문 바로가기
Framework and Tool/Prometheus

Prometheus - 개요

by ocwokocw 2022. 1. 2.

- 출처: https://prometheus.io/docs/introduction/overview/

- Prometheus란

Prometheus는 원래 SoundCloud(https://soundcloud.com/)에서 구축되었던 모니터링 & 알람 오픈소스 시스템이다. Prometheus는 label이라고 불리는 key-value 쌍들과 timestamp 정보와 함께 지표 데이터를 시계열(time series) 데이터형태로 저장하고 수집한다.

- 주요 특징

프로메테우스의 주요 특징은 아래와 같다.
 
  • metric명과 key-value 쌍들에 의해 식별되는 시계열 데이터 형테의 다차원 모델
  • 이런 차원을 활용하는 유용한 Query 언어인 PromQL 제공
  • 분산 저장소에 의존하지 않으므로 각 서버의 자율성 보장
  • HTTP를 통한 pull 형태의 시계열 데이터 수집
  • 중개 gateway 통한 시계열 데이터 pushing 형태 제공
  • 환경설정이나 service discovery를 이용한 target 식별
  • 그래프 및 대시보드 mode 제공

- Metric이란 무엇인가?

일반적으로 metric이란 숫자 측정값이며, 위에서 언급했던 시계열(time-series)이란 시간에 따른 변화를 기록하는것을 말한다. 웹서버에서 요청시간을 측정하거나 DB에서는 활성 커넥션 수나 실행중인 query 수를 측정하는 등 이처럼 사용자가 원하는 지표는 어플리케이션에 따라 달라질 수 있다.
 
metric은 구축한 어플리케이션에 왜 그렇게 동작하는가에 대한 이해를 돕는데 중요한 역할을 한다. 예를 들어 웹서버가 느리다고 가정해보자. 이를 분석하기 위해서는 어플리케이션에 어떤 일이 일어났는가에 대한 정보가 필요하다. 요청 수에 대한 metric이 있으면 요청량이 너무 많아서 느리다는 이유를 알 수 있고, 이를 위해 서버를 늘려야 한다고 판단할 수 있게 된다.
 

- Component

Prometheus의 생태계는 아래와 같이 여러 component들로 구성되어 있으며 아래 사항이 모두 필수적인 component는 아니다.
 
  • Main prometheus 서버는 시계열 데이터를 긁어와서 저장한다.
  • 어플리케이션 코드를 이용하여 지표를 측정할 수 있도록 클라이언트 라이브러리를 제공한다.
  • 단시간의 생명주기를 갖는 job들을 위해 pushing gateway를 제공한다. (ex - 배치에서 지표를 측정하고 싶을 때)
  • HAProxy, StatD, Graphite와 같은 서비스를 위한 특별한 exporter들을 제공한다.
  • 알람을 다루기 위한 alartmanager를 제공한다.
 
대부분의 Prometheus component는 Go로 작성되었다.
 

- 아키텍처

아래 다이어그램은 Prometheus의 아키텍처와 생태계를 나타내고 있다.
 
 
 
Prometheus는 직접 target에서 수집하거나 중개 push gateway를 통해서 단기간의 생명주기를 갖는 job들로 부터 metric을 수집한다. 수집된 sample들을 저장하고 이 데이터를 새로운 시계열 데이터로 저장하고 집계하거나 알람을 발생시킨다. Grafana나 다른 API consumer들은 수집된 데이터를 시각화 한다.

- 사용시 고려사항

Prometheus는 순수한 숫자형태의 시계열 데이터를 기록하는데 적합하다. 동적 서비스 지향 아키텍처의 모니터링에서 뿐만 아니라 중앙형 집중형 모니터링에서도 잘 동작한다. 특히 마이크로서비스에서 다차원의 데이터 수집과 query에 강점이 있다.
 
Prometheus는 신뢰성있게 설계되었기 때문에 시스템에 장애가 발생해도 신속하게 문제를 진단할 수 있다. 각 Prometheus 서버는 네트워크 저장소나 다른 원격 서비스에 의존하지 않는 독립형이다. 인프라의 일부가 손상되었을 때 신뢰할 수 있고, 사용하기 위해 광범위한 인프라를 설정할 필요가 없다.
 
Prometheus는 신뢰성을 중요하게 생각한다. 오류조건에서도 항상 시스템에 대해 사용할 수 있는 통계를 볼 수 있다. 만약 요청당 청구형태와 같이 100%의 정확도가 필요하다면 Prometheus가 수집한 데이터는 상세하지 않고 충분하지 않기 때문에 좋은 선택은 아니다.

'Framework and Tool > Prometheus' 카테고리의 다른 글

With grafana  (0) 2023.04.22
Node exporter  (0) 2023.04.22
Prometheus - 살펴보기(first steps)  (0) 2022.01.06

댓글