■ Prometheus란?
· Prometheus는 Open Source Monitoring Tool
· Metric 수집, 시각화, Alert, Service Decovery 기능 제공
· SoundCloud에서 탄생
· Kubernetes에 이어서 두번째로 CNCF Project 멤버로 추가
■ Prometheus 특징
1. 차원 데이터
· 시계열은 지표 이름과 일련의 Key-Value 쌍으로 식별
· 다양한 Exporter를 통해 Service/System Metric을 수집
ex) Node Exporter는 CPU, Memory의 Metric 정보 수집
2. 강력한 검색
· PromQL을 기반으로 Graph, Table, Alert을 생성하기 위해 수집 된 시계열 데이터를 검색 가능
3. 시각화
· 내장식 브라우저 및 손쉬운 Grafana와 연동의 연동
4. 효율적인 저장
· 시계열을 Memory와 Local Disk에 저장
5. 간단한 조작
· 각 Serversms Local 저장소에만 의존하여 안정성을 위해 독립적
6. Alert
· PromQL을 기반으로 정의하여 치주 정보 유지
· Alertmanager를 통해 Alert Event 발생
7. 손쉬운 구축
· Client 라이브러리를 사용하면 Server를 쉽게 구축 가능
■ Prometheus를 사용할 때 적합/비적합 환경
1. 적합할 경우
· Metric 기반의 시계열 Data를 저장할 경우
· Dynamic, Micro Server의 Instance에 대한 Metric을 수집할 경우
2. 비적합할 경우
· Event Log나 개별 Event를 저장할 경우
· Email 주소나 User 이름과 같이 Cardinarity가 높은 Data를 저장할 경우
· 높은 정확성이 요구될 경우
■ Prometheus의 단점
1. 확장성 문제
· Prometheus는 단일 host로 Local Disk에 Data를 저장, 관리
· 따라서, Metric을 수집해야 할 Target Server가 증가한다면 관리해야 하는 Data가 증가함에 따라 Server의 부하가 발생
2. 가용성(HA) 문제
· Prometheus는 단일 Server로 Server-Side-Pool 방식으로 Data를 수집하기 때문에 Server가 Down 되거나, Restart, Fetch와 같은 유지보수 작업시에 Metric 수집이 불가
(Federation 방식으로 문제 해결을 권장하고 있음)
3. Retention 문제
· Prometheus는 Metric을 수집해와서 Memory에 2시간 가량 저장
· 이 후, Local Disk에 덤프 형식으로 Metric을 저장
· 따라서 어느 정도의 시간이 흐르면 오래된 Data 값은 조회가 불가능
※ 위 3가지의 문제점은 Thanos Open Source Monitoring Tool로 보완 가능!
■ Prometheus 구축
1. Prometheus.yaml File 생성
# 기본적인 전역 설정
global:
scrape_interval: 15s
evaluation_interval: 15s
# Alertmanager 설정
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager: 9093
# 규칙을 처음 한번 로딩 후
rule_files:
# - “first_rules.yml”
# - “second_rules.yml”
# 메트릭을 수집할 엔드포인트를 설정 (이후 Target Server 증설 시 추가)
scrape_configs:
- job_name: ‘prometheus’
static_configs:
- targets: [‘localhost:9090’]
2. Docker를 이용하여 Prometheus Install
$ docker run -d --net=host -v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus-server prom/prometheus
$ docker run -d \ -v "/proc:/host/proc" \ -v "/sys:/host/sys" \ -v "/:/rootfs" \ --net="host" \ --name=prometheus \ quay.io/prometheus/node-exporter:v0.13.0 \ -collector.procfs /host/proc \ -collector.sysfs /host/sys \ -collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)
$ curl localhost:9090/metrics
3. Target Server 증설 시
1) Prometheus Config File에 추가로 수집할 Target 추가
scrape_configs:
- job_name: ‘Target’
static_configs:
- targets: [‘172.22.1.212:9100’]
2) Metric을 수집 할 Target Server 추가 후 Docker Restart
$ docker restart prometheus-server
■ Prometheus 화면
'DevOps > Monitoring' 카테고리의 다른 글
[Monitoring] Thanos (0) | 2022.04.07 |
---|---|
[Monitoring] Grafana (0) | 2022.04.07 |