🔷 오픈 소스 시스템 모니터링 및 경고 도구, 시계열 데이터베이스
CNCF(Cloud Native Computing Foundation)
에 의해 관리PromQL
), 시간 시리즈 데이터 수집, 실시간 경고 등이 있다.🔷 프로메테우스가 제공하는 주요 기능
멀티차원 데이터 모델
PromQL
독립성 및 서버리스
Alertmanager
와 통합하여 복잡한 경고 규칙을 설정하고 관리할 수 있다.❗ 필자는 EC2 상에서 Docker를 이용한 서버 관리 중이다.
1. Docker
의 컨테이너로 Prometheus
서버를 열기 전에 미리 prometheus.yml
파일을 작성한다.
# 기본적인 전역 설정 (매트릭 수집 간격 설정)
global:
scrape_interval: 1s
evaluation_interval: 1s
# 'scrpae_timeout'의 default는 10초
# Alertmanager
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
- job_name: 'spring-boot'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['Domain or localhost:8084']
metrics_path
: metric 경로 지정
static_configs
: targets에는 host를 지정
scrape_interval
: 수집 주기를 설정
2. 볼륨 마운트를 이용하여 컨테이너를 연다.
sudo docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /home/jenkins/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
3. 프로젝트의 설정을 추가한다.
🖥 build.gradle
dependency {
implementation 'io.micrometer:micrometer-registry-prometheus'
}
🖥 application.yml
management:
endpoint:
metrics:
enabled: true
prometheus:
enabled: true
endpoints:
web:
exposure:
include: "prometheus"
metrics:
tags:
application: ${spring.application.name}
💡
/actuator/prometheus
로 접속하거나http://<Prometheus를 띄운 서버의 public ip>:9090
으로 접속하면 잘 연동되었는지 확인해 볼 수 있다.
그런데...
써본 사람은 알겠지만 메트릭이 넘어와도 이것들을 여기서 한눈에 보는 것이 쉽지 않다. 그래서 이를 더 효과적으로 시각화하기 위해 Grafana
를 적용하기로 결정하였다.
🔷 강력한 시각화 및 분석 도구
다양한 데이터 소스에서 수집된 메트릭을 통해 동적 대시보드를 생성
사용자가 복잡한 데이터를 쉽게 이해할 수 있도록 돕고, 시스템이나 어플리케이션의 상태를 한눈에 파악할 수 있도록 시각적인 피드백을 제공한다.
Grafana
는 특히 Prometheus
와 같은 시계열 데이터베이스와 연동할 때 그 진가를 발휘한다.
🔷 Grafana의 주요 기능
다양한 데이터 소스 지원
Prometheus
, InfluxDB
, ElasticSearch
등 다양한 데이터 소스를 지원한다.강력한 시각화 기능
쉬운 대시보드 관리
알림 기능
1. Grafana image
를 Docker Container
화 시킨다.
🖥 compose.yaml
grafana:
image: grafana/grafana:latest
container_name: grafana
user: "$UID:$GID"
ports:
- "3000:3000"
volumes:
- ./grafana-data:/var/lib/grafana
depends_on:
- prometheus
prometheus
컨테이너보다 먼저 생성되어 오류가 발생하는 것을 막아야한다.❗ 볼륨 없이 만든 컨테이너가 닫히면 얄짤없이 모든 것이 날아갈 수 있다는 건 늘 기억하자.
2. Grafana 접속 후 초기 설정을 한다.
3. Data source로 Prometheus를 등록한다.
3. 대시보드를 만들거나 import 한다.
Spring boot 2.1 System Monitor
를 이용하였다.프로메테우스는 현대적인 애플리케이션 모니터링을 위한 강력한 도구다. 간단하면서도 강력한 쿼리 언어, 자체 저장소를 이용한 뛰어난 독립성, 다양한 애플리케이션과의 쉬운 통합, 그리고 빠르고 유연한 경고 시스템은 모니터링을 새로운 차원으로 끌어올렸다.
프로젝트에서 프로메테우스를 통해 얻은 데이터와 인사이트는 성능 최적화의 방향을 제시하고, 사용자 경험을 개선하는 데 매우 중요한 역할을 했다. 또한, 프로젝트의 신속한 확장과 유연한 운영을 가능하게 하는 기반을 마련했다.
모니터링은 우리가 생각하는 것 이상으로 개발 프로세스와 운영에 근본적인 영향을 미치며, 프로메테우스는 이러한 모니터링의 필수적인 부분을 책임진다. 어떤 규모의 시스템에서든지 프로메테우스를 통해 품질과 안정성을 지키는 것은 이제 선택이 아닌 필수가 되었다고 생각한다.
그라파나 역시 그러하다.
우리 프로젝트에 그라파나를 통합함으로써, 팀의 효율성을 극대화하고, 서비스의 품질을 지속적으로 향상시키는 데 크게 기여했다. 데이터가 말해주는 이야기를 보는 것이 이제 그 어느 때보다 중요하고, 그라파나는 그러한 이야기를 효과적으로 들려주는 데 필수적인 도구다. 이는 기술적인 분석을 넘어서, 직관적인 통찰력을 제공하며, 미래 예측과 전략적인 의사결정을 가능하게 한다.
그라파나의 적용은 단순히 성능 측정에 그치지 않고, 서비스 개선의 방향을 설정하고 사용자 만족도를 높이는 데 기여했다. 결국, 그라파나는 단순한 모니터링 툴이 아니라, 프로젝트의 성공을 위한 파트너가 되었다고 생각한다.
마지막으로 아직 프로메테우스에서의 알림 설정에 대해선 이 글에서 언급하지 않았다.
추후에 기회가 된다면 추가로 언급하도록 하겠다.