

# Inicio rápido: Información de contenedores de OTel en Amazon EKS
<a name="container-insights-eks-otel-quickstart"></a>

En esta guía, se explica cómo habilitar Información de contenedores de OTel en un clúster de Amazon EKS existente. Al final de este procedimiento, el clúster envía las métricas de infraestructura y los registros de contenedores a Amazon CloudWatch con la observabilidad mejorada habilitada.

Puede activar Información de contenedores de OTel de dos maneras: utilizando la AWS Management Console (la forma más rápida) o utilizando la AWS CLI. Ambos enfoques instalan el mismo complemento `amazon-cloudwatch-observability` de EKS con la configuración de Información de contenedores de OTel. No necesita la implementación manual de los agentes, los gráficos de Helm ni las canalizaciones personalizadas del recopilador. Todo el proceso tarda menos de 5 minutos.

## Requisitos previos
<a name="container-insights-eks-otel-quickstart-prereqs"></a>

Antes de activar Información de contenedores de OTel, asegúrese de satisfacer los siguientes requisitos.
+ Un clúster de Amazon EKS existente que ejecuta la versión 1.28 de Kubernetes o una posterior
+ Versión de la plataformas `eks.1` o posteriores
+ Version 6.2.0 o posteriores del complemento `amazon-cloudwatch-observability`
+ Versión 2.15.0 o posteriores de AWS CLI (para la configuración basada en la CLI)
+ `kubectl` configurado para comunicarse con el clúster de destino
+ Permisos de IAM: `eks:CreateAddon`, `eks:DescribeAddon` y `iam:CreateServiceLinkedRole`
+ El complemento del agente de Pod Identity de EKS está instalado en el clúster o se han configurado roles de IAM para las cuentas de servicio (IRSA)
+ Acceso de salida a Internet desde el clúster a los puntos de conexión de CloudWatch

## Activación de Información de contenedores de OTel (consola)
<a name="container-insights-eks-otel-quickstart-console"></a>

La AWS Management Console proporciona la ruta más rápida para activar Información de contenedores de OTel.

**Activación de Información de contenedores de OTel mediante la consola**

1. Abra la consola de Amazon EKS en [https://console.aws.amazon.com/eks/](https://console.aws.amazon.com/eks/).

1. Elija **Clústeres** y, a continuación, seleccione el nombre del clúster.

1. Seleccione la pestaña **Observabilidad**.

1. Seleccione **Habilitar Información sobre contenedores** y siga las instrucciones que aparecen en pantalla.

Para ver un tutorial detallado para la consola, consulte [Activación de Información de contenedores de OTel desde la consola](container-insights-eks-otel-console.md).

## Activación de Información de contenedores de OTel (AWS CLI)
<a name="container-insights-eks-otel-quickstart-cli"></a>

Siga los pasos que se indican a continuación para activar Información de contenedores de OTel mediante la AWS CLI.

### Paso 1: Crear el rol de IAM
<a name="container-insights-eks-otel-quickstart-cli-step1"></a>

Cree un rol de IAM que permita que el complemento de observabilidad de CloudWatch envíe datos a CloudWatch.

**Creación del rol de IAM del complemento de observabilidad de CloudWatch**

1. Ejecute el siguiente comando para crear el rol con una política de confianza para Pod Identity de EKS.

   ```
   aws iam create-role \
     --role-name EKS-CloudWatch-Observability-Role \
     --assume-role-policy-document '{
       "Version": "2012-10-17",
       "Statement": [{
         "Effect": "Allow",
         "Principal": { "Service": "pods.eks.amazonaws.com" },
         "Action": ["sts:AssumeRole", "sts:TagSession"]
       }]
     }'
   ```

1. Asocie la política administrada por `CloudWatchAgentServerPolicy` al rol.

   ```
   aws iam attach-role-policy \
     --role-name EKS-CloudWatch-Observability-Role \
     --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
   ```

### Paso 2: creación de la asociación de Pod Identity
<a name="container-insights-eks-otel-quickstart-cli-step2"></a>

Asocie el rol de IAM a la cuenta de servicio del agente de CloudWatch en el clúster.

**Creación de la asociación de Pod Identity**
+ Ejecute el siguiente comando. Sustituya {{cluster-name}} por el nombre del clúster de Amazon EKS y {{account-id}} por el ID de cuenta de AWS.

  ```
  aws eks create-pod-identity-association \
    --cluster-name {{cluster-name}} \
    --namespace amazon-cloudwatch \
    --service-account cloudwatch-agent \
    --role-arn arn:aws:iam::{{account-id}}:role/EKS-CloudWatch-Observability-Role
  ```

### Paso 3: instalación del complemento de observabilidad de Amazon CloudWatch
<a name="container-insights-eks-otel-quickstart-cli-step3"></a>

Instale el complemento `amazon-cloudwatch-observability` con Información de contenedores de OTel activado.

**Instalación del complemento**
+ Ejecute el siguiente comando. Reemplace {{cluster-name}} por el nombre del clúster de Amazon EKS.

  ```
  aws eks create-addon \
    --cluster-name {{cluster-name}} \
    --addon-name amazon-cloudwatch-observability \
    --configuration-values '{"otelContainerInsights":{"enabled":true}}'
  ```
**importante**  
La configuración `otelContainerInsights.enabled` es obligatoria. Información de contenedores de OTel no está activado de forma predeterminada.

### Paso 4: verificación del estado del complemento
<a name="container-insights-eks-otel-quickstart-cli-step4"></a>

Confirme que el complemento se instaló correctamente.

**Verificación del estado del complemento**
+ Ejecute el siguiente comando. Reemplace {{cluster-name}} por el nombre del clúster de Amazon EKS.

  ```
  aws eks describe-addon \
    --cluster-name {{cluster-name}} \
    --addon-name amazon-cloudwatch-observability \
    --query "addon.status" \
    --output text
  ```

  El resultado esperado es `ACTIVE`.

### Paso 5: confirmación de que los pods de agente se estén ejecutando
<a name="container-insights-eks-otel-quickstart-cli-step5"></a>

Compruebe que los pods del agente de CloudWatch se estén ejecutando en el espacio de nombres `amazon-cloudwatch`.

**Confirmación de que los pods de agente se estén ejecutando**
+ Ejecute el siguiente comando.

  ```
  kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent
  ```

  Todos los pods de agentes deben mostrar el estado `Running`.

## Verificación de datos en CloudWatch
<a name="container-insights-eks-otel-quickstart-verify"></a>

Tras completar la configuración, los datos de Información de contenedores aparecen en CloudWatch en un plazo de 3 a 5 minutos.

### Comprobación de métricas
<a name="container-insights-eks-otel-quickstart-verify-metrics"></a>

**Comprobación de métricas en CloudWatch**

1. Abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación, elija **Query Studio**.

1. Busque métricas como, por ejemplo, `container_cpu_usage_seconds_total` mediante PromQL.

### Comprobar los registros de
<a name="container-insights-eks-otel-quickstart-verify-logs"></a>

Para comprobar que los grupos de registro existan en el clúster, ejecute el siguiente comando. Reemplace {{cluster-name}} por el nombre del clúster de Amazon EKS.

```
aws logs describe-log-groups \
  --log-group-name-prefix "/aws/containerinsights/{{cluster-name}}" \
  --query "logGroups[].logGroupName" \
  --output table
```

### Tiempo esperado de obtención de datos
<a name="container-insights-eks-otel-quickstart-verify-latency"></a>

En la siguiente tabla se muestra la latencia esperada para cada tipo de señal después de activar Información de contenedores de OTel.


| Señales | Latencia esperada | 
| --- | --- | 
| Métricas de infraestructura | De 2 minutos a 3 minutos | 
| Registros de contenedor | De 2 minutos a 3 minutos | 
| Eventos de registro de rendimiento | Entre 3 y 5 minutos | 

## Solución de problemas
<a name="container-insights-eks-otel-quickstart-troubleshoot"></a>

Utilice la siguiente guía para resolver problemas comunes al activar Información de contenedores de OTel en Amazon EKS.

### El estado del complemento es CREATE\_FAILED o DEGRADED
<a name="container-insights-eks-otel-quickstart-ts-create-failed"></a>

**Síntoma:** cuando ejecuta `aws eks describe-addon`, el estado es `CREATE_FAILED` o `DEGRADED`.

**Causa:** se produjo un error en la instalación del complemento, normalmente porque los permisos de IAM no son suficientes o porque falta una asociación de Pod Identity.

**Solución:** siga estos pasos para resolver este problema.

1. Ejecute el siguiente comando para comprobar la información de error detallada. Sustituya {{cluster-name}} por el nombre de su clúster.

   ```
   aws eks describe-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --query "addon.health"
   ```

1. Verifique que el rol de IAM exista y tenga la política `CloudWatchAgentServerPolicy` adjunta.

1. Compruebe que la asociación de Pod Identity se dirija al espacio de nombres (`amazon-cloudwatch`) y a la cuenta de servicio (`cloudwatch-agent`) correctos.

1. Elimine el complemento con error y vuelva a instalarlo tras resolver el problema.

   ```
   aws eks delete-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability
   ```

### Los pods del agente tienen el estado CrashLoopBackOff o Pending
<a name="container-insights-eks-otel-quickstart-ts-crashloop"></a>

**Síntoma:** cuando ejecuta `kubectl get pods -n amazon-cloudwatch`, uno o más pods tienen el estado `CrashLoopBackOff` o `Pending`.

**Causa:** los pods del agente no se pueden iniciar debido a la falta de recursos de los nodos, a la falta de permisos o a problemas de conectividad de red.

**Solución:** siga estos pasos para resolver este problema.

1. Compruebe los mensajes de error detallados en los eventos del pod.

   ```
   kubectl describe pod -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent
   ```

1. Compruebe si hay errores de inicio en los registros del contenedor del agente.

   ```
   kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50
   ```

1. Compruebe que los nodos tengan suficiente CPU y memoria disponibles para los pods del agente.

1. Compruebe que el complemento del agente de Pod Identity de EKS esté instalado y en ejecución.

   ```
   kubectl get pods -n kube-system -l app.kubernetes.io/name=eks-pod-identity-agent
   ```

### Las métricas no aparecen en CloudWatch después de 5 minutos
<a name="container-insights-eks-otel-quickstart-ts-no-metrics"></a>

**Síntoma:** los pods del agente tienen el estado `Running`, pero no aparece ninguna métrica en CloudWatch transcurridos 5 minutos.

**Causa:** el agente no puede enviar datos a CloudWatch, normalmente debido a restricciones de red o permisos de IAM incorrectos.

**Solución:** siga estos pasos para resolver este problema.

1. Compruebe que los pods de agentes puedan llegar a los puntos de conexión de CloudWatch. Compruebe que los grupos de seguridad de VPC y las listas de control de acceso de la red permitan el tráfico HTTPS saliente (puerto 443) hacia los puntos de conexión de CloudWatch.

1. Compruebe los registros del agente para ver si hay errores de permisos o tiempos de espera de conexión.

   ```
   kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "error\|timeout\|denied"
   ```

1. Verifique que el rol de IAM tenga la política `CloudWatchAgentServerPolicy` adjunta y que la política de confianza permita `pods.eks.amazonaws.com`.

1. Si utiliza un punto de conexión de VPC para CloudWatch, confirme que la política de punto de conexión permita las acciones necesarias.