Prometheus 완벽 가이드! Kubernetes Monitoring과 Metrics 수집 Architecture 이해하기

현대 Cloud Native 환경에서는 Server와 Application 상태를 지속적으로 확인하는 Monitoring 시스템이 필수입니다.

기존 방식:

Server 접속

CPU 확인

Memory 확인

문제 발생 후 대응

하지만 Kubernetes와 Container 환경에서는 수많은 Pod와 Service가 동적으로 생성되고 삭제됩니다.

따라서 단순히 Server 하나를 확인하는 방식으로는 전체 시스템 상태를 파악하기 어렵습니다.

예:

Kubernetes Cluster

Node 증가

Pod 생성

Application 증가

Metrics 수집 필요

이를 해결하기 위해 Cloud Native 환경에서는 Metrics 기반 Monitoring 시스템을 사용합니다.

그중 Kubernetes 환경에서 가장 많이 사용되는 Monitoring Tool이 Prometheus입니다.

예:

Application

Metrics Endpoint

Prometheus 수집

Time Series Database 저장

Grafana 시각화

Prometheus는 Kubernetes Monitoring Architecture의 핵심 Metrics Collection Tool입니다.

구성 요소역할
Prometheus ServerMetrics 수집 및 저장
ExporterMetrics 제공
TSDBTime Series 저장
PromQLQuery 언어
AlertmanagerAlert 처리

Prometheus 구조를 이해하면 Kubernetes, Cloud Native, Enterprise Monitoring Architecture를 설계할 수 있습니다.

Prometheus란?

Prometheus는 Open Source 기반 Monitoring System으로 Metrics 데이터를 수집하고 저장하는 Time Series Database입니다.

주요 특징:

  • Pull 기반 Metrics 수집
  • Time Series 데이터 저장
  • PromQL Query 지원
  • Alert 생성
  • Kubernetes 자동 Discovery

Cloud Native Monitoring의 대표 기술입니다.

Prometheus Architecture

기본 구조:

Application

↓

Exporter

↓

Prometheus Server

↓

TSDB

↓

Grafana

↓

Dashboard

Metrics 데이터를 수집하고 분석합니다.

Metrics란?

Metrics는 시스템 상태를 숫자 데이터로 표현한 것입니다.

예:

CPU 사용률

Memory 사용량

Request 수

Network Traffic

Response Time

Monitoring 시스템의 기본 데이터입니다.

Prometheus Pull 방식

Prometheus의 가장 큰 특징은 Pull 방식입니다.

구조:

Prometheus

↓

HTTP Scrape

↓

Metrics Endpoint

Prometheus가 직접 Target에 접근하여 데이터를 가져옵니다.

Exporter란?

Exporter는 Application이나 System 데이터를 Prometheus 형식으로 변환하는 Component입니다.

대표 Exporter:

Exporter대상
Node ExporterServer Metrics
cAdvisorContainer Metrics
Blackbox ExporterEndpoint Monitoring
MySQL ExporterDatabase Metrics

다양한 환경의 데이터를 수집합니다.

Prometheus와 Kubernetes

Kubernetes Monitoring:

Kubernetes Node

↓

Node Exporter

↓

Prometheus

↓

Pod Metrics

↓

Grafana Dashboard

Cluster 상태를 모니터링합니다.

Prometheus Service Discovery

Kubernetes 환경에서는 Pod가 동적으로 변경됩니다.

Prometheus는 Service Discovery 기능을 통해 자동으로 Target을 찾습니다.

구조:

Kubernetes API

↓

Service Discovery

↓

Prometheus Target

↓

Metrics Collection

자동 Monitoring 환경을 구성합니다.

Prometheus PromQL

PromQL은 Prometheus 데이터를 조회하는 Query Language입니다.

예:

CPU 사용량 조회:

rate(node_cpu_seconds_total[5m])

Memory 확인:

node_memory_MemAvailable_bytes

Metrics 분석에 사용합니다.

Prometheus와 Grafana

대표 Monitoring 구조:

Prometheus

↓

Metrics Database

↓

Grafana

↓

Dashboard Visualization

Prometheus는 데이터 수집, Grafana는 시각화를 담당합니다.

Prometheus와 Kubernetes Alert

Alert 구조:

Prometheus

↓

Alert Rule

↓

Alertmanager

↓

Slack / Email

↓

Operator Notification

문제 발생 시 자동 알림을 제공합니다.

Prometheus와 DevOps

DevOps 운영:

Deploy

↓

Monitoring

↓

Metrics Analysis

↓

Optimization

CI/CD 이후 운영 단계에서 활용됩니다.

Prometheus와 Docker

Container Monitoring:

Docker Container

↓

cAdvisor

↓

Prometheus

↓

Metrics Storage

Container 상태를 관리합니다.

Prometheus Best Practice

권장:

  • 적절한 Retention 설정
  • Label 관리
  • Alert Rule 구성
  • Recording Rule 활용
  • Grafana Dashboard 구성

효율적인 Monitoring 환경을 구축합니다.

Prometheus 장애 분석

Prometheus 상태 확인:

systemctl status prometheus

Target 확인:

Status

↓

Targets

↓

Endpoint 확인

Query 테스트:

up

확인:

  • Target 연결 상태
  • Exporter 오류
  • Storage 문제
  • Query 오류

Prometheus 장점

장점설명
Cloud NativeKubernetes 최적화
확장성Exporter 지원
자동 DiscoveryDynamic 환경 지원
QueryPromQL 분석

Prometheus는 Kubernetes Monitoring Architecture의 표준 기술입니다.

자주 묻는 질문

Prometheus는 Log Monitoring인가요?

아닙니다.

Prometheus는 Metrics Monitoring 중심이며 Log는 ELK Stack, Loki 등이 담당합니다.

CloudWatch와 Prometheus 차이는 무엇인가요?

CloudWatch는 AWS Managed Monitoring 서비스이고 Prometheus는 Cloud Native 환경에서 많이 사용하는 Open Source Monitoring Tool입니다.

Kubernetes에서 Prometheus가 필요한가요?

대규모 Kubernetes 환경에서는 거의 필수적으로 활용되며 Cluster와 Application 상태를 확인하는 핵심 도구입니다.

마무리

Prometheus는 Kubernetes와 Cloud Native 환경에서 Metrics를 수집하고 저장하는 대표적인 Monitoring System입니다.

구성 요소역할
Prometheus ServerMetrics 수집
Exporter데이터 제공
TSDB저장
PromQL분석
Alertmanager알림

Prometheus 구조를 이해하면 Kubernetes, Docker, Cloud 환경에서 안정적인 Observability Architecture를 구축할 수 있습니다.

댓글 남기기