본문 바로가기

Prometheus

PromQL

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' 카테고리의 다른 글