En esta página se describe la integración de EKS Fargate. Para ECS Fargate, consulta la documentación sobre la integración de ECS Fargate de Datadog.
Amazon EKS en AWS Fargate es un servicio gestionado de Kubernetes que automatiza ciertos aspectos del despliegue y mantenimiento de cualquier entorno estándar de Kubernetes. AWS Fargate gestiona los nodos de Kubernetes y los abstrae del usuario.
Nota: Cloud Network Monitoring (CNM) no es compatible con EKS Fargate.
Los pods de AWS Fargate no son pods físicos, lo que significa que excluyen los checks de los sistemas basados en hosts, como CPU, memoria, etc. Para recopilar los datos de los pods de AWS Fargate, debes ejecutar el Agent como sidecar de un pod de aplicación con control de acceso basado en roles (RBAC) personalizado. Esto habilita las siguientes características:
Recopilación de las métricas de Kubernetes del pod que ejecuta los contenedores de aplicaciones y el Agent
Para obtener las mejores cargas de trabajo de monitorización de la cobertura de observabilidad en AWS EKS Fargate, instala las integraciones de Datadog para los siguientes servicios:
Para ver los contenedores de EKS Fargate en la Datadog Live Container View, habilita shareProcessNamespace en las especiaciones del pod. Consulta Recopilación de procesos.
Puedes ejecutar el Agent como sidecar mediante el Datadog Admission Controller (requiere el Cluster Agent v7.52+) o con una configuración de sidecar manual. Con el Admission Controller, puedes inyectar un sidecar del Agent en cada pod que tenga la etiqueta (label) agent.datadoghq.com/sidecar:fargate.
Con la configuración manual, debes modificar cada manifiesto de carga de trabajo al añadir o cambiar el sidecar del Agent. Datadog recomienda utilizar el Admission Controller.
Configura el RBAC en el espacio de nombres de aplicación. Consulta la sección RBAC de AWS EKS Fargate de esta página.
Vincula el RBAC anterior al pod de aplicación al configurar el nombre de cuenta de servicio.
Crea un secreto de Kubernetes que contenga tu clave de la API de Datadog y el token del Cluster Agent en los espacios de nombres de instalación y aplicación de Datadog:
Una vez que el Cluster Agent alcanza un estado de ejecución y registra los webhooks mutados del Admission Controller, se inyecta automáticamente un sidecar del Agent en cualquier pod creado con la etiqueta agent.datadoghq.com/sidecar:fargate.
El Admission Controller no muta los pods ya creados.
Resultado de ejemplo
A continuación se muestra un fragmento de spec.containers de un despliegue de Redis en el que el Admission Controller inyecta un sidecar del Agent. El sidecar se configura automáticamente con los valores predeterminados internos e incluye parámetros adicionales para ejecutarse en un entorno de EKS Fargate. El sidecar utiliza el repositorio de imágenes y las etiquetas (tags) configurados en datadog-agent.yaml. La comunicación entre el Cluster Agent y los sidecars se encuentra habilitada de manera predeterminada.
Para ampliar la configuración del Agent o de sus recursos de contenedores, utiliza las propiedades de tu recurso DatadogAgent. Utiliza la propiedad spec.features.admissionController.agentSidecarInjection.profiles para añadir definiciones de variables de entorno y parámetros de recursos. Utiliza la propiedad spec.features.admissionController.agentSidecarInjection.selectors para configurar un selector personalizado y establecer los pods de una carga de trabajo como destino en lugar de actualizar la carga de trabajo para añadir las etiquetas agent.datadoghq.com/sidecar:fargate.
Crea un recurso personalizado DatadogAgent en el archivo datadog-values.yaml que configure un perfil de sidecar y un selector de pods personalizado.
Ejemplo
En el siguiente ejemplo, un selector tiene todos los pods establecidos como destino con la etiqueta "app": redis. El perfil de sidecar configura una variable de entorno DD_PROCESS_AGENT_PROCESS_COLLECTION_ENABLED y parámetros de recursos.
Una vez que el Cluster Agent alcanza un estado de ejecución y registra los webhooks mutados del Admission Controller, se inyecta automáticamente un sidecar del Agent en cualquier pod creado con la etiqueta app:redis.
El Admission Controller no muta los pods ya creados.
Resultado de ejemplo
A continuación se muestra un fragmento de spec.containers de un despliegue de Redis en el que el Admission Controller inyecta un sidecar del Agent. Las variables de entorno y los parámetros de recursos de datadog-agent.yaml se aplican automáticamente.
Configura el RBAC en el espacio de nombres de aplicación. Consulta la sección RBAC de AWS EKS Fargate de esta página.
Vincula el RBAC anterior al pod de aplicación al configurar el nombre de cuenta de servicio.
Crea un secreto de Kubernetes que contenga tu clave de la API de Datadog y el token del Cluster Agent en los espacios de nombres de instalación y aplicación de Datadog:
Nota: Utiliza agents.enabled=false para un clúster exclusivo de Fargate. En el caso de un clúster mixto, define agents.enabled=true para crear un DaemonSet destinado a la monitorización de cargas de trabajo en instancias de EC2.
Una vez que el Cluster Agent alcanza un estado de ejecución y registra los webhooks mutados del Admission Controller, se inyecta automáticamente un sidecar del Agent en cualquier pod creado con la etiqueta agent.datadoghq.com/sidecar:fargate.
El Admission Controller no muta los pods ya creados.
Resultado de ejemplo
A continuación se muestra un fragmento de spec.containers de un despliegue de Redis en el que el Admission Controller inyecta un sidecar del Agent. El sidecar se configura automáticamente con los valores predeterminados internos e incluye parámetros adicionales para ejecutarse en un entorno de EKS Fargate. El sidecar utiliza el repositorio de imágenes y las etiquetas configurados en los valores de Helm. La comunicación entre el Cluster Agent y los sidecars se encuentra habilitada de manera predeterminada.
Para ampliar la configuración del Agent o de sus recursos de contenedores, utiliza la propiedad de Helm clusterAgent.admissionController.agentSidecarInjection.profiles para añadir definiciones de variables de entorno y parámetros de recursos. Utiliza la propiedad clusterAgent.admissionController.agentSidecarInjection.selectors para configurar un selector personalizado y establecer los pods de una carga de trabajo como destino en lugar de actualizar la carga de trabajo para añadir las etiquetas agent.datadoghq.com/sidecar:fargate.
Crea un archivo datadog-values.yaml de Helm que configure un perfil de sidecar y un selector de pods personalizado.
Ejemplo
En el siguiente ejemplo, un selector tiene todos los pods establecidos como destino con la etiqueta "app": redis. El perfil de sidecar configura una variable de entorno DD_PROCESS_AGENT_PROCESS_COLLECTION_ENABLED y parámetros de recursos.
Nota: Utiliza agents.enabled=false para un clúster exclusivo de Fargate. En el caso de un clúster mixto, define agents.enabled=true para crear un DaemonSet destinado a la monitorización de cargas de trabajo en instancias de EC2.
Una vez que el Cluster Agent alcanza un estado de ejecución y registra los webhooks mutados del Admission Controller, se inyecta automáticamente un sidecar del Agent en cualquier pod creado con la etiqueta app:redis.
El Admission Controller no muta los pods ya creados.
Resultado de ejemplo
A continuación se muestra un fragmento de spec.containers de un despliegue de Redis en el que el Admission Controller inyecta un sidecar del Agent. Las variables de entorno y los parámetros de recursos de datadog-values.yaml se aplican automáticamente.
Para empezar a recopilar datos de tu pod de tipo Fargate, despliega el Datadog Agent v7.17+ como sidecar de tu aplicación. Esta es la configuración mínima necesaria para recopilar métricas de la aplicación que se ejecuta en el pod. Observa la adición de DD_EKS_FARGATE=true en el manifiesto para desplegar el sidecar del Datadog Agent.
apiVersion:apps/v1kind:Deploymentmetadata:name:"<APPLICATION_NAME>"namespace:defaultspec:selector:matchLabels:app:"<APPLICATION_NAME>"replicas:1template:metadata:labels:app:"<APPLICATION_NAME>"name:"<POD_NAME>"spec:serviceAccountName:datadog-agentcontainers:- name:"<APPLICATION_NAME>"image:"<APPLICATION_IMAGE>"## Ejecución del Agent como sidecar- image:datadog/agentname:datadog-agentenv:- name:DD_API_KEYvalue:"<YOUR_DATADOG_API_KEY>"## Define DD_SITE como "datadoghq.eu" para enviar los## datos del Agent al sitio de Datadog de la UE- name:DD_SITEvalue:"datadoghq.com"- name:DD_EKS_FARGATEvalue:"true"- name:DD_CLUSTER_NAMEvalue:"<CLUSTER_NAME>"- name:DD_KUBERNETES_KUBELET_NODENAMEvalueFrom:fieldRef:apiVersion:v1fieldPath:spec.nodeNameresources:requests:memory:"256Mi"cpu:"200m"limits:memory:"256Mi"cpu:"200m"
Nota: Añade el kube_cluster_name:<CLUSTER_NAME> que quieras a la lista de DD_TAGS para asegurarte de que tus métricas se etiqueten según el clúster deseado. Puedes añadir etiquetas adicionales aquí como etiquetas <KEY>:<VALUE> separadas por espacios. Para los Agents 7.34+ y 6.34+, esto no es necesario. En su lugar, establece la variable de entorno DD_CLUSTER_NAME.
Ejecución del Cluster Agent o el Cluster Checks Runner
Cuando se utiliza EKS Fargate, hay dos escenarios posibles dependiendo de si el clúster de EKS ejecuta o no cargas de trabajo mixtas (de Fargate y que no son de Fargate).
Si el clúster de EKS ejecuta cargas de trabajo de Fargate y que no son de Fargate, y quieres monitorizar la carga de trabajo que no es de Fargate a través de Node Agent DaemonSet, añade el Cluster Agent o el Cluster Checks Runner a este despliegue. Para obtener más información, consulta la Configuración del Cluster Agent.
El token del Cluster Agent debe ser accesible desde las tareas de Fargate que quieres monitorizar. Si utilizas el Helm Chart o el Datadog Operator, dicho token no es accesible de manera predeterminada porque se crea un secreto en el espacio de nombres de destino.
Tienes dos opciones para que esto funcione correctamente:
Utilizar un valor de token codificado (clusterAgent.token en Helm, credentials.token en el Datadog Operator). Esto es práctico, pero menos seguro.
Utilizar un secreto creado manualmente (clusterAgent.tokenExistingSecret en Helm, no disponible en el Datadog Operator) y replicarlo en todos los espacios de nombres donde las tareas de Fargate necesiten monitorización. Esto es seguro, pero requiere operaciones adicionales.
Nota: El valor de token debe tener un mínimo de 32 caracteres.
Si el clúster de EKS solo ejecuta cargas de trabajo de Fargate, necesitas un despliegue independiente del Cluster Agent. Además, debes elegir una de las dos opciones para hacer que el token sea accesible, como se describió arriba.
En ambos casos, es necesario modificar el manifiesto del sidecar del Datadog Agent para permitir la comunicación con el Cluster Agent:
env:- name:DD_CLUSTER_AGENT_ENABLEDvalue:"true"- name:DD_CLUSTER_AGENT_AUTH_TOKENvalue: <hardcoded token value> # Utiliza valueFrom:si usas un secreto- name:DD_CLUSTER_AGENT_URLvalue:https://<CLUSTER_AGENT_SERVICE_NAME>.<CLUSTER_AGENT_SERVICE_NAMESPACE>.svc.cluster.local:5005- name:DD_ORCHESTRATOR_EXPLORER_ENABLED# Obligatorio para obtener la vista de recursos de Kubernetesvalue:"true"- name:DD_CLUSTER_NAMEvalue:<CLUSTER_NAME>
Para obtener información sobre el rendimiento de tu clúster de EKS, habilita un Cluster Check Runner para recopilar métricas del servicio kube-state-metrics.
apiVersion:apps/v1kind:Deploymentmetadata:name:"<APPLICATION_NAME>"namespace:defaultspec:replicas:1selector:matchLabels:app:"<APPLICATION_NAME>"template:metadata:labels:app:"<APPLICATION_NAME>"name:"<POD_NAME>"annotations:ad.datadoghq.com/<CONTAINER_NAME>.check_names:'[<CHECK_NAME>]'ad.datadoghq.com/<CONTAINER_NAME>.init_configs:'[<INIT_CONFIG>]'ad.datadoghq.com/<CONTAINER_NAME>.instances:'[<INSTANCE_CONFIG>]'spec:serviceAccountName:datadog-agentcontainers:- name:"<APPLICATION_NAME>"image:"<APPLICATION_IMAGE>"## Running the Agent as a side-car- image:datadog/agentname:datadog-agentenv:- name:DD_API_KEYvalue:"<YOUR_DATADOG_API_KEY>"## Set DD_SITE to "datadoghq.eu" to send your## Agent data to the Datadog EU site- name:DD_SITEvalue:"datadoghq.com"- name:DD_EKS_FARGATEvalue:"true"- name:DD_KUBERNETES_KUBELET_NODENAMEvalueFrom:fieldRef:apiVersion:v1fieldPath:spec.nodeNameresources:requests:memory:"256Mi"cpu:"200m"limits:memory:"256Mi"cpu:"200m"
Las métricas de contenedores no están disponibles en Fargate porque el volumen cgroups del host no puede montarse en el Agent. La vista de Live Containers informa 0 para CPU y memoria.
Configura el puerto de contenedor 8125 con el contenedor del Agent de modo que puedas reenviar las métricas de DogStatsD desde tu contenedor de aplicaciones a Datadog.
apiVersion:apps/v1kind:Deploymentmetadata:name:"<APPLICATION_NAME>"namespace:defaultspec:replicas:1selector:matchLabels:app:"<APPLICATION_NAME>"template:metadata:labels:app:"<APPLICATION_NAME>"name:"<POD_NAME>"spec:serviceAccountName:datadog-agentcontainers:- name:"<APPLICATION_NAME>"image:"<APPLICATION_IMAGE>"## Ejecución del Agent como sidecar- image:datadog/agentname:datadog-agent## Habilitación del puerto 8125 para la recopilación de métricas de DogStatsDports:- containerPort:8125name:dogstatsdportprotocol:UDPenv:- name:DD_API_KEYvalue:"<YOUR_DATADOG_API_KEY>"## Define DD_SITE como "datadoghq.eu" para enviar los## datos del Agent al sitio de Datadog de la UE- name:DD_SITEvalue:"datadoghq.com"- name:DD_EKS_FARGATEvalue:"true"- name:DD_KUBERNETES_KUBELET_NODENAMEvalueFrom:fieldRef:apiVersion:v1fieldPath:spec.nodeNameresources:requests:memory:"256Mi"cpu:"200m"limits:memory:"256Mi"cpu:"200m"
El Datadog Agent v6.19+ admite contenedores activos en la integración de EKS Fargate. Los contenedores activos aparecen en la página Containers (Contenedores).
Monitoriza los logs de EKS Fargate mediante Fluent Bit para enrutar los logs de EKS a CloudWatch Logs y el Datadog Forwarder para enrutar logs a Datadog.
Para configurar Fluent Bit de modo que envíe logs a CloudWatch, crea un ConfigMap de Kubernetes que especifique CloudWatch Logs como salida. El ConfigMap especifica el grupo de logs, la región, la cadena de prefijo y si se debe crear automáticamente el grupo de logs.
kind:ConfigMapapiVersion:v1metadata:name:aws-loggingnamespace:aws-observabilitydata:output.conf:| [OUTPUT]
Name cloudwatch_logs
Match *
region us-east-1
log_group_name awslogs-https
log_stream_prefix awslogs-firelens-example
auto_create_group true
Utiliza el Datadog Forwarder para recopilar logs de CloudWatch y enviarlos a Datadog.
apiVersion:apps/v1kind:Deploymentmetadata:name:"<APPLICATION_NAME>"namespace:defaultspec:replicas:1selector:matchLabels:app:"<APPLICATION_NAME>"template:metadata:labels:app:"<APPLICATION_NAME>"name:"<POD_NAME>"spec:serviceAccountName:datadog-agent## Colocación del Agent en el mismo espacio de nombres que la aplicación para la detección del origen con cgroup v2shareProcessNamespace:truecontainers:- name:"<APPLICATION_NAME>"image:"<APPLICATION_IMAGE>"## Ejecución del Agent como sidecar- image:datadog/agentname:datadog-agent## Habilitación del puerto 8126 para la recopilación de trazasports:- containerPort:8126name:traceportprotocol:TCPenv:- name:DD_API_KEYvalue:"<YOUR_DATADOG_API_KEY>"## Define DD_SITE como "datadoghq.eu" para enviar los## datos del Agent al sitio de Datadog de la UE- name:DD_SITEvalue:"datadoghq.com"- name:DD_EKS_FARGATEvalue:"true"- name:DD_APM_ENABLEDvalue:"true"- name:DD_KUBERNETES_KUBELET_NODENAMEvalueFrom:fieldRef:apiVersion:v1fieldPath:spec.nodeNameresources:requests:memory:"256Mi"cpu:"200m"limits:memory:"256Mi"cpu:"200m"
Para el Agent 6.19+/7.19+, está disponible la Recopilación de procesos. Habilita shareProcessNamespace en las especificaciones del pod para recopilar todos los procesos que se estén ejecutando en el pod de Fargate. Por ejemplo:
El check eks_fargate envía una métrica de frecuencia eks.fargate.pods.running que se etiqueta según pod_name y virtual_node para que puedas realizar un seguimiento de cuántos pods se están ejecutando.