쿠버네티스 메트릭
쿠버네티스 모니터링이 수집하는 메 트릭을 카테고리별로 정리했습니다. 각 카테고리의 Tags(차원)와 Fields(측정값)를 확인할 수 있습니다.
컨테이너(container) 메트릭
container 카테고리는 컨테이너의 pod에 설정된 모든 사용자 정의 라벨들을 태그로 수집합니다.
- 대상: 클러스터 프로젝트, 네임스페이스 프로젝트
- 수집 간격: 5초
- 통계 데이터: 5분
Tags
| Tag | Type | Unit | Description |
|---|---|---|---|
| agentOid | - | - | 노드 에이전트 고유 ID(고유값) |
| agentPcode | - | - | 프로젝트 코드(고유값) |
| command | - | - | 실행 명령어 |
| containerId | - | - | 컨테이너 ID(고유값) |
| containerKey | - | - | 컨테이너 Key |
| created | - | - | 컨테이너가 생성된 TimeStamp |
| image | - | - | 컨테이너 이미지명 |
| imageHash | - | - | 이미지 해시 값 |
| imageId | - | - | 이미지 ID |
| k8s-app | - | - | Pod의 레이블 k8s-app에 대한 값 |
| microOid | - | - | 컨테이너에 설치된 와탭 APM 에이전트의 고유 ID |
| name | - | - | 컨테이너 이름 |
| namespace | - | - | 컨테이너가 소속된 네임스페이스 |
| namespaceHash | - | - | 컨테이너가 소속된 네임스페이스 해시 값 |
| okind | - | - | 컨테이너에 설치된 와탭 APM 에이전트에 지정한 OKIND 고유 ID |
| okindName | - | - | 컨테이너에 설치된 와탭 APM 에이전트에 지정한 OKIND 이름 |
| oname | - | - | 컨테이너에 설치된 와탭 APM 에이전트 이름 |
| onode | - | - | 컨테이너가 작동 중인 노드 에이전트의 고유 ID |
| onodeName | - | - | 컨테이너가 작동 중인 노드 이름 |
| podHash | - | - | 컨테이너의 Pod 해시 값 |
| podName | - | - | 컨테이너의 Pod 이름 |
| replicaSetHash | - | - | 컨테이너의 레플리카셋 해시 값 |
| replicaSetName | - | - | 컨테이너의 레플리카셋 이름 |
| whatap_project | - | - | 컨테이너가 속한 와탭 프로젝트 이름 |
Fields
| Field | Type | Unit | Shortname/Name/Description |
|---|---|---|---|
| blkio_rbps | - | byte | IoReadBytes |
| Container Block I/O Read Byte | |||
| 컨테이너 전체 블럭 디바이스의 초당 읽은 바이트 합 | |||
| blkio_riops | - | count | IoReadIops |
| Container Block I/O Read IOPS | |||
| 컨테이너 전체 블럭 디바이스의 초당 읽은 건수 합 | |||
| blkio_wbps | - | byte | IoWriteBytes |
| Container Block I/O Write Byte | |||
| 컨테이너 전체 블럭 디바이스의 초당 쓴 바이트 합 | |||
| blkio_wiops | - | count | IoWriteIops |
| Container Block I/O Write IOPS | |||
| 컨테이너 전체 블럭 디바이스의 초당 쓴 건수 합 | |||
| cpu_per_quota | - | percent | CpuByLimit |
| Container CPU Usage by Limit(%) | |||
| CPU Limit 기준 CPU 전체 사용률 | |||
| cpu_quota | - | millicores | CpuLimit |
| Container CPU Limit (core) | |||
| 컨테이너 CPU Limit 할당량 - Limit 미설정인 경우 컨테이너가 작동 중인 해당 노드의 CPU 전체 코어가 밀리코어 단위로 표시됨 | |||
| cpu_quota_percent | - | percent | CpuLimitByNode |
| Container CPU Limit by Node(%) | |||
| 노드 CPU 대비 컨테이너 CPU Limit 할당량 - Limit 미설정인 경우 컨테이너가 작동 중인 해당 노드의 CPU 전체 코어가 퍼센트로 표시됨 | |||
| cpu_sys | - | percent | CpuSysByNode |
| Container CPU Sys Usage by Node(%) | |||
| 노드 CPU 대비 컨테이너 CPU System 사용률 | |||
| cpu_throttledperiods | - | count | CpuThrottledCnt |
| Container CPU Throttling Count | |||
| 컨테이너 CPU Throttled 건수 | |||
| cpu_throttledtime | - | nanosecond(ns) | CpuThrottledTime |
| Container CPU Throttling Time | |||
| 컨테이너 CPU Throttled 시간 | |||
| cpu_total | - | percent | CpuByNode |
| Container CPU Usage by Node(%) | |||
| 노드 CPU 대비 컨테이너 CPU 사용률 | |||
| cpu_total_milli | - | millicores | CpuTotUsage |
| Container CPU Usage (millicore) | |||
| 컨테이너 CPU 사용량 | |||
| cpu_user | - | percent | CpuUserByNode |
| Container CPU User Usage by Node(%) | |||
| 노드 CPU 대비 컨테이너 CPU User 사용률 | |||
| cpu_request | - | millicores | CpuRequest |
| Container CPU Request (core) | |||
| 컨테이너 CPU 요청 | |||
| cpu_per_request | - | percent | CpuByRequest |
| Container CPU Usage by Request(%) | |||
| 컨테이너 CPU 요청 대비 사용률 = cpu_total_milli / cpu_request * 100 | |||
| mem_failcnt | - | count | MemFailCnt |
| Container Memory Failure Count | |||
| 컨테이너 메모리 Limit 도달 건수 | |||
| mem_limit | - | byte | MemLimit |
| Container Memory Limit (byte) | |||
| 컨테이너 메모리 Limit 크기 | |||
| mem_maxusage | - | byte | MemMaxUsage |
| Container Memory Max Usage (byte) | |||
| 컨테이너 메모리 최대 사용량 기록값 - 자세한 내용은 하단 안내를 참고하세요. | |||
| mem_percent | - | percent | MemWsByLimit |
| Container Memory Working Set by Limit(%) | |||
| 컨테이너 메모리 Limit 기준 working set 사용량 = mem_working_set / mem_limit * 100 | |||
| mem_totalcache | - | byte | MemTotCache |
| Container Memory Total Cache (byte) | |||
| 컨테이너 전체 캐시 크기 | |||
| mem_totalpgfault | - | count | MemTotPageFaultCnt |
| Container Memory Total Page Fault Count | |||
| 컨테이너 Page Fault 횟수 | |||
| mem_totalrss | - | byte | MemTotRss |
| Container Memory Total RSS (byte) | |||
| 컨테이너 RSS 메모리 전체 크기 | |||
| mem_totalrss_percent | - | percent | MemTotRssByLimit |
| Container Memory Total RSS by Limit (%) | |||
| 컨테이너 RSS 메모리 전체 사용률 | |||
| mem_totalunevictable | - | byte | MemTotUnevictable |
| Container Memory Total Unevictable (byte) | |||
| 컨테이너 Unevictable Memory 전체 크기 | |||
| mem_usage | - | byte | MemUsage |
| Container Memory Usage (byte) | |||
| 컨테이너 메모리 사용량 | |||
| mem_working_set | - | byte | MemWs |
| Container Memory Working Set (byte) | |||
| 컨테이너 메모리 working set = mem_usage - inactive file | |||
| mem_working_set_percent | - | percent | MemWsByLimit |
| Container Memory Working Set by Limit (%) | |||
| 컨테이너 메모리 Limit 기준 working set 사용량 = mem_working_set / mem_limit * 100 | |||
| mem_request | - | byte | MemRequest |
| Container Memory Request (byte) | |||
| 컨테이너 메모리 Request 크기 | |||
| mem_per_request | - | percent | MemWsByRequest |
| Container Memory Working Set by Request (%) | |||
| 컨테이너 메모리 Request 기준 working set 사용량 = mem_working_set / mem_request * 100 | |||
| network_rbps | - | byte | NetRxBytes |
| Container Network Receive Byte | |||
| 컨테이너 전체 블럭 디바이스의 초당 읽기 바이트 합 | |||
| network_rdropped | - | byte | NetRxDropped |
| Container Network Receive Dropped | |||
| 컨테이너 네트워크 수신 dropped 건수 | |||
| network_rerror | - | byte | NetRxError |
| Container Network Receive Error | |||
| 컨테이너 네트워크 수신 에러 건수 | |||
| network_riops | - | byte | NetRxIops |
| Container Network Receive IOPS | |||
| 컨테이너 네트워크 수신 건수 | |||
| network_wbps | - | byte | NetTxByes |
| Container Network Transmit Byte | |||
| 컨테이너 네트워크 송신 데이터 크기 | |||
| network_wdropped | - | count | NetTxDropped |
| Container Network Transmit Dropped | |||
| 컨테이너 네트워크 송신 dropped 건수 | |||
| network_werror | - | count | NetTxError |
| Container Network Transmit Error | |||
| 컨테이너 네트워크 송신 에러 건수 | |||
| network_wiops | - | count | NetTxIops |
| Container Network Transmit IOPS | |||
| 컨테이너 네트워크 송신 건수 | |||
| node_cpu | - | percent | ConNodeCpu |
| Container Work Node CPU Usage (%) | |||
| 컨테이너가 실행 중인 노드의 CPU 사용량 | |||
| node_mem | - | percent | ConNodeMem |
| Container Work Node Memory Usage (%) | |||
| 컨테이너가 실행 중인 노드의 메모리 사용량 | |||
| phase | string | - | Pod 라이프사이클 ① PENDING ② RUNNING ③ SUCCEEDED ④ FAILED ⑤ UNKNOWN |
| restart_count | integer | - | ConRestartCnt |
| Container Restart Count | |||
| 컨테이너 재시작 횟수 | |||
| state | integer | - | ConState |
| Container Current State | |||
| 컨테이너 상태 코드 ① RUNNING = 114 ② PAUSE = 112 ③ RESTARTING = 101 ④ OOMKILLED = 111 ⑤ DEAD = 100 ⑥ WAITING = 119 | |||
| status | string | - | ConStatus |
| Container Current Status | |||
| 컨테 이너 상태 정보 ① running 상태: uptime 정보 표시 ② waiting/terminated 상태: 상태에 대한 reason 정보 표시 |
mem_maxusage는 컨테이너가 실행되는 동안 기록된 메모리 최대 사용량을 나타냅니다. 그러나 Linux 커널 버전이 5.19보다 낮은 경우, 이 지표의 원본 데이터가 지원되지 않을 수 있습니다. 이러한 경우 해당 값이 0으로 표시될 수 있습니다. 해당 지표를 정상적으로 수집하기 위해서는 Linux 커널 버전을 5.19 이상으로 업데이트해야 합니다.
쿠버네티스 노드(kube_node) 메트릭
kube_node 카테고리는 노드에 설정된 모든 사용자 정의 라벨들을 태그로 수집합니다.
- 대상: 클러스터 프로젝트, 네임스페이스 프로젝트
- 수집 간격: 5초
- 통계 데이터: 5분, 1시간
Tags
| Tag | Type | Unit | Description |
|---|---|---|---|
| nodeName | - | - | 노드 이름 |
다음 태그가 추가되었습니다.
| Tag | Type | Unit | Description |
|---|---|---|---|
infrastructureType | string | - | 노드 인프라 유형 - baremetal, vm, unknown |
Fields
| Field | Type | Unit | Description |
|---|---|---|---|
| allocatable_cpu | - | millicores | 노드 할당 가능한 CPU량 |
| allocatable_memory | - | byte | 노드 할당 가능한 메모리량 |
| allocatable_pods | integer | - | 노드 할당 가능한 Pod 수 |
| limit_cpu | - | millicores | 노드 CPU Limit 합계 |
| limit_memory | - | byte | 노드 메모리 Limit 합계 |
| pods | integer | - | 노드 Pod 총 개수 |
| request_cpu | - | millicores | 노드 CPU Request 합계 |
| request_memory | - | byte | 노드 메모리 Request 합계 |
노드의 GPU 수량은 디바이스 타입별 병렬 리스트 필드로 수집합니다. *_types와 *_counts는 인덱스가 1:1로 대응하며, nvidia.com/gpu(whole-GPU)와 모든 MIG 프로파일(nvidia.com/mig-*)을 개별 항목으로 담습니다.
| Field | Type | Unit | Description |
|---|---|---|---|
| gpu_capacity_types | list | - | 노드 GPU capacity의 디바이스 타입 목록 |
| gpu_capacity_counts | list | count | 위 타입별 capacity 수량(인덱스 1:1 대응) |
| gpu_allocatable_types | list | - | 노드 GPU allocatable의 디바이스 타입 목록 |
| gpu_allocatable_counts | list | count | 위 타입별 allocatable 수량(인덱스 1:1 대응) |
v1.9.14부터 whole-GPU 전용 스칼라 필드 capacity_gpu, allocatable_gpu는 제거되었습니다. MIG 환경에서 스칼라 필드가 nvidia.com/gpu만 담고 MIG 슬라이스를 누락해 집계가 거짓 합계가 되는 문제를 차단하기 위함입니다. whole-GPU 수량도 리스트의 nvidia.com/gpu 항목으로 확인하며, 전체·타입별 집계는 *_counts를 합산합니다.
| 카테고리 | 제거된 스칼라 필드 | 대체 리스트 필드 |
|---|---|---|
kube_node | capacity_gpu, allocatable_gpu | gpu_capacity_types/gpu_capacity_counts, gpu_allocatable_types/gpu_allocatable_counts |
쿠버네티스 노드 성능(kube_node_perf) 메트릭
kube_node_perf 카테고리는 노드에 스케줄링된 모든 Pod/Container의 리소스 사용량과 할당량을 합산하여 노드 단위 성능 지표를 수집합니다.
- 대상: 클러스터 프로젝트, 네임스페이스 프로젝트
- 수집 간격: 5초
- 통계 데이터: 5분, 1시간
Tags
| Tag | Type | Unit | Description |
|---|---|---|---|
| onode | - | - | 노드 해시값 |
| onodeName | - | - | 노드 이름 |
| agentPcode | - | - | 에이전트 프로젝트 코드 |
| agentOid | - | - | 에이전트 고유 ID |
다음 태그가 추가되었습니다.
| Tag | Type | Unit | Description |
|---|---|---|---|
| cgroup_version | - | - | 노드 호스트의 cgroup 마운트 모드 - unified(cgroup v2), hybrid, legacy(cgroup v1), unknown(접근 불가) |
노드 호스트의 /sys/fs/cgroup 마운트 모드를 직접 감지해 태그로 수집합니다. 노드별 cgroup 버전 현황을 서버에서 집계할 수 있습니다.
노드 가상화 판별 태그가 추가되었습니다.
| Tag | Type | Unit | Description |
|---|---|---|---|
virtualization | string | - | 노드 가상화 여부 - baremetal, vm, unknown |
hypervisor | string | - | 하이퍼바이저 벤더명 - 베어메탈이거나 판별할 수 없으면 - |
노드 호스트의 DMI 정보(/sys/class/dmi/id/sys_vendor, product_name)에서 벤더를 먼저 대조하고, 일치하는 벤더가 없으면 /proc/cpuinfo의 hypervisor 플래그로 가상 머신 여부만 판정합니다. DMI 정보가 없는 비 x86 노드는 unknown으로 수집합니다.
QEMU/KVM, VMware, Hyper-V, Xen, VirtualBox, Parallels, Amazon EC2, Google GCE, OpenStack, Nutanix AHV, oVirt/RHV, Alibaba Cloud 등의 벤더를 인식합니다. 값은 노드 기동 중 변하지 않으므로 최초 1회 읽어 캐시합니다.
제약: Amazon EC2 .metal 인스턴스처럼 클라우드 사업자가 제공하는 베어메탈은 DMI 정보만으로 일반 인스턴스와 구분되지 않아 vm으로 판별됩니다.
노드 에이전트 1.9.21 버전 이상에서 수집합니다.
Fields
| Field | Type | Unit | Description |
|---|---|---|---|
| cpuRequest | long | millicores | 노드 내 전체 컨테이너 CPU Request 합계 |
| cpuLimit | long | millicores | 노드 내 전체 컨테이너 CPU Limit 합계 |
| cpuTotal | long | millicores | 노드 내 전체 컨테이너 CPU 사용량 합계 |
| cpuPerRequest | float | percent | 노드 CPU Request 대비 실제 CPU 사용률 |
| cpuPerLimit | float | percent | 노드 CPU Limit 대비 실제 CPU 사용률 |
| memoryRequest | long | byte | 노드 내 전체 컨테이너 Memory Request 합계 |
| memoryLimit | long | byte | 노드 내 전체 컨테이너 Memory Limit 합계 |
| memTotal | long | byte | 노드 내 전체 컨테이너 Memory 사용량 합계 |
| memoryPerRequest | float | percent | 노드 Memory Request 대비 실제 Memory 사용률 |
| memoryPerLimit | float | percent | 노드 Memory Limit 대비 실제 Memory 사용률 |
다음 필드가 추가되었습니다.
| Field | Type | Unit | Description |
|---|---|---|---|
conntrack_count | long | count | 현재 conntrack 엔트리 수 |
conntrack_max | long | count | conntrack 엔트리 상한(nf_conntrack_max) |
conntrack_pct | float | percent | 상한 대비 사용률 |
- 엔트리 수는 호스트 network namespace 기준 값을 읽기 위해
/proc/1/net/stat/nf_conntrack경로에서 수집합니다. nf_conntrack모듈이 로드되지 않은 노드는 필드를 전송하지 않습니다. 값0과 미수집을 구분하기 위한 동작입니다.- 노드 에이전트 1.9.18 버전 이상에서 수집합니다.
collect_conntrack_enabled옵션으로 수집을 끌 수 있습니다.
쿠버네티스 이벤트(kube_event) 메트릭
kube_event 카테고리는 클러스터 프로젝트의 경우 클러스터 전체를 대상으로 데이터를 수집하며 네임스페이스 프로젝트는 해당 네임스페이스에서 발생한 이벤트에 대해서만 수집합니다.
- 대상: 클러스터 프로젝트, 네임스페이스 프로젝트
- 수집 간격: 5초
- 통계 데이터: 5분, 1시간
Tags
| Tag | Type | Unit | Description |
|---|---|---|---|
| field_path | - | - | Field Path |
| kind | - | - | 이벤트가 발생한 오브젝트 종류 |
| name | - | - | 이벤트가 발생한 쿠버네티스 오브젝트명 |
| namespace | - | - | 이벤트가 발생한 네임스페이스명 |
| reason | - | - | 이벤트 발생 사유 |
| type | - | - | 이벤트 유형 - Warning 또는 Normal |
| uid | - | - | UID - 이벤트가 발생한 오브젝트 |
Fields
| Field | Type | Unit | Description |
|---|---|---|---|
| action | string | - | 액션 이름 |
| count | - | count | 이벤트 발생 건수 |
| event_time | integer | - | 이벤트 최초 발생 TimeStamp |
| first_timestamp | integer | - | 이벤트 최초 발생 시간 |
| last_timestamp | integer | - | 이벤트 마지막 발생 시간 |
| message | string | - | 이벤트 메시지 |
| reasonFiled | string | - | 이벤트 Reason |
| reporting_component | string | - | 현재 이벤트를 보고하는 컴포넌트 |
| reporting_instance | string | - | 현재 이벤트를 보고하는 인스턴스 |
| series_last_observed_time | integer | - | series last observed time |
쿠버네티스 클러스터(kube_stat) 메트릭
kube_stat 카테고리는 클러스터 프로젝트의 경우 클러스터 전체 대상으로 수집하고 네임스페이스 프로젝트는 해당 네임스페이스와 연관된 오브젝트를 대상으로만 수집합니다.
- 대상: 클러스터 프로젝트, 네임스페이스 프로젝트
- 수집 간격: 5초
- 통계 데이터: 5분, 1시간
Tags
| Tag | Type | Unit | Description |
|---|---|---|---|
| name | - | - | kube_stat(고정 값) |
다음 태그가 추가되었습니다.
| Tag | Type | Unit | Description |
|---|---|---|---|
| namespace | - | - | 수집 대상 네임스페이스명 |
Fields
| Field | Type | Unit | Description |
|---|---|---|---|
| alloctable_cpu | - | millicores | 클러스터 전체 코어 수(클러스터 프로젝트 Only) |
| alloctable_ephemeral-storage | - | byte | 클러스터 전체 할당 가능한 ephemeral storage(클러스터 프로젝트 Only) |
| alloctable_hugepages-1gi | - | byte | 클러스터 전체 할당 가능한 hugepages-1Gi(클러스터 프로젝트 Only) |
| alloctable_hugepages-2mi | - | byte | 클러스터 전체 할당 가능한 hugepages-2Mi(클러스터 프로젝트 Only) |
| alloctable_memory | - | byte | 클러스터 전체 할당 가능한 메모리(클러스터 프로젝트 Only) |
| alloctable_pods | integer | - | 할당 가능한 Pod 수 |
| available_pod | integer | - | Phase가 Running 상태인 Pod의 수 |
| desired_pod | integer | - | metadata.ownerReferences 없이 배포된 Pod 수와 쿠버네티스 오브젝트(ReplicaSet, Daemonset, StatefulSet)에 정의된 Desired Pod 수의 합 |
kubectl get pods -A로 조회한 Pod 수와 동일 | |||
| nodes | integer | - | 노드 수 |
| pod_phase_Pending | integer | - | Pending 상태 Pod 수 |
| pod_phase_Running | integer | - | Running 상태 Pod 수 |
| running_containers | integer | - | Running 컨테이너 수 |
| stopped_containers | integer | - | Stopped 컨테이너 수 |
| total_available_cpu | integer | - | 할당 가능한 CPU 총합 |
| total_available_memory | integer | - | 할당 가능한 Memory 총합 |
| total_limit_cpu | - | millicores | Limit CPU 총합 |
| total_limit_memory | - | byte | Limit Memory 총합 |
| total_request_cpu | - | millicores | Request CPU 총합 |
| total_request_memory | - | byte | Request Memory 총합 |
| unavailable_pod | integer | - | Phase가 Running 상태가 아닌(Pending, Failed, Succedded) Pod 수 |
| waiting_containers | integer | - | Waiting Container 수 |
네임스페이스에 설정된 ResourceQuota의 상한과 소진량을 수집합니다. 다음 필드가 추가되었습니다.
| Field | Type | Unit | Description |
|---|---|---|---|
quota_count | long | count | 네임스페이스에 설정된 ResourceQuota 개수 |
quota_request_cpu_hard | long | millicores | CPU Request 쿼터 상한 |
quota_request_cpu_used | long | millicores | CPU Request 쿼터 소진량 |
quota_request_memory_hard | long | byte | Memory Request 쿼터 상한 |
quota_request_memory_used | long | byte | Memory Request 쿼터 소진량 |
quota_limit_cpu_hard | long | millicores | CPU Limit 쿼터 상한 |
quota_limit_cpu_used | long | millicores | CPU Limit 쿼터 소진량 |
quota_limit_memory_hard | long | byte | Memory Limit 쿼터 상한 |
quota_limit_memory_used | long | byte | Memory Limit 쿼터 소진량 |
quota_pods_hard | long | count | Pod 수 쿼터 상한 |
quota_pods_used | long | count | Pod 수 쿼터 소진량 |
- 쿠버네티스가 계산한
status.hard와status.used값을 그대로 사용합니다. - 한 네임스페이스에 스코프가 다른 ResourceQuota가 여러 개 있으면 항목별로 합산합니다.
- 쿼터가 설정되지 않은 네임스페이스는
quota_count만0으로 전송하고 나머지 필드는 전송하지 않습니다. 쿼터 미설정과 상한0을 구분하기 위한 동작입니다. - 마스터 에이전트 1.9.17 버전 이상에서 수집합니다.