-
[Prometheus] Prometheus란 무엇인가데이터 엔지니어링/Prometheus 2022. 12. 18. 12:17반응형
Promehtheus란?
메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 가지고 있는 CNCF에 속한 오픈소스 모니터링 툴이다. SoundCloud에 의해 처음 시작되었으며 2016년 Kubernetes에 이어 두 번째 호스팅 프로젝트로 CNCF에 합류했다. 시계열 데이터 수집하고 저장하는 데 사용된다. 이 값은 레이블이라는 Key-Value 쌍으로 타임스탬프와 함께 저장되어 시계열 데이터가 형상화된다.
특징
- 메트릭 이름과 Key-Value 쌍으로 식별되는 시계열 데이터가 있는 다차원 데이터 모델
- PromQL, 이차 원성을 활용하는 유연한 쿼리 언어
- 기본적으로 Pull 방식으로 다른 곳의 시계열 데이터를 가지고 온다,
- 또한, Push 방식의 데이터도 가져올 수 있도록 하는 Push gateway가 존재하여 두 방식 모두 지원한다.
- 다양한 대시보드와 그래프를 지원함
메트릭이란?
메트릭이란 숫자 측정임. 시계열은 변경 사항을 시간 단위로 기록됨을 의미함. 애플리케이션의 특정 방식으로 작동하는 이유를 이해하는데 중요한 역할을 함. 예를 들어 DB가 속도가 늘어졌다고 하면 쿼리의 작동 수는 얼마나 되는지 활성 사용자는 몇 명인지 등의 내용을 시간대 별로 쉽게 파악할 수 있음.
데이터 모델
- Prometheus에 모든 데이터는 시계열로 저장됨 타임 스탬프 단위로 지정
- 표기법 - <metric name>{<label name>=<label value>,...}
- 예시 - api_http_requests_total {method="POST", handler="/messages"}
PromQL
- Prometheus에서 사용하는 쿼리임.
- 시계열 데이터를 쉽게 값을 구현하기 위해서 만들어졌고 Http API에서 쿼리에 맞게 시계열 데이터를 정재 해서 보내 줄 때 사용한다.
- String literals, Float literals를 지원한다
- 쿼리 기간 - http_requests_total {job="prometheus"}[5m] Prometheus라는 잡에서 5m 단위로 http request 수 를 의미
- 쿼리 오프셋 수정자 - sum(http_requests_total {method="GET"} offset 5m) 현재 쿼리 평가시간을 기준으로 과거 5분 값을 반환
- 다음 많은 쿼리를 제공 연산자, 하위 쿼리 , 코멘트 등 홈페이지 참조
Component
- Prometheus 서버 - 시계열 데이터를 스크랩하고 저장
- Client Library - 애플리케이션 코드 계측
- Push gateway - 단기 작업 푸시 형식의 시계열 데이터
- Exporter - HAProxy, StatsD, Graphite 등 Pull 할 수 있는 형식으로 제공하게 도움을 줌
- AlertManager - 메트릭에 특정 조건을 설정하여 알람을 알려줌
나머지 Custom 하게 제공하고 싶다면 Go언어로 작성하여 빌드 배포하면 됨.
Architecture
- Prometheus Server에서 TSDB(TimeSeries DataBase)를 주고 대상 데이터를 받을 수 있는 Retrieval , 그래프나 특정 메트릭을 조회할 수 있는 Http Server를 둠
- Pushgateway 두고 데이터를 보내주던 우리가 모니터링하고 싶은 서버에 Exporter를 두던 세팅 하여 대상으로부터 데이터를 Pull 할 수 있는 상태를 만듦
- Alertmanager를 두어서 특정 조건에 해당하면 알람을 줄 수 있음(Slack, email 등)
- PromQL로 대상 데이터를 조회하거나 Grafana와 연동하여 시각화해서 볼 수 있음
참고 문헌
반응형'데이터 엔지니어링 > Prometheus' 카테고리의 다른 글