

주문 서비스의 누적 요청 수가 120에서 180으로 늘었습니다. 이 숫자를 보고 현재 요청이 얼마나 들어오는지 알고 싶습니다. 측정한 시간 간격을 함께 읽으면 요청 증가 속도를 계산할 수 있습니다.
Prometheus는 시간과 함께 측정한 숫자를 모으고 질문식으로 조회하는 시스템입니다. Counter는 발생 횟수를 누적하는 측정값입니다. 처리한 요청 수나 오류 수를 기록할 수 있습니다. 프로그램이 계속 실행되는 동안 값이 증가하며, 재시작하면 0으로 초기화될 수 있습니다. 현재 진행 중인 요청 수처럼 늘고 줄어드는 값에는 Gauge라는 측정값을 사용합니다. 측정값 종류 문서가 이 성질을 설명합니다.
10초에 누적 요청이 120건이고 40초에 180건이라면 30초 동안 60건이 증가했습니다. 60 ÷ 30 = 2이므로 관측한 두 지점 사이의 평균은 초당 2건입니다. 시간 단위가 초라는 점을 함께 표시해야 숫자의 의미가 분명해집니다.
| 시각 | Counter |
|---|---|
| 10초 | 120건 |
| 40초 | 180건 |
요청 수 차이: 180 − 120 = 60건
시간 차이: 40 − 10 = 30초
평균 증가율: 60 ÷ 30 = 초당 2건
재시작과 기록 누락이 없는 합성 두 지점의 산술 계산입니다.
시간 10초와 40초의 Counter 차이 60건을 시간 차이 30초로 나눕니다.
PromQL은 Prometheus 데이터에 질문하는 언어입니다. 아래 식의 rate()는 지정한 구간의 초당 평균 증가율을 계산하는 함수입니다. [5m]은 최근 5분의 기록을 뜻합니다. http_requests_total은 이 글에서 가정한 누적 요청 측정값 이름입니다.
sum by (service) (rate(http_requests_total[5m]))
Label은 측정값에 붙이는 이름과 값의 쌍입니다. service="checkout"처럼 서비스별로 기록을 구분합니다. sum by (service)는 각 기록에서 계산한 증가율을 같은 서비스끼리 합칩니다. rate()를 먼저 계산하면 각 기록의 재시작을 확인할 수 있습니다. 실제 함수는 Counter 초기화를 보정하고 조회 구간의 양 끝까지 값을 추정합니다. 이 동작은 함수 문서에 설명되어 있습니다.
Label 조합 하나마다 별도의 Time series가 생깁니다. Time series는 같은 측정값 이름과 Label 조합의 시간별 기록입니다. 요청마다 바뀌는 주문 번호를 Label에 붙이면 저장할 기록 종류가 계속 늘어납니다. 서비스 이름이나 응답 상태처럼 값의 종류가 제한된 항목을 선택하고, 주문 번호는 사건 기록에 남기는 구성을 생각할 수 있습니다. Label 이름 지침은 이 데이터 증가를 설명합니다.
서비스 이름이 두 종류이고 응답 상태가 세 종류인 가상 기록을 생각해 보겠습니다. 모든 조합이 관측되면 여섯 종류의 시간별 기록이 생깁니다. 이 숫자는 기록의 종류를 센 값입니다. 각 기록에는 측정 시각별 숫자가 계속 쌓입니다. 주문 번호를 추가하면 새 주문마다 조합이 달라질 수 있으므로 어떤 질문에 필요한 항목인지 먼저 정해야 합니다.
조회 결과도 시간 구간과 함께 읽어야 합니다. 최근 오분의 평균은 그 오분에 쌓인 기록으로 계산합니다. 그 숫자 하나만으로 특정 순간에 들어온 요청 수를 정할 수 있는 범위는 제한됩니다. 측정값 이름, 시간 구간, 초당 단위를 함께 적으면 결과를 읽는 기준이 분명해집니다.
t0, count0 = 10, 120
t1, count1 = 40, 180
elapsed = t1 - t0
increase = count1 - count0
print(f"{increase / elapsed:.1f} requests/s")
Python 3.13.13의 실행 결과는 2.0 requests/s입니다. 첫 줄과 둘째 줄은 측정 시각과 누적값을 지정합니다. 이어서 시간 차이와 증가량을 구하고 나눕니다. 재시작과 누락이 없는 두 지점의 산술 모델입니다. Prometheus의 rate() 결과를 그대로 재현하는 범위는 포함하지 않습니다. 위 PromQL은 공식 문서를 기준으로 작성한 조회 예시이며 서버 실행은 수행하지 않았습니다.
정답: 1은 Counter입니다. 2는 90 ÷ 30 = 3이므로 초당 3건입니다. 3은 새로운 값이 들어올 때마다 조합과 Time series가 추가될 수 있습니다. 계속 증가하는 값의 종류를 Label에 넣을 때 저장량을 함께 살펴야 합니다.
지금은 2건이라는 답의 시간 단위를 적어 보세요. 다음 날에는 위 예제의 끝 값을 210으로 바꾸어 계산하세요. 일주일 뒤에는 계획 주제인 Prometheus Alert의 대기 시간에서 어떤 증가율을 조건으로 삼을지 정해 보세요. 복습을 위한 제안 일정입니다.
문서 확인일은 2026-10-09입니다. Prometheus 현행 문서의 Counter, rate(), Label 지침을 기준으로 설명했습니다.