Campos relevantes en eventos de registro de rendimiento para Amazon EKS y Kubernetes - Amazon CloudWatch

Campos relevantes en eventos de registro de rendimiento para Amazon EKS y Kubernetes

En Amazon EKS y Kubernetes, el agente de CloudWatch en contenedores emite los datos como eventos de registro de rendimiento. Esto permite a CloudWatch capturar y almacenar datos de alta cardinalidad. CloudWatch utiliza los datos en los eventos de registro de rendimiento para crear métricas de CloudWatch agregadas en el nivel de clúster, de nodo y de pod sin necesidad de perder detalles pormenorizados.

En la siguiente tabla, se muestran los campos de estos eventos de registro de rendimiento que son relevantes para la recopilación de datos de las métricas de Información de contenedores. Puede utilizar Información de registros de CloudWatch para consultar cualquiera de estos campos con el fin de recopilar datos o investigar problemas. Para obtener más información, consulte Analyze Log Data With CloudWatch Logs Insights.

Tipo Campo de registro Origen Fórmula o notas

Pod

pod_cpu_utilization

Calculado

Fórmula: pod_cpu_usage_total / node_cpu_limit

Pod

pod_cpu_usage_total

pod_cpu_usage_total se mide en milinúcleos.

cadvisor

Pod

pod_cpu_limit

Calculado

Fórmula: sum(container_cpu_limit)

sum(container_cpu_limit) incluye los pods ya completados.

Si no se ha definido un límite de CPU para alguno de los contenedores del pod, este campo no aparece en el evento de registro. Esto incluye los contenedores init.

Pod

pod_cpu_request

Calculado

Fórmula: sum(container_cpu_request)

No se garantiza que container_cpu_request se vaya a establecer. En la suma solo se incluyen las que se establezcan.

Pod

pod_cpu_utilization_over_pod_limit

Calculado

Fórmula: pod_cpu_usage_total / pod_cpu_limit

Pod

pod_cpu_reserved_capacity

Calculado

Fórmula: pod_cpu_request / node_cpu_limit

Pod

pod_memory_utilization

Calculado

Fórmula: pod_memory_working_set / node_memory_limit

Es el porcentaje de uso de memoria de pod sobre la limitación de memoria de nodo.

Pod

pod_memory_working_set

cadvisor

Pod

pod_memory_limit

Calculado

Fórmula: sum(container_memory_limit)

Si algún contenedor del pod no tiene definido un límite de memoria, este campo no aparece en el evento de registro. Esto incluye los contenedores init.

Pod

pod_memory_request

Calculado

Fórmula: sum(container_memory_request)

No se garantiza que container_memory_request se vaya a establecer. En la suma solo se incluyen las que se establezcan.

Pod

pod_memory_utilization_over_pod_limit

Calculado

Fórmula: pod_memory_working_set / pod_memory_limit

Si algún contenedor del pod no tiene definido un límite de memoria, este campo no aparece en el evento de registro. Esto incluye los contenedores init.

Pod

pod_memory_reserved_capacity

Calculado

Fórmula: pod_memory_request / node_memory_limit

Pod

pod_network_tx_bytes

Calculado

Fórmula: sum(pod_interface_network_tx_bytes)

Estos datos están disponibles para todas las interfaces de red de cada pod. El agente de CloudWatch calcula el total y agrega las reglas de extracción de las métricas.

Pod

pod_network_rx_bytes

Calculado

Fórmula: sum(pod_interface_network_rx_bytes)

Pod

pod_network_total_bytes

Calculado

Fórmula: pod_network_rx_bytes + pod_network_tx_bytes

PodNet

pod_interface_network_rx_bytes

cadvisor

Este dato son los bytes rx de red por segundo de la interfaz de red de un pod.

PodNet

pod_interface_network_tx_bytes

cadvisor

Este dato son los bytes tx de red por segundo de la interfaz de red de un pod.

Contenedor

container_cpu_usage_total

cadvisor

Contenedor

container_cpu_limit

cadvisor

No garantiza que se vaya a establecer. Si no se establece, no se emite.

Contenedor

container_cpu_request

cadvisor

No garantiza que se vaya a establecer. Si no se establece, no se emite.

Contenedor

container_memory_working_set

cadvisor

Contenedor

container_memory_limit

pod

No garantiza que se vaya a establecer. Si no se establece, no se emite.

Contenedor

container_memory_request

pod

No garantiza que se vaya a establecer. Si no se establece, no se emite.

Nodo

node_cpu_utilization

Calculado

Fórmula: node_cpu_usage_total / node_cpu_limit

Nodo

node_cpu_usage_total

cadvisor

Nodo

node_cpu_limit

/proc

Nodo

node_cpu_request

Calculado

Fórmula: sum(pod_cpu_request)

En el caso de los cronjobs, node_cpu_request también incluye las solicitudes de módulos completados. Esto puede generar un alto valor para node_cpu_reserved_capacity.

Nodo

node_cpu_reserved_capacity

Calculado

Fórmula: node_cpu_request / node_cpu_limit

Nodo

node_memory_utilization

Calculado

Fórmula: node_memory_working_set / node_memory_limit

Nodo

node_memory_working_set

cadvisor

Nodo

node_memory_limit

/proc

Nodo

node_memory_request

Calculado

Fórmula: sum(pod_memory_request)

Nodo

node_memory_reserved_capacity

Calculado

Fórmula: node_memory_request / node_memory_limit

Nodo

node_network_rx_bytes

Calculado

Fórmula: sum(node_interface_network_rx_bytes)

Nodo

node_network_tx_bytes

Calculado

Fórmula: sum(node_interface_network_tx_bytes)

Nodo

node_network_total_bytes

Calculado

Fórmula: node_network_rx_bytes + node_network_tx_bytes

Nodo

node_number_of_running_pods

Lista de pods

Nodo

node_number_of_running_containers

Lista de pods

NodeNet

node_interface_network_rx_bytes

cadvisor

Este dato son los bytes rx de red por segundo de la interfaz de red de un nodo de trabajo.

NodeNet

node_interface_network_tx_bytes

cadvisor

Este dato son los bytes tx de red por segundo de la interfaz de red de un nodo de trabajo.

NodeFS

node_filesystem_capacity

cadvisor

NodeFS

node_filesystem_usage

cadvisor

NodeFS

node_filesystem_utilization

Calculado

Fórmula: node_filesystem_usage / node_filesystem_capacity

Estos datos están disponibles para cada nombre de dispositivo.

Clúster

cluster_failed_node_count

Servidor de API

Clúster

cluster_node_count

Servidor de API

Servicio

service_number_of_running_pods

Servidor de API

Namespace

namespace_number_of_running_pods

Servidor de API

Ejemplos de cálculo de métricas

En esta sección, se incluyen ejemplos que muestran cómo se calculan algunos de los valores de la tabla anterior.

Suponga que tiene un clúster en el estado siguiente.

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

En la tabla siguiente, se muestra cómo se calculan las métricas de CPU de los pods utilizando estos datos.

Métrica Fórmula 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)

N/A, porque no se ha definido el límite de CPU para Container2.

0,4 / 1 = 40 %

1 / 2 = 50 %

pod_cpu_reserved_capacity

sum(container_cpu_request) / node_cpu_limit

(1 + 0) / 4 = 25 %

0,5 / 4 = 12,5 %

2 / 8 = 25 %

En la tabla siguiente, se muestra cómo se calculan las métricas de CPU de los nodos utilizando estos datos.

Métrica Fórmula Node1 Node2

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 %