View a markdown version of this page

Inicio rápido: Información de contenedores de OTel en Amazon EKS - Amazon CloudWatch

Inicio rápido: Información de contenedores de OTel en Amazon EKS

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

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)

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/.

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

  3. Seleccione la pestaña Observabilidad.

  4. 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.

Activación de Información de contenedores de OTel (AWS CLI)

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

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"] }] }'
  2. 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

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

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

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

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

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

Comprobación de métricas en CloudWatch
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

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

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

Comprobar los registros de

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

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

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

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"
  2. Verifique que el rol de IAM exista y tenga la política CloudWatchAgentServerPolicy adjunta.

  3. 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.

  4. 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

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
  2. 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
  3. Compruebe que los nodos tengan suficiente CPU y memoria disponibles para los pods del agente.

  4. 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

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.

  2. 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"
  3. Verifique que el rol de IAM tenga la política CloudWatchAgentServerPolicy adjunta y que la política de confianza permita pods.eks.amazonaws.com.

  4. 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.