전체 비유: 의료 데이터 분석 언어#

PromQL을 병원 EMR(전자의무기록) 분석 언어에 비유하면 이해하기 쉽습니다:

EMR 분석 비유PromQL 개념역할
환자 기록 검색기본 쿼리원하는 데이터 조회
조건 필터 (연령, 진료과)레이블 매칭특정 조건으로 필터링
통계 분석 (평균, 합계)집계 연산자데이터 요약/분석
추세 분석 (일별 변화)rate/increase시간에 따른 변화율
백분위 분석 (P95)histogram_quantile분포 분석
사전 계산 보고서Recording Rules자주 쓰는 쿼리 저장
이상 징후 알림Alerting Rules조건 기반 알림

이처럼 의료진이 EMR 시스템에서 환자 데이터를 분석하듯, PromQL로 시계열 메트릭을 분석합니다.


PromQL(Prometheus Query Language)은 Prometheus에서 시계열 데이터를 조회하고 분석하는 쿼리 언어입니다.

왜 PromQL을 배워야 하는가?#

활용설명
대시보드Grafana 패널에서 데이터 시각화
알림조건 기반 자동 알림 규칙 작성
분석Ad-hoc 쿼리로 문제 원인 분석
Recording Rules복잡한 쿼리 사전 계산으로 성능 최적화

학습 순서#

기초 (1시간)#

  1. 기본 문법 - 셀렉터, 레이블 매칭, 시간 범위
  2. 집계 연산자 - sum, avg, count, topk, by/without

실전 활용 (2시간)#

  1. rate와 increase - Counter 메트릭 처리의 핵심
  2. histogram_quantile - P50/P95/P99 백분위 계산

고급 (1시간)#

  1. Recording Rules - 복잡한 쿼리 사전 계산
  2. Alerting Rules - 알림 규칙 작성법

빠른 참조#

자주 쓰는 함수#

함수용도예시
rate()Counter의 초당 증가율rate(http_requests_total[5m])
increase()Counter의 총 증가량increase(http_requests_total[1h])
sum()합계sum(rate(http_requests_total[5m]))
avg()평균avg(node_cpu_seconds_total)
histogram_quantile()백분위histogram_quantile(0.99, rate(...[5m]))

자주 쓰는 패턴#

# 에러율
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))

# P99 응답시간
histogram_quantile(0.99,
  sum(rate(http_request_duration_seconds_bucket[5m])) by (le)
)

# CPU 사용률
100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

학습 경로#

graph LR
    A["기본 문법"] --> B["집계 연산자"]
    B --> C["rate/increase"]
    C --> D["histogram_quantile"]
    D --> E["Recording Rules"]
    E --> F["Alerting Rules"]