1      개요

문서는 모니터링 솔루션인 프로메테우스에 대한 구조 및 구성에 대한 설명이다.

 

2      프로메테우스란

 

프로메테우스란 시계열 DB를 내장한 메트릭 수집, 시각화, 알림 등의 기능을 제공하는 오픈 소스 모니터링 시스템이다. pull 방식의 메트릭 수집, 시계열 데이터 저장, 전용 쿼리인 PromQl을 활용한 집계 등을 제공한다. 기본 제공하는 시각화 기능은 한계가 있어 일반적으로 Grafana라는 시각화 툴을 함께 사용한다.

3      구조 및 특징

Exporter

Pull 방식으로 데이터를 수집하도록 노출되는 Agent. 서버들로부터 메트릭을 수집해 http endpoint를 제공한다. 프로메테우스는 해당 Endpointhttp get 요청을 통해 수집한다. , Exporter는 일종의 http 서버이고, 요청 당시의 데이터를 get method를 통해 리턴한다.

 

PromQl & Visualization

TSDB에 저장된 데이터를 PromQl을 통해 조회하고, 자체 시각화 web을 통해 조회가능. 그러나 시각화에 한계가 있어서 일반적으로 Grafana를 시각화 툴로 사용

 

Alert Manager

Alert Manager를 통해 특정 룰을 설정해두고 룰에 해당되면 slack, e-mail등을 통해 알림을 받을 수 있다.

Pull방식

Pull방식을 사용하기때문에 메트릭에 대한 데이터를 중앙 서버로 보내지 않아도 된다. , 일정 주기마다 데이터를 직접 pull 해온다.

 

Push Gateway

기본적으로 프로메테우스는 Pull방식이지만, http endpoint에 접근하지 못하는 경우는 pull 방식 사용이 어렵기 때문에, 어플리케이션이 pushgateway에 메트릭을 push한후 프로메테우스는 push된 메트릭을 pull 해온다. pull을 위해 사용하는 exporter는 타겟이 있는 서버에 설치되어야 하는데, 사내망같이 폐쇄적인 곳에 있어 http 접근을 할 수 없는 경우 사용한다.

 

 

 

4      장점

 

l  다차원 데이터 모델 가능

l  모든 데이터는 HTTP (Pull) 방식으로 작동. Push도 가능

l  모니터링 타겟은 YAML 파일을 통해 설정

 

5      단점

 

l  클러스터링이 안됨

l  싱글 호스트이기 때문에 저장용량이 부족하면 디스크 용량을 늘리는 방법 밖에 없음

l  Metric 수집 및 메모리에 저장후 일정 시간이 지나면 Local Disk에 덤프 형식으로 저장하기 때문에 오래된 data는 조회 불가능

l  100% 정확성을 보장하지 않음. 모든 메트릭을 수집하지 않고 사실상 추세모니터링에 적합함. 순간의 스냅샷 정보만 알 수 있음

 

6      TSDB -> TimescaleDB

프로메테우스는 내부적으로 time series db(이하 TSDB)를 기본으로 사용한다. TSDB는 다중 사용자 환경에서 그다지 좋은 성능을 내지 못한다는 이야기가 있다. 이문제를 해결하려면 시계열 데이터를 전문으로 다루는 DB를 사용하는 것도 좋은 방법이다. 또한 원격저장소에 있는 DB에 저장하려는 경우도 생길 수 있다.

프로메테우스는 replicate되지 않으며, long-term 메트릭에 저장에 적합하지 않다. 그래서 다양한 원격 스토리지 저장을 지원한다. 이 지원 방법 중 하나가 TimescaleDB에 저장하는 방법이다. TimescaleDBPostgreSQL기반으로 확장된 시계열DB이다. long-term 메트릭 저장에 적합하고, promQLSQL에 완벽하게 대응한다. 프로메테우스의 로컬 node에 기록된 후에 timescaleDB에 한번더 기록되기때문에 즉시 백업이 되는 셈이다. 따라서 disk에러 등에 대해 피해가 덜 생길 수 있다. TimescaleDB에서는 해당 기능을 총칭하여 PromScale이라고 부른다.

 

프로메테우스에서 TimescaleDB에 원격 write를 하려면 2가지 추가 모듈이 필요하다. pg_prometheusprometheus_postgresql_adapater이다. pg_prometheustimescaledb이고, 어댑터는 둘을 연결해주는 어댑터이다. 두 모듈 모두 도커로 배포되어있어 바로 실행할 수 있다. pg_prometheus를 도커를 통해 run하면 TimescaleDB에 필요한 하이퍼테이블, 스키마 등을 자동으로 생성한다. , 프로메테우스 설정도 일부 변경해야한다. remote_write 옵션과 remote_read 옵션의 url adapter의 주소를 설정한다.

이렇게 설정을 완료한 후 도커를 통해 시스템을 띄우면 정상적으로 timescaleDBremote write할 준비가 완료된 것이다.

아래 그림은 위에서 설명한 내용의 구조도이다.

 

'Research' 카테고리의 다른 글

AresDB  (0) 2023.04.19
PWA 개념과 react에 PWA 적용하기  (0) 2023.02.21
WEB 3.0이란?  (1) 2023.02.17
Jager(예거)에 대해서  (1) 2022.12.26
Git 활용 방법과 브랜치 전략  (1) 2022.11.30

+ Recent posts