리눅스 노드, Docker 컨테이너, Spring Boot Actuator 환경에서 바로 붙여 넣어 쓸 수 있는 최소 PromQL 쿼리만 정리했다. 문법 근거는 Prometheus 공식 문서를 참고한다(PromQL basics, functions, histograms practice).


1. 리눅스 서버(Node Exporter)

CPU 사용률(%)

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

메모리 사용률(%)

(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100

디스크 사용률(%)

(max by (instance,device) (node_filesystem_size_bytes{fstype!~"tmpfs|overlay"})
 - max by (instance,device) (node_filesystem_free_bytes{fstype!~"tmpfs|overlay"}))
 / max by (instance,device) (node_filesystem_size_bytes{fstype!~"tmpfs|overlay"}) * 100

네트워크 수신/송신 Bps

sum by (instance) (rate(node_network_receive_bytes_total{device!~"lo"}[5m]))
sum by (instance) (rate(node_network_transmit_bytes_total{device!~"lo"}[5m]))

2. 도커 컨테이너(cAdvisor)

컨테이너 CPU 사용률(%)

sum by (container) (rate(container_cpu_usage_seconds_total{image!=""}[5m])) * 100

컨테이너 메모리 사용 바이트

sum by (container) (container_memory_working_set_bytes{image!=""})

컨테이너 재시작 감지(최근 10분)

increase(container_last_seen{image!=""}[10m]) < 1

컨테이너 네트워크 수신/송신 Bps

sum by (container) (rate(container_network_receive_bytes_total{image!=""}[5m]))
sum by (container) (rate(container_network_transmit_bytes_total{image!=""}[5m]))

3. Spring Boot Actuator

위 값을 수정하면 아래 코드 블록의 spring-app 부분이 자동으로 변경됩니다.

연동 코드: 계산 중...

RPS

sum by (instance) (rate(http_server_requests_seconds_count{job="spring-app"}[1m]))

p95 응답시간

histogram_quantile(0.95,
  sum by (le) (rate(http_server_requests_seconds_bucket{job="spring-app"}[5m]))
)

에러율(5xx 비율)

sum(rate(http_server_requests_seconds_count{job="spring-app",status=~"5.."}[5m]))
/
sum(rate(http_server_requests_seconds_count{job="spring-app"}[5m]))

JVM 힙 사용량

jvm_memory_used_bytes{job="spring-app",area="heap"}

GC Pause 합계(5m)

sum by (gc) (rate(jvm_gc_pause_seconds_sum{job="spring-app"}[5m]))

자신만의 철학을 만들어가는 중입니다.
최상단으로 이동했습니다!
확대 이미지

댓글남기기