PromQL 이란
- 프로메테우스 쿼리 언어
- QL 로 끝나지만 SQL 계열 언어는 아니다. (SQL 은 시계열 계산에 대한 표현력이 부족하다.)
- 날짜 예측부터 수학 함수 까지 다양한 함수들이 있다.
레이블 (Label)
- 레이블은 PromQL 의 핵심
- PromQL 을 사용해 임의의 집계를 수행할 수 있을 뿐 아니라, 레이블에 대한 산술 연산을 위해 서로 다른 메트릭과 조인할 수도 있다.
PromQL 예시
예시 1) 각 머신의 전체 파일 시스템 크기 계산
- 시계열 데이터
node_filesystem_free_bytes{device="/dev/sda1", fstype="vfat",
instance="localhost:9100", job="node", mountpoint="/boot/efi"} 70300672
node_filesystem_free_bytes{device="/dev/sda5", fstype="ext4",
instance="localhost:9100", job="node", mountpoint="/"} 30791843840
node_filesystem_free_bytes{device="tmpfs", fstype="tmpfs",
instance="localhost:9100", job="node", mountpoint="/run"} 817094656
node_filesystem_free_bytes{device="tmpfs", fstype="tmpfs",
instance="localhost:9100", job="node", mountpoint="/run/lock"} 5238784
node_filesystem_free_bytes{device="tmpfs", fstype="tmpfs",
instance="localhost:9100", job="node", mountpoint="/run/user/1000"} 826912768
- 표현식
sum without(device, fstype, mountpoint)(node_filesystem_size_bytes)
- 결과
{instance="localhost:9100", job="node"} 32511390720
- 설명
- device, fstype, mountpoint 레이블은 무시하고 레이블이 같은 모든 메트릭을 합쳐 sum 집계 연산
예시 2) 초 단위로 수신된 네트워크 트래픽의 양 계산
> [5m] 5분 동안의 데이터에 대해 rate 이 제공됨. 즉, 5분 동안의 평균
- device, instance, job 별 1초당 수신한 전체 바이트 수
# 표현식
rate(node_network_receive_bytes_total[5m])
# 결과
{device="lo", instance="localhost:9100", job="node"} 1859.38955172414
{device="wlan0", instance="localhost:9100", job="node"} 1314.5034482758622
- instance, job 별 1초당 수신한 전체 바이트 수
# 표현식
sum without(device)(rate(node_network_receive_bytes_total[5m]))
# 결과
{instance="localhost:9100", job="node"} 3173.89310344
- eth0 의 1초당 수신한 전체 바이트 수
# 표현식
sum without(instance)(rate(node_network_receive_bytes_total{device="eth0"}[5m]))
# 결과
{instance="localhost:9100", job="node"} 3173.89310344
'Prometheus' 카테고리의 다른 글
PromQL without 과 by 의 차이점 (0) | 2021.09.06 |
---|