Solucionar problemas de contenedor

Esta página proporciona información para solucionar problemas con la monitorización de contenedores.

Existen tres métodos para desplegar el Agent:

  1. Como un contenedor en un tiempo de ejecución

  2. En un entorno de nube, como Amazon ECS, Fargate en un entorno de Amazon ECS o Amazon EKS.

  3. En un entorno de Kubernetes

Estos diferentes métodos presentan retos de despliegue únicos. Utiliza esta página como punto de partida para resolver los problemas. Si sigues teniendo complicaciones, ponte en contacto con el soporte de Datadog para obtener más ayuda.

Para obtener más información sobre las actualizaciones o cambios de la versión del Agent, consulta las notas de la versión de Datadog.

Cuestiones generales

Las variables de entorno no están establecidas y las etiquetas (tags) no están inyectadas

Una forma útil de inyectar variables de entorno o de configurar una biblioteca de DogStatsD es implementar la función Controlador de admisión (Admission Controller) en el Cluster Agent. Nota: El Cluster Agent debe ser desplegado y ejecutado antes de que la aplicación sea desplegada.

No aparecen métricas en la Plataforma web de Datadog

Comprueba que lo siguiente es cierto:

  • El endpoint de métricas está expuesto y abierto para que el Agent lo alcance.

  • No hay proxies ni cortafuegos que puedan impedir que el Agent acceda al endpoint.

  • El Agent tiene Autodiscovery activado.

No se recopilan logs

Hay dos variables de entorno que pueden afectar a la recopilación de logs y de qué contenedores:

  • Establece DD_logs_ENABLED en true para recopilar logs.
  • Además, establece DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL en true para recopilar todos los logs de todos los contenedores.

Para excluir logs (y otras funciones) de la recopilación, consulta la Guía de Gestión de detección de contenedores.

No se puede conectar al Kubelet

El error más común que impide la conexión a la API de Kubelet es la verificación del certificado TLS de Kubelet.

La verificación TLS está activada por defecto y puede impedir que el Agent se conecte a la API de Kubelet a través de HTTPS. Puedes desactivar la verificación TLS utilizando parámetros dedicados o configurando la variable DD_KUBELET_TLS_VERIFY para todos los contenedores en el manifiesto del Agent:

  • Configura TLS_VERIFY en false.

Las métricas HPA no aparecen o no coinciden con el valor esperado

En primer lugar, asegúrate de que el Cluster Agent está desplegado y es capaz de enviar datos al Agent de nodo.

A continuación, revisa la consulta utilizada para escalar las métricas externas en el resumen de métricas. Solo las consultas válidas se autoescalan. Si hay varias consultas, todas las consultas se ignoran si alguna de las consultas no es válida.

Cuando necesites más ayuda con las métricas HPA, facilita lo siguiente al soporte de Datadog:

  • Una salida describe del manifiesto HPA:
    $ kubectl describe hpa > hpa.log
    
  • Una salida describe de la definición de recursos personalizados de DatadogMetric:
    $ kubectl describe DatadogMetric > DatadogMetric.log
    

Tiempo de ejecución

Para logs, asegúrate de que el comando de despliegue del Agent tiene habilitados DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL y DD_LOGS_ENABLED.

Nube

Asegúrate de que tu política de IAM está actualizada.

Los logs no se recopilan en Fargate

  • ECS: asegúrate de que el enrutador de log está conectado al contenedor del que deseas recopilar logs.

  • EKS: existen dos formas comunes para que el Agent recopile logs en un entorno de EKS Fargate: reenvío de log con logs de CloudWatch logs, y reenvío de log a través de Amazon Data Firehose. El uso de Amazon Data Firehose para recopilar logs requiere el despliegue correcto del flujo de entrega de Amazon Data Firehose, así como algunas herramientas de línea de comandos.

Kubernetes

No se despliega el contenedor ni se recopilan métricas

En primer lugar, asegúrate de que tu clave de API es válida.

A continuación, en tu pod de nodo del Agent, ejecuta el comando agent status y revisa los resultados.

No recibes métricas kubeapi_server, kube_controller_manager o etcd

En los servicios gestionados como Azure Kubernetes Service (AKS) y Google Kubernetes Engine (GKE), el usuario no puede acceder a los componentes del plano de control. Como resultado, no es posible ejecutar los checks de kube_apiserver, kube_controller_manager, kube_scheduler o etcd en estos entornos.

Solucionar problemas de los datos solicitados por el soporte de Datadog

Después de abrir un tique de soporte, es posible que se te solicite el siguiente tipo de información:

Flare del Agent

Puedes utilizar el comando flare para enviar información para solucionar problemas al soporte de Datadog.

Flare de nodo del Agent

$ kubectl exec <AGENT_POD_NAME> -it agent flare <CASE_ID> 

Flare del Cluster Agent

$ kubectl exec <CLUSTER_AGENT_POD_NAME> -it agent flare <CASE_ID>

Describir la salida del Pod

Esto proporciona al equipo información sobre cómo se desplegó el nodo o el Cluster Agent, cuáles fueron los eventos más recientes en el pod y si se inyectaron y aplicaron algunas cualidades (como etiquetas personalizadas) en métricas de host. La sección > <FILENAME>.yaml del comando crea un archivo de salida que puede enviarse al soporte de Datadog como archivo adjunto:

$ kubectl describe pod <POD_NAME> > <FILENAME>.yaml

Manifiesto/despliegue

Este es el archivo utilizado para desplegar el Agent en tu entorno. Informa a Datadog de las etiquetas configuradas, si los logs fueron habilitados, y si ciertos contenedores están definidos para ser ignorados.

En el caso de desplegar el Agent en un entorno de tiempo de ejecución, envía al Soporte la línea de comandos utilizada para desplegar el Agent.

Los tres métodos de despliegue más comunes son: tabla de Helm, DaemonSet y Operator.

Salida cURL

Si notas que hay métricas ausentes o imprecisas, el soporte de Datadog puede solicitar el resultado de una salida cURL del nodo del Agent que intenta alcanzar el endpoint de métrica. Esto se hace ejecutando el comando desde dentro del contenedor del Agent, y puede informar al soporte si el Agent tiene acceso a las métricas. Nota: Esto no es posible en un servicio de Fargate o en servicios gestionados:

$ kubectl exec -it <AGENT_POD_NAME> curl -k -v ""<METRIC_ENDPOINT>""
$ docker exec -it <AGENT_CONTAINER_ID> curl -k -v "<METRIC_ENDPOINT>"

Leer más

Additional helpful documentation, links, and articles: