리눅스 노드, 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
위 값을 수정하면 아래 코드 블록의 부분이 자동으로 변경됩니다.
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]))
자신만의 철학을 만들어가는 중입니다.
댓글남기기