DATA GROUND 로고DATA GROUND
DevOps

[Prometheus] Container & Node Metric Query 정리

S.H. Yoo
마지막 업데이트: 2024-03-20

Kubernetes 환경에서 Container와 Node 단위의 CPU, Memory, GPU 메트릭을 수집하기 위한 Prometheus 쿼리 정리. cAdvisor, node-exporter, dcgm-exporter 기반 실무용 PromQL 모음.

작성일: 2024-03-20작성자: S.H. Yoo마지막 업데이트: 2024-03-20

[Prometheus] Container & Node Metric Query 정리

1. Container

  • 수집 패키지: cAdvisor
항목Query
CPU Util 사용량sum(rate(container_cpu_usage_seconds_total{{{search_query}}}[10m])) by (id)
할당된 CPU Core 개수container_spec_cpu_quota{{{search_query}}} / container_spec_cpu_period
RAM 사용량 (GiB)(container_memory_usage_bytes{{{search_query}}}) / (1024^3)
RAM 총량 (GiB)(container_spec_memory_limit_bytes{{{search_query}}}) / (1024^3)

CPU Util 사용량 설명

  • container_cpu_usage_seconds_total은 누적 CPU 사용 시간을 의미
  • rate()를 사용해 일정 구간(예: 10분) 동안의 CPU 사용량을 계산
  • id 기준으로 group by 하여 컨테이너 단위 CPU 사용량 산출

CPU Util (%) 계산 방법

CPU Util (%) = (CPU Util 사용량 / 할당된 CPU Core 개수) * 100
  • CPU 사용량은 id 기준으로 집계되므로, CPU Core 개수 쿼리와 직접 하나의 쿼리로 합칠 수 없음
  • 대시보드 단에서 연산하거나 recording rule 사용 권장

2. Node

  • node 단위 결과 조회 목적
  • instance 값을 node name 으로 변환하여 Prometheus 설정 필요
항목Query수집 패키지(Job)
GPU 온도DCGM_FI_DEV_GPU_TEMPdcgm
GPU Util (%)DCGM_FI_DEV_GPU_UTIL * 100dcgm
GPU Memory (%)DCGM_FI_DEV_FB_USED / (DCGM_FI_DEV_FB_FREE + DCGM_FI_DEV_FB_USED) * 100dcgm
CPU Util (%)sum(rate(node_cpu_seconds_total{mode!='idle'}[10m])) by (instance) / count(node_cpu_seconds_total{mode='system'}) by (instance) * 100node-exporter
Memory Util (%)((node_memory_MemTotal_bytes - (node_memory_MemAvailable_bytes + node_memory_Shmem_bytes)) / node_memory_MemTotal_bytes) * 100node-exporter

참고 사항

  • GPU 메트릭은 NVIDIA dcgm-exporter 설치 필요
  • node-exporter는 DaemonSet 기반 설치 권장
  • 실무에서는 recording rule을 활용해 쿼리 비용 절감 권장
마지막 업데이트: 2024-03-20

당신이 관심있을 만한 글