[ 프로메테우스란? ]
Prometheus는 오픈 소스 시계열 데이터베이스 및 모니터링 시스템
주로 애플리케이션과 시스템의 성능을 모니터링하고 경고를 생성하는 데 사용
즉, Prometheus는 시스템의 상태를 실시간으로 추적하고 문제를 조기에 발견할 수 있도록 도와주는 어플리케이션
[ 프로메테우스 데이터 저장 ]
프로메테우스는 레코드를 수집하고 나서 해당 레코드 데이터를 즉시 스토리지에 저장하지 않는다.
인메모리 버퍼에 잔뜩 들고 있다가,
새로 들어온 레코드가 현재 메모리 페이지의 크기를 32KB가 넘어가게 만드는 경우
현재 페이지를 WAL 파일에 Flush 한다.
즉, 일차적으로 데이터를 메모리에 저장하는 것을 원칙으로 하되, 나름 주기적으로 WAL 파일에 백업하는 셈이다.
이렇게 저장되는 데이터 공간을 일반적으로 "Head Block" 이라고 부른다.
Head Block의 데이터가 백업되는 WAL 파일은 최대 128MB를 차지할 수 있으며,
128MB가 넘을 경우 새로운WAL 파일이 생성된다.
저장 단계 : 인메모리 버퍼(32KB) → WAL 파일(128MB) → 새로운 WAL 파일
[ Promethus metric 형식 ]
api_http_requests_total {method="POST", code="200" , handler="/messages"}
[ 프로메테우스 설정 ]
Interval, Retention, Job 등 수집 환경 설정
Job > Group > Instance
YML파일 예시
scrape_configs:
- job_name: 'node' # Job 이름
scrape_interval: 5s # Scape 주기 설정
static_configs:
- targets: ['10.1.1.1:3001'] # Instance 1
labels:
group: 'production' # group 1
- targets: ['10.1.1.2:3002', '10.1.1.3:3002'] # Instance 2, 3
labels:
group: 'develop' # group 2
[ 설치 구성 HA ]
프로메테우스 ha 설정 예시
global:
external_labels:
prometheus: monitoring-cluster
prometheus_replica: replica-1
데이터 증가로 인한 중앙 프로메테우스 서버의 오버헤드 증가 문제가 있으므로
일정 규모 이상에서는 적용하기 힘든 부분이 있음
[ 확장성과 가용성 ]
프로메테우스가 좋은 모니터링 시스템이긴 2가지 문제가 있음, 확장성과 가용성 문제
확장성은 Federation 이라는 방법을 사용
- 전면에 데이타 수집 서버가 10초 단위로 수집 했다면, 중앙 서버에서는 1분 단위로 수집 하는 방법
가용성은 타노스를 통해 해결
- 프로메테우스 마다 사이드카 에이전트가 설치돼서 쿼리 엔진을 통해 통합적으로 관리 HA구성
- 로컬 디스크를 사용하기 때문에 오래된 데이터에 대한 조회가 불가능했던 것을 외부 저장소와 연결
[ Prometheus + Grafana 장점 ]
- 무료
- prometheus는 시계열 DB(TSDB)를 통해 데이터를 저장
- Grafana는 Prometheus를 데이터 소스를 PromQL을 통해 쿼리하고, 결과를 대시보드에 시각화 용이
- 다양한 Exportor를 통한 Metrix 유형으로 변환가능
- 그라파나는 알림을 보내는 임계값설정, 알림을 보내는 대상설정하는 UI가 직관적
- 그라파나 그래프는 미리 템플릿으로 만들어두어 다양한 환경에서 재활용 가능
'DataPipeline > Prometheus' 카테고리의 다른 글
| Prometheus - PromQL 예제 (Prometheus Query Language) (0) | 2023.03.27 |
|---|---|
| Prometheus - 설치 (0) | 2023.03.27 |