Prometheus HTTP API — 추출 가능 데이터 리스트
1. API 개요
| 항목 |
내용 |
| Base Path |
/api/v1 |
| 응답 형식 |
JSON |
| 인증 |
별도 설정 시 Basic Auth / TLS 지원 |
2. 전체 엔드포인트 목록
| 카테고리 |
엔드포인트 |
메서드 |
설명 |
| 쿼리 |
/api/v1/query |
GET/POST |
특정 시점의 Instant 쿼리 |
|
/api/v1/query_range |
GET/POST |
시간 범위의 Range 쿼리 |
|
/api/v1/format_query |
GET/POST |
PromQL 표현식 포맷팅 |
| 메타데이터 |
/api/v1/series |
GET/POST |
라벨 매처로 시계열 검색 |
|
/api/v1/labels |
GET/POST |
라벨 이름 목록 조회 |
|
/api/v1/label/<name>/values |
GET |
특정 라벨의 값 목록 조회 |
|
/api/v1/metadata |
GET |
메트릭 메타데이터 조회 |
| 타겟 |
/api/v1/targets |
GET |
스크래핑 타겟 상태 조회 |
|
/api/v1/targets/metadata |
GET |
타겟의 메트릭 메타데이터 조회 |
|
/api/v1/scrape_pools |
GET |
스크래핑 풀 목록 조회 |
| 규칙/알림 |
/api/v1/rules |
GET |
알림/레코딩 규칙 목록 조회 |
|
/api/v1/alerts |
GET |
현재 활성 알림 목록 조회 |
|
/api/v1/alertmanagers |
GET |
Alertmanager 상태 조회 |
| 상태 |
/api/v1/status/config |
GET |
현재 로드된 설정 파일 |
|
/api/v1/status/flags |
GET |
실행 플래그 값 |
|
/api/v1/status/runtimeinfo |
GET |
런타임 정보 |
|
/api/v1/status/buildinfo |
GET |
빌드 정보 |
|
/api/v1/status/tsdb |
GET |
TSDB 카디널리티 통계 |
|
/api/v1/status/tsdb/blocks |
GET |
TSDB 블록 목록 (실험적) |
| Exemplar |
/api/v1/query_exemplars |
GET/POST |
Exemplar 조회 (실험적) |
| Admin (TSDB) |
/api/v1/admin/tsdb/snapshot |
POST |
TSDB 스냅샷 생성 |
|
/api/v1/admin/tsdb/delete_series |
POST |
시계열 삭제 |
|
/api/v1/admin/tsdb/clean_tombstones |
POST |
삭제 마커 정리 |
| Remote Write |
/api/v1/write |
POST |
Remote Write 수신 |
Admin API는 --web.enable-admin-api 플래그를 활성화해야 사용할 수 있습니다.
3. Expression 쿼리 (데이터 조회의 핵심)
3-1. Instant Query — /api/v1/query
특정 시점에 PromQL 표현식을 평가합니다.
| 파라미터 |
필수 |
설명 |
query |
✅ |
PromQL 쿼리 문자열 |
time |
|
평가 시점 (RFC3339 또는 Unix 타임스탬프). 생략 시 현재 시간 |
timeout |
|
쿼리 타임아웃 |
limit |
|
반환할 최대 시계열 수 |
lookback_delta |
|
Lookback 기간 오버라이드 |
stats |
|
all 설정 시 쿼리 통계 포함 |
응답 resultType: vector, matrix, scalar, string
3-2. Range Query — /api/v1/query_range
시간 범위에 걸쳐 PromQL 표현식을 평가합니다.
| 파라미터 |
필수 |
설명 |
query |
✅ |
PromQL 쿼리 문자열 |
start |
✅ |
시작 타임스탬프 (inclusive) |
end |
✅ |
종료 타임스탬프 (inclusive) |
step |
✅ |
쿼리 해상도 간격 (예: 15s, 1m, 5m) |
timeout |
|
쿼리 타임아웃 |
limit |
|
반환할 최대 시계열 수 |
lookback_delta |
|
Lookback 기간 오버라이드 |
stats |
|
all 설정 시 쿼리 통계 포함 |
응답 resultType: 항상 matrix
| resultType |
설명 |
데이터 구조 |
vector (Instant Vector) |
특정 시점의 시계열 목록 |
metric (라벨셋) + value [타임스탬프, 값] |
matrix (Range Vector) |
시간 범위의 시계열 목록 |
metric (라벨셋) + values [[타임스탬프, 값], ...] |
scalar |
단일 숫자 값 |
[타임스탬프, 값] |
string |
단일 문자열 값 |
[타임스탬프, 문자열] |
histogram (Native) |
네이티브 히스토그램 |
count, sum, buckets [[boundary_rule, left, right, count], ...] |
5. 메타데이터 쿼리
5-1. 시계열 검색 — /api/v1/series
| 파라미터 |
필수 |
설명 |
match[] |
✅ |
시계열 셀렉터 (반복 가능) |
start |
|
시작 타임스탬프 |
end |
|
종료 타임스탬프 |
limit |
|
반환할 최대 시계열 수 |
반환: 매칭되는 시계열의 라벨 이름/값 쌍 목록
5-2. 라벨 이름 목록 — /api/v1/labels
| 파라미터 |
필수 |
설명 |
start |
|
시작 타임스탬프 |
end |
|
종료 타임스탬프 |
match[] |
|
시계열 셀렉터 (반복 가능) |
limit |
|
반환할 최대 수 |
반환: 라벨 이름 문자열 배열
5-3. 라벨 값 목록 — /api/v1/label/<label_name>/values
| 파라미터 |
필수 |
설명 |
start |
|
시작 타임스탬프 |
end |
|
종료 타임스탬프 |
match[] |
|
시계열 셀렉터 (반복 가능) |
limit |
|
반환할 최대 수 |
반환: 해당 라벨의 값 문자열 배열
| 파라미터 |
필수 |
설명 |
metric |
|
특정 메트릭 이름으로 필터 |
limit |
|
반환할 최대 메트릭 수 |
limit_per_metric |
|
메트릭당 반환할 최대 메타데이터 수 |
반환 데이터:
| 필드 |
설명 |
type |
메트릭 유형 (counter, gauge, histogram, summary) |
help |
메트릭 설명 |
unit |
단위 |
6. 타겟(Target) 정보
6-1. 타겟 상태 — /api/v1/targets
| 파라미터 |
필수 |
설명 |
state |
|
active, dropped, any로 필터 |
scrapePool |
|
스크래핑 풀 이름으로 필터 |
Active Target 반환 데이터:
| 필드 |
설명 |
discoveredLabels |
서비스 디스커버리에서 가져온 원본 라벨 |
labels |
리라벨링 후 최종 라벨 |
scrapePool |
스크래핑 풀 이름 |
scrapeUrl |
스크래핑 URL |
lastError |
마지막 에러 메시지 |
lastScrape |
마지막 스크래핑 시간 |
lastScrapeDuration |
마지막 스크래핑 소요 시간 (초) |
health |
타겟 상태 (up / down) |
scrapeInterval |
스크래핑 주기 |
scrapeTimeout |
스크래핑 타임아웃 |
| 파라미터 |
필수 |
설명 |
match_target |
|
라벨 셀렉터로 타겟 필터 |
metric |
|
특정 메트릭 이름으로 필터 |
limit |
|
반환할 최대 타겟 수 |
반환: 타겟별 메트릭의 type, help, unit
7. 규칙 및 알림
7-1. 규칙 목록 — /api/v1/rules
| 파라미터 |
필수 |
설명 |
type |
|
alert 또는 record로 필터 |
rule_name[] |
|
규칙 이름으로 필터 |
rule_group[] |
|
규칙 그룹 이름으로 필터 |
file[] |
|
파일 경로로 필터 |
exclude_alerts |
|
true 시 활성 알림 제외 |
match[] |
|
라벨 셀렉터로 필터 |
반환 데이터 (Alerting Rule):
| 필드 |
설명 |
name |
규칙 이름 |
query |
PromQL 쿼리 |
duration |
알림 대기 시간 (초) |
labels |
규칙 라벨 |
annotations |
규칙 어노테이션 |
health |
규칙 상태 |
alerts |
현재 활성 알림 목록 |
type |
alerting 또는 recording |
7-2. 활성 알림 — /api/v1/alerts
반환 데이터:
| 필드 |
설명 |
activeAt |
알림 활성화 시간 |
annotations |
어노테이션 |
labels |
알림 라벨 (alertname 포함) |
state |
상태 (firing, pending) |
value |
현재 값 |
7-3. Alertmanager 상태 — /api/v1/alertmanagers
반환: activeAlertmanagers와 droppedAlertmanagers의 URL 목록
8. 서버 상태 정보
8-1. 설정 — /api/v1/status/config
반환: 현재 로드된 설정 파일 (YAML 문자열)
8-2. 실행 플래그 — /api/v1/status/flags
반환: Prometheus 실행 시 설정된 플래그 key-value 쌍
8-3. 런타임 정보 — /api/v1/status/runtimeinfo
| 필드 |
설명 |
startTime |
서버 시작 시간 |
CWD |
현재 작업 디렉토리 |
hostname |
호스트명 |
serverTime |
현재 서버 시간 |
reloadConfigSuccess |
마지막 설정 리로드 성공 여부 |
lastConfigTime |
마지막 설정 리로드 시간 |
timeSeriesCount |
현재 시계열 수 |
corruptionCount |
손상 카운트 |
goroutineCount |
고루틴 수 |
GOMAXPROCS |
Go 최대 프로세서 수 |
storageRetention |
스토리지 보존 기간 |
8-4. 빌드 정보 — /api/v1/status/buildinfo
| 필드 |
설명 |
version |
Prometheus 버전 |
revision |
Git 리비전 |
branch |
Git 브랜치 |
buildUser |
빌드 사용자 |
buildDate |
빌드 일시 |
goVersion |
Go 버전 |
8-5. TSDB 통계 — /api/v1/status/tsdb
| 필드 |
설명 |
headStats.numSeries |
현재 시계열 수 |
headStats.chunkCount |
청크 수 |
headStats.minTime |
최소 타임스탬프 (ms) |
headStats.maxTime |
최대 타임스탬프 (ms) |
seriesCountByMetricName |
메트릭 이름별 시계열 수 |
labelValueCountByLabelName |
라벨 이름별 값 개수 |
memoryInBytesByLabelName |
라벨 이름별 메모리 사용량 (bytes) |
seriesCountByLabelValuePair |
라벨 값 쌍별 시계열 수 |
8-6. TSDB 블록 — /api/v1/status/tsdb/blocks (실험적)
| 필드 |
설명 |
ulid |
블록 고유 ID |
minTime |
블록 최소 타임스탬프 (ms) |
maxTime |
블록 최대 타임스탬프 (ms) |
stats.numSeries |
블록 내 시계열 수 |
stats.numSamples |
블록 내 샘플 수 |
stats.numChunks |
블록 내 청크 수 |
compaction.level |
컴팩션 레벨 |
9. Admin API (TSDB 관리)
--web.enable-admin-api 플래그 필요
| 엔드포인트 |
메서드 |
설명 |
주요 파라미터 |
/api/v1/admin/tsdb/snapshot |
POST |
TSDB 스냅샷 생성 |
— |
/api/v1/admin/tsdb/delete_series |
POST |
시계열 데이터 삭제 |
match[] (필수), start, end |
/api/v1/admin/tsdb/clean_tombstones |
POST |
삭제 마커(tombstone) 정리 |
— |
10. PromQL 주요 함수 (쿼리 시 활용)
Prometheus는 Langfuse와 달리 미리 정의된 metric/dimension이 아니라, PromQL 함수를 조합하여 지표를 산출합니다.
10-1. 집계 함수
| 함수 |
설명 |
sum() |
합계 |
avg() |
평균 |
min() |
최솟값 |
max() |
최댓값 |
count() |
시계열 수 |
stddev() |
표준편차 |
stdvar() |
분산 |
topk(k, ...) |
상위 k개 |
bottomk(k, ...) |
하위 k개 |
quantile(φ, ...) |
φ 분위수 (0~1) |
count_values() |
값별 시계열 수 |
group() |
그룹핑 (값 = 1) |
모든 집계 함수에 by (label) 또는 without (label)로 그룹핑 차원 지정 가능
10-2. 변환/비율 함수
| 함수 |
설명 |
rate(v[d]) |
초당 평균 증가율 (counter용) |
irate(v[d]) |
순간 증가율 (마지막 두 샘플 기반) |
increase(v[d]) |
구간 내 총 증가량 |
delta(v[d]) |
구간 내 변화량 (gauge용) |
deriv(v[d]) |
선형 회귀 기반 초당 변화율 |
predict_linear(v[d], t) |
t초 후 예측값 |
histogram_quantile(φ, v) |
히스토그램에서 φ 분위수 계산 |
changes(v[d]) |
구간 내 값 변경 횟수 |
resets(v[d]) |
구간 내 counter 리셋 횟수 |
10-3. 시간 관련 함수
| 함수 |
설명 |
time() |
현재 Unix 타임스탬프 |
timestamp(v) |
샘플의 타임스탬프 |
day_of_week() |
요일 (0=일요일) |
hour() |
시간 (0~23) |
10-4. 수학/변환 함수
| 함수 |
설명 |
abs() |
절대값 |
ceil() |
올림 |
floor() |
내림 |
round() |
반올림 |
ln() / log2() / log10() |
로그 함수 |
exp() |
지수 함수 |
sqrt() |
제곱근 |
clamp(v, min, max) |
값 범위 제한 |
label_replace() |
라벨 값 치환 |
label_join() |
라벨 값 결합 |
11. 위 데이터로 뽑을 수 있는 지표 정리
11-1. 인프라/시스템 모니터링
| 지표 |
사용 메트릭 (예시) |
PromQL 예시 |
| CPU 사용률 |
node_cpu_seconds_total |
1 - avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) |
| 메모리 사용률 |
node_memory_MemTotal_bytes, node_memory_MemAvailable_bytes |
1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) |
| 디스크 사용률 |
node_filesystem_avail_bytes, node_filesystem_size_bytes |
1 - (node_filesystem_avail_bytes / node_filesystem_size_bytes) |
| 네트워크 트래픽 |
node_network_receive_bytes_total |
rate(node_network_receive_bytes_total[5m]) |
| 시스템 로드 |
node_load1, node_load5, node_load15 |
직접 조회 |
11-2. 애플리케이션 성능 (RED Method)
| 지표 |
사용 메트릭 (예시) |
PromQL 예시 |
| 요청률 (Rate) |
http_requests_total |
sum(rate(http_requests_total[5m])) by (service) |
| 에러율 (Errors) |
http_requests_total |
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) |
| 응답 시간 (Duration) |
http_request_duration_seconds_bucket |
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) |
| P99 지연시간 |
http_request_duration_seconds_bucket |
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) |
| 초당 처리량 (TPS) |
http_requests_total |
sum(rate(http_requests_total[1m])) |
11-3. 컨테이너/쿠버네티스 모니터링
| 지표 |
사용 메트릭 (예시) |
PromQL 예시 |
| 컨테이너 CPU 사용률 |
container_cpu_usage_seconds_total |
rate(container_cpu_usage_seconds_total[5m]) by (pod) |
| 컨테이너 메모리 사용량 |
container_memory_usage_bytes |
직접 조회, by (pod) 그룹핑 |
| Pod 재시작 횟수 |
kube_pod_container_status_restarts_total |
increase(kube_pod_container_status_restarts_total[1h]) |
| 노드별 Pod 수 |
kube_pod_info |
count by (node)(kube_pod_info) |
| Deployment 가용 레플리카 |
kube_deployment_status_replicas_available |
직접 조회 |
11-4. Prometheus 자체 모니터링
| 지표 |
사용 메트릭 (예시) |
PromQL 예시 |
| 스크래핑 성공률 |
up |
avg(up) by (job) |
| 스크래핑 소요 시간 |
scrape_duration_seconds |
avg(scrape_duration_seconds) by (job) |
| 활성 시계열 수 |
/api/v1/status/tsdb |
headStats.numSeries (API 직접 조회) |
| 알림 발화 중 수 |
ALERTS |
count(ALERTS{alertstate="firing"}) |
| 규칙 평가 소요 시간 |
prometheus_rule_group_duration_seconds |
avg(prometheus_rule_group_duration_seconds) |
| 쿼리 지연 시간 |
prometheus_engine_query_duration_seconds |
histogram_quantile(0.99, rate(prometheus_engine_query_duration_seconds_bucket[5m])) |
11-5. 알림 관련
| 지표 |
사용 데이터 |
산출 방법 |
| 현재 활성 알림 목록 |
/api/v1/alerts |
직접 조회하여 firing/pending 상태별 확인 |
| 알림 규칙별 상태 |
/api/v1/rules?type=alert |
규칙별 health, alerts 수 확인 |
| Alertmanager 연결 상태 |
/api/v1/alertmanagers |
active/dropped 목록 확인 |
11-6. 복합 지표 (여러 메트릭 조합)
| 지표 |
사용 메트릭 |
PromQL 예시 |
| 에러 예산 소진율 (SLO) |
http_requests_total |
1 - (sum(rate(http_requests_total{status!~"5.."}[30d])) / sum(rate(http_requests_total[30d]))) |
| 리소스 포화도 |
CPU + Memory + Disk |
각각 사용률을 계산 후 종합 판단 |
| 트래픽 이상 탐지 |
http_requests_total |
rate(http_requests_total[5m]) > 2 * avg_over_time(rate(http_requests_total[5m])[1h:]) |
| 용량 예측 (디스크) |
node_filesystem_avail_bytes |
predict_linear(node_filesystem_avail_bytes[7d], 30*24*3600) |
| Apdex 점수 |
http_request_duration_seconds_bucket |
만족/허용/불만족 기준으로 bucket 비율 계산 |