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_TEMP | dcgm |
| GPU Util (%) | DCGM_FI_DEV_GPU_UTIL * 100 | dcgm |
| GPU Memory (%) | DCGM_FI_DEV_FB_USED / (DCGM_FI_DEV_FB_FREE + DCGM_FI_DEV_FB_USED) * 100 | dcgm |
| CPU Util (%) | sum(rate(node_cpu_seconds_total{mode!='idle'}[10m])) by (instance) / count(node_cpu_seconds_total{mode='system'}) by (instance) * 100 | node-exporter |
| Memory Util (%) | ((node_memory_MemTotal_bytes - (node_memory_MemAvailable_bytes + node_memory_Shmem_bytes)) / node_memory_MemTotal_bytes) * 100 | node-exporter |
참고 사항
- GPU 메트릭은 NVIDIA dcgm-exporter 설치 필요
- node-exporter는 DaemonSet 기반 설치 권장
- 실무에서는 recording rule을 활용해 쿼리 비용 절감 권장
마지막 업데이트: 2024-03-20