PostgreSQL · 2025-12-29

PostgreSQL 모니터링: Prometheus와 Grafana 대시보드 구성

Prometheus와 Grafana를 활용한 PostgreSQL 모니터링 개념과 설치·설정 절차, 주요 지표와 대시보드 구성 방법을 이해하기 쉬운 설명으로 정리한 문서

작성일 : 2025-12-29 ㆍ 작성자 : 관리자
post
목차

개요

PostgreSQL 운영 환경에서 성능과 가용성을 유지하려면 체계적인 모니터링이 필요하다. Prometheus는 시계열 수집과 경고를 담당하고, Grafana는 시각화와 대시보드를 제공한다. 이 글에서는 postgres exporter 설정부터 Prometheus 스크래핑, Grafana 대시보드 구성과 주요 지표 해석까지 순서대로 설명한다.

설계 개념

모니터링 구조는 간단하다. PostgreSQL에 exporter를 설치해 메트릭을 노출하고, Prometheus가 주기적으로 수집한다. Grafana는 Prometheus를 데이터 소스로 연결해 대시보드를 그린다. 또한 알림 규칙을 통해 이상 징후를 빠르게 파악할 수 있다.

postgres exporter 설치와 설정

가장 보편적인 방법은 postgres_exporter를 사용한 접근이다. 아래는 Docker Compose 예시로 빠르게 시작하는 방법이다.

version: '3'
services:
  postgres:
    image: postgres:14
    environment:
      POSTGRES_PASSWORD: example
    ports:
      - "5432:5432"
  postgres_exporter:
    image: prometheuscommunity/postgres-exporter
    environment:
      DATA_SOURCE_NAME: "postgresql://postgres:example@postgres:5432/postgres?sslmode=disable"
    ports:
      - "9187:9187"

주의사항:

  • DATA_SOURCE_NAME에 적절한 계정과 권한을 사용한다.
  • 보안상 별도 모니터링 전용 읽기 계정을 만드는 것을 권장한다.
  • 방화벽과 네트워크 설정으로 Prometheus가 exporter에 접근 가능해야 한다.

Prometheus 설정

Prometheus 설정 파일(prometheus.yml)에 exporter를 스크랩하도록 등록한다.

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'postgres'
    static_configs:
      - targets: ['postgres_exporter:9187']

운영 환경에서는 서비스 디스커버리나 Consul, Kubernetes 서비스 어노테이션을 사용해 동적으로 등록한다.

중요 메트릭과 해석

모니터링 시 주목할 메트릭과 그 의미는 다음과 같다.

  • pg_stat_activity 관련 지표: 동시 연결 수와 대기 상태를 확인한다.
  • pg_stat_database_xact_commit/rollback: 트랜잭션 처리량과 오류 비율 판단.
  • pg_stat_bgwriter: 체크포인트 및 백그라운드 쓰기 활동 파악.
  • pg_database_size: DB 크기와 디스크 사용량 트렌드 관찰.
  • 쿼리 지연 관련 지표(예: pg_stat_statements의 평균 실행 시간): 느린 쿼리 탐지.

주의할 지표 임계값

임계값은 워크로드별로 다르다. 다만 다음 항목은 기준으로 삼기 좋다.

  • CPU 사용률과 I/O 대기 시간의 급증
  • 동시 연결 수가 평상시보다 현저히 증가
  • 체크포인트 빈도 증가로 인한 쓰기 지연

Grafana 대시보드 구성

Grafana에서 Prometheus를 데이터 소스로 추가한 뒤, 대시보드를 만든다. 핵심 패널은 다음과 같다.

  • 요약 패널: 전체 트래픽, 쿼리 처리량, 에러 비율
  • 리소스 패널: CPU, 메모리, 디스크 I/O
  • 연결 및 잠금 패널: active connections, waiting queries
  • 체크포인트 및 백그라운드 작업 패널
  • 상세 쿼리 패널: 느린 쿼리 상위 목록

Grafana에는 이미 만들어진 대시보드 템플릿이 많다. Prometheus + postgres exporter용 대시보드를 가져와서 환경에 맞게 수정하면 빠르게 운영할 수 있다.

알림과 대응

Prometheus Alertmanager와 연계해 알림을 구성한다. 예시 규칙은 다음과 같다.

groups:
- name: postgres.rules
  rules:
  - alert: PostgresHighConnections
    expr: pg_stat_activity_count > 100
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "Postgres high connections"

알림은 단계화해서 처리한다. 초기 경고는 로그와 메트릭 확인, 악화 시 롤백이나 리소스 확장 등 조치를 취한다.

운영 팁

  • 모든 설정은 스테이징에서 먼저 검증한다.
  • 메트릭 레이블 선택을 신중히 해 카드너블한 쿼리가 가능하도록 한다.
  • 데이터 보존 정책을 세워 오래된 시계열 데이터로 인한 저장소 부담을 줄인다.

마무리

Prometheus와 Grafana를 활용한 postgres 모니터링은 시스템 가시성을 크게 높인다. exporter 설정, Prometheus 스크래핑, Grafana 시각화, 알림 규칙을 차례로 구성하면 운영 안정성이 향상된다. 처음에는 기본 템플릿으로 시작하고, 운영 데이터를 바탕으로 대시보드와 경고를 점진적으로 개선하는 접근을 권장한다.

prometheus postgres 모니터링 grafana postgres 대시보드 postgres exporter 설정 postgresql 모니터링 prometheus alertmanager grafana 대시보드 구성 postgres 메트릭 데이터베이스 모니터링