320x100
320x100
PromQL
프로메테우스에 저장된 시계열 데이터를 필터링, 집계, 계산하는 쿼리 언어
- 프로메테우스 메트릭 구조
메트릭이름{label_key="value"} value @ timestamp
# 예시
http_requests_total{method="GET", status="200", instance="10.0.0.1:8080"}
- ProQL 기본 타입
Instant Vector (현재 시점 값)
Range Vector (구간 데이터)
Scalar (숫자)
String (문자열)
라벨 필터링 문법
http_requests_total{method="GET"}
http_requests_total{status!="500"}
http_requests_total{instance=~"10\\.0\\.0\\..*"}
- 기호
`=` 일치
`!=` 불일치
`=~` 정규식
`!~` 정규식 제외
Range 함수
- rate (증가율 - Counter 전용)
rate(http_requests_total[5m])
- increase (기간 누적 증가량)
increase(http_requests_total[10m])
- irate (순간 증가율)
irate(node_cpu_seconds_total[1m])
집계 함수
- 기본 집계
sum(rate(http_requests_total[5m]))
avg(node_memory_Active_bytes)
max(node_load1)
count(node_cpu_seconds_total)
- 라벨 유지 / 제거
sum by (instance) (rate(http_requests_total[5m]))
sum without (pod) (rate(container_cpu_usage_seconds_total[5m]))
리소스
- CPU 사용률
100 - avg by (instance)(
rate(node_cpu_seconds_total{mode="idle"}[5m])
) * 100
- 메모리 사용률
(1 - node_memory_MemAvailable_bytes
/ node_memory_MemTotal_bytes) * 100
- 디스크 사용률
1 - (node_filesystem_free_bytes / node_filesystem_size_bytes)
HTTP 응답 코드 비율
sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m])) * 100
알람용 표현식
- 3분 이상 CPU 80%
100 - avg(rate(node_cpu_seconds_total{mod="idle"}[5m])) * 100 > 80
Vector 매칭
- instance 기준 계산
node_memory_MemAvailable_bytes
/
on(instance)
node_memory_MemTotal_bytes
- 다대일 조인
rate(http_requests_total[5m])
* on (instance)
group_left (node)
node_info
중요
PromQL은 Exporter가 노출한 메트릭 구조 그대로 쿼리
즉, Exporter를 어떻게 만들었냐가 PRomQL로 무엇을 할 수 있는지 결정됨
프로메테우스는 메트릭을 가공하지 않고 그대로 저장
PromQL은 그걸 읽기만 하는 것임
=> 고로 속성명을 커스텀하여 PromQL에서 사용가능하다
300x250
728x90
'InfraStructure > Infrastruncture' 카테고리의 다른 글
| 프로메테우스의 구조와 주요 설정 파일 (0) | 2025.12.01 |
|---|---|
| nginx 라우팅 우선순위 (location priority) (0) | 2025.02.02 |
| nginx 수동 설치 (0) | 2024.06.26 |
| nginx 기본적인 보안 설정 (HTTP Header에서의 정보 노출 방지) (0) | 2023.08.12 |
| nginx 기초 사용법 (0) | 2023.07.23 |
