

# Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드
<a name="Container-Insights-reference-performance-entries-EKS"></a>

Amazon EKS 및 Kubernetes의 경우 컨테이너화된 CloudWatch 에이전트가 데이터를 성능 로그 이벤트로 내보냅니다. 이를 통해 CloudWatch는 카디널리티가 높은 데이터를 수집하고 저장할 수 있습니다. CloudWatch는 성능 로그 이벤트의 데이터를 사용하여 세분화된 세부 정보를 잃지 않고도 클러스터, 노드 및 포드 수준에서 집계된 CloudWatch 지표를 생성합니다.

다음 표에는 이러한 성능 로그 이벤트에서 Container Insights 지표 데이터의 수집과 관련된 필드가 나와 있습니다. CloudWatch Logs Insights를 사용해 이러한 필드 중 어떤 것에 대해서든 쿼리를 수행하여 데이터를 수집하거나 문제를 조사할 수 있습니다. 자세한 내용은 [CloudWatch Logs Insights를 사용한 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 단원을 참조하세요.


| Type | 로그 필드 | 소스 | 공식 또는 참고 | 
| --- | --- | --- | --- | 
|  포드 |  `pod_cpu_utilization`  |  계산 완료  |  공식: `pod_cpu_usage_total / node_cpu_limit`  | 
|  포드 |  `pod_cpu_usage_total` `pod_cpu_usage_total`는 밀리코어 단위로 보고됩니다.  |  cadvisor  |   | 
|  포드 |  `pod_cpu_limit`  |  계산 완료  |  공식: `sum(container_cpu_limit)`  `sum(container_cpu_limit)`에는 이미 완료된 포드가 포함되어 있습니다. Pod의 어떤 컨테이너에도 CPU 한도가 정의되어 있지 않은 경우에는 로그 이벤트에 이 필드가 나타나지 않습니다. 여기에는 [ init 컨테이너](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#resources)가 포함되어 있습니다.  | 
|  포드 |  `pod_cpu_request`  |  계산 완료  |  공식: `sum(container_cpu_request)` `container_cpu_request`이 설정되어 있지 않을 수도 있습니다. 설정된 것만 합계에 포함됩니다.  | 
|  포드 |  `pod_cpu_utilization_over_pod_limit`  |  계산 완료  |  공식: `pod_cpu_usage_total / pod_cpu_limit`  | 
|  포드 |  `pod_cpu_reserved_capacity`  |  계산 완료  |  공식: `pod_cpu_request / node_cpu_limit`  | 
|  포드 |  `pod_memory_utilization`  |  계산 완료  |  공식: `pod_memory_working_set / node_memory_limit` 노드 메모리 제한에 대한 포드 메모리 사용량의 백분율입니다.  | 
|  포드 |  `pod_memory_working_set`  |  cadvisor  |   | 
|  포드 |  `pod_memory_limit`  |  계산 완료  |  공식: `sum(container_memory_limit)` Pod의 어떤 컨테이너에도 메모리 한도가 정의되어 있지 않은 경우에는 로그 이벤트에 이 필드가 나타나지 않습니다. 여기에는 [ init 컨테이너](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#resources)가 포함되어 있습니다.  | 
|  포드 |  `pod_memory_request`  |  계산 완료  |  공식: `sum(container_memory_request)` `container_memory_request`이 설정되어 있지 않을 수도 있습니다. 설정된 것만 합계에 포함됩니다.  | 
|  포드 |  `pod_memory_utilization_over_pod_limit`  |  계산 완료  |  공식: `pod_memory_working_set / pod_memory_limit` Pod의 어떤 컨테이너에도 메모리 한도가 정의되어 있지 않은 경우에는 로그 이벤트에 이 필드가 나타나지 않습니다. 여기에는 [ init 컨테이너](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#resources)가 포함되어 있습니다.  | 
|  포드 |  `pod_memory_reserved_capacity`  |  계산 완료  |  공식: `pod_memory_request / node_memory_limit`  | 
|  포드 |  `pod_network_tx_bytes`  |  계산 완료  |  공식: `sum(pod_interface_network_tx_bytes)` 이 데이터는 Pod별로 모든 네트워크 인스턴스에서 사용할 수 있습니다. CloudWatch 에이전트는 합계를 계산하고 지표 추출 규칙을 추가합니다.  | 
|  포드 |  `pod_network_rx_bytes`  |  계산 완료  |  공식: `sum(pod_interface_network_rx_bytes)`  | 
|  포드 |  `pod_network_total_bytes`  |  계산 완료  |  공식: `pod_network_rx_bytes + pod_network_tx_bytes`  | 
|  PodNet |  `pod_interface_network_rx_bytes`  |  cadvisor  | 이 데이터는 Pod 네트워크 인터페이스에 대한 초당 네트워크 rx 바이트입니다.  | 
|  PodNet |  `pod_interface_network_tx_bytes`  |  cadvisor  | 이 데이터는 Pod 네트워크 인터페이스에 대한 초당 네트워크 tx 바이트입니다. | 
|  컨테이너 |  `container_cpu_usage_total`  |  cadvisor  |   | 
|  컨테이너 |  `container_cpu_limit`  |  cadvisor  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  컨테이너 |  `container_cpu_request`  |  cadvisor  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  컨테이너 |  `container_memory_working_set`  |  cadvisor  |   | 
|  컨테이너 |  `container_memory_limit`  |  pod  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  컨테이너 |  `container_memory_request`  |  pod  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  노드 |  `node_cpu_utilization`  |  계산 완료  |  공식: `node_cpu_usage_total / node_cpu_limit`  | 
|  노드 |  `node_cpu_usage_total`  |  cadvisor  |   | 
|  노드 |  `node_cpu_limit`  |  /proc  |   | 
|  노드 |  `node_cpu_request`  |  계산 완료  | 공식: `sum(pod_cpu_request)` cronjobs의 경우 `node_cpu_request`에는 완성된 포드의 요청이 포함되어 있습니다. 이로 인해 `node_cpu_reserved_capacity`의 값이 높아질 수 있습니다.  | 
|  노드 |  `node_cpu_reserved_capacity`  |  계산 완료  | 공식: `node_cpu_request / node_cpu_limit`  | 
|  노드 |  `node_memory_utilization`  |  계산 완료  | 공식: `node_memory_working_set / node_memory_limit`  | 
|  노드 |  `node_memory_working_set`  |  cadvisor  |   | 
|  노드 |  `node_memory_limit`  |  /proc  |   | 
|  노드 |  `node_memory_request`  |  계산 완료  |  공식: `sum(pod_memory_request)`  | 
|  노드 |  `node_memory_reserved_capacity`  |  계산 완료  | 공식: `node_memory_request / node_memory_limit`  | 
|  노드 |  `node_network_rx_bytes`  |  계산 완료  | 공식: `sum(node_interface_network_rx_bytes)`  | 
|  노드 |  `node_network_tx_bytes`  |  계산 완료  | 공식: `sum(node_interface_network_tx_bytes)`  | 
|  노드 |  `node_network_total_bytes`  |  계산 완료  | 공식: `node_network_rx_bytes + node_network_tx_bytes`  | 
|  노드 |  `node_number_of_running_pods`  |  Pod 목록  |   | 
|  노드 |  `node_number_of_running_containers`  |  Pod 목록  |   | 
|  NodeNet |  `node_interface_network_rx_bytes`  |  cadvisor  |  이 데이터는 작업자 노드 네트워크 인터페이스에 대한 초당 네트워크 rx 바이트입니다.  | 
|  NodeNet |  `node_interface_network_tx_bytes`  |  cadvisor  |  이 데이터는 작업자 노드 네트워크 인터페이스에 대한 초당 네트워크 tx 바이트입니다.  | 
|  NodeFS |  `node_filesystem_capacity`  |  cadvisor  |   | 
|  NodeFS |  `node_filesystem_usage`  |  cadvisor  |   | 
|  NodeFS |  `node_filesystem_utilization`  |  계산 완료  |  공식: `node_filesystem_usage / node_filesystem_capacity` 이 데이터는 디스크 이름별로 사용할 수 있습니다.  | 
|  클러스터 |  `cluster_failed_node_count`  |  API 서버  |   | 
|  클러스터 |  `cluster_node_count`  |  API 서버  |   | 
|  서비스 |  `service_number_of_running_pods`  |  API 서버  |   | 
|  `Namespace` |  `namespace_number_of_running_pods`  |  API 서버  |   | 

## 지표 계산 예
<a name="Container-Insights-calculation-examples"></a>

이 섹션에는 앞의 표에서 몇몇 값들이 어떻게 계산되었는지를 보여주는 예제가 포함되어 있습니다.

클러스터가 다음 상태에 있다고 가정해 보겠습니다.

```
Node1
   node_cpu_limit = 4
   node_cpu_usage_total = 3
   
   Pod1
     pod_cpu_usage_total = 2
     
     Container1
        container_cpu_limit = 1
        container_cpu_request = 1
        container_cpu_usage_total = 0.8
        
     Container2
        container_cpu_limit = null
        container_cpu_request = null
        container_cpu_usage_total = 1.2
        
   Pod2
     pod_cpu_usage_total = 0.4
     
     Container3
        container_cpu_limit = 1
        container_cpu_request = 0.5
        container_cpu_usage_total = 0.4
        
Node2
   node_cpu_limit = 8
   node_cpu_usage_total = 1.5
   
   Pod3
     pod_cpu_usage_total = 1
     
     Container4
        container_cpu_limit = 2
        container_cpu_request = 2
        container_cpu_usage_total = 1
```

다음 표에는 이 데이터를 사용하여 Pod CPU 지표를 계산하는 방법이 나와 있습니다.


| 지표 | 공식 | Pod1 | Pod2 | Pod3 | 
| --- | --- | --- | --- | --- | 
|  `pod_cpu_utilization` |  `pod_cpu_usage_total / node_cpu_limit`  |  2 / 4 = 50%  |  0.4 / 4 = 10%  |  1 / 8 = 12.5%  | 
|  `pod_cpu_utilization_over_pod_limit` |  `pod_cpu_usage_total / sum(container_cpu_limit)`  |  `Container2`에 대한 CPU 한도가 정의되어 있지 않기 때문에 해당 사항 없음  |  0.4 / 1 = 40%  |  1 / 2 = 50%  | 
|  `pod_cpu_reserved_capacity` |  `sum(container_cpu_request) / node_cpu_limit`  |  (1 \$1 0) / 4 = 25%  |  0.5 / 4 = 12.5%  |  2 / 8 = 25%  | 

다음 표에는 이 데이터를 사용하여 노드 CPU 지표를 계산하는 방법이 나와 있습니다.


| 지표 | 공식 | 노드 1 | 노드 2 | 
| --- | --- | --- | --- | 
|  `node_cpu_utilization` |  `node_cpu_usage_total / node_cpu_limit`  |  3 / 4 = 75%  |  1.5 / 8 = 18.75%  | 
|  `node_cpu_reserved_capacity` |  `sum(pod_cpu_request) / node_cpu_limit`  |  1.5 / 4 = 37.5%  |  2 / 8 = 25%  | 