El Datadog Agent descubre automáticamente los contenedores y crea configuraciones de checks utilizando el mecanismo de Autodiscovery.
Los checks de clúster amplían este mecanismo para monitorizar cargas de trabajo no contenedorizadas, entre las que se incluyen:
Almacenes de datos y endpoints ejecutados fuera del clúster (por ejemplo, RDS o CloudSQL).
Servicios de clúster con carga equilibrada (por ejemplo, los servicios de Kubernetes).
Esto garantiza que solo se ejecute una instancia de cada check, en lugar de que todos los pods del Agent basados en nodos ejecuten el check correspondiente. El Cluster Agent almacena las configuraciones y las envía dinámicamente a los Agents basados en nodos. Los Agents se conectan al Cluster Agent cada diez segundos y recuperan las configuraciones que deben ejecutarse. Si un Agent deja de enviar información, el Cluster Agent lo elimina del grupo activo y distribuye las configuraciones a otros Agents. Esto garantiza que siempre se ejecute una (y solo una) instancia, aunque se añadan y eliminen nodos del clúster.
Las métricas, eventos y checks de servicio recopilados por los checks de clúster se envían sin nombre de host, ya que no es relevante. Asimismo, se añade una etiqueta cluster_name para permitirte dimensionar y filtrar tus datos.
Se recomienda usar checks de clúster si tu infraestructura está configurada para casos de alta disponibilidad (HA).
El proceso de configuración implica habilitar la capacidad de distribución en el Cluster Agent, así como garantizar que los Agents están preparados para recibir configuraciones del proveedor clusterchecks. Una vez hecho esto, las configuraciones pasan al Cluster Agent a través de la integración de archivos de configuración o a través de anotaciones en los servicios de Kubernetes.
La distribución de checks de clúster se habilita por defecto en el despliegue de Helm del Cluster Agent a través de la clave de configuración de datadog.clusterChecks.enabled:
Esto habilita la configuración de checks de clúster en el Cluster Agent y le permite procesar configuraciones desde las anotaciones de los servicios de Kubernetes (kube_services).
La distribución de checks de clúster se habilita en el despliegue del Operator del Cluster Agent mediante el uso de la clave de configuración spec.features.clusterChecks.enabled:
Esto habilita la configuración de checks de clúster en el Cluster Agent y permite procesar configuraciones desde las anotaciones de los servicios de Kubernetes (kube_services).
Una vez que tu Cluster Agent esté en ejecución, debes realizar los siguientes cambios en su despliegue:
Establece la variable de entorno DD_CLUSTER_CHECKS_ENABLED como true.
Transfiere el nombre de tu clúster a DD_CLUSTER_NAME. Para ayudarte entender el contexto de tus métricas, Datadog inserta el nombre del clúster como una etiqueta (tag) de instancia cluster_name en todas las configuraciones.
Si el nombre del servicio es diferente al parámetro datadog-cluster-agent predeterminado, asegúrate de que la variable de entorno DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME refleja el nombre del servicio.
Para permitir que el Cluster Agent procese las configuraciones de las anotaciones de servicios de Kubernetes, establece estas dos variables de entorno, DD_EXTRA_CONFIG_PROVIDERS y DD_EXTRA_LISTENERS, como kube_services.
Habilita el proveedor de configuración clusterchecks en el Agent del nodo de Datadog. Esto se puede hacer de dos maneras:
Recomendado: Estableciendo la variable de entorno DD_EXTRA_CONFIG_PROVIDERS en el DaemonSet de tu Agent. Si tienes varios valores, se necesita una cadena en la que los valores estén separados entre sí por espacios:
DD_EXTRA_CONFIG_PROVIDERS="clusterchecks"
O añadiéndolo al archivo de configuración datadog.yaml:
config_providers:- name:clustercheckspolling:true
Nota: Con los checks de clúster, las métricas notificadas por el Agent no se vinculan a un nombre de host determinado, ya que se supone que son métricas centradas en el clúster y no están necesariamente basadas en el host. Como resultado, estas métricas no heredan ninguna etiqueta en el host asociada a ese host, tales como las heredadas de un proveedor de servicios en la nube o las añadidas por la variable de entorno DD_TAGS del Agent. Para agregar etiquetas a las métricas de check de clúster, utiliza la variable de entorno DD_CLUSTER_CHECKS_EXTRA_TAGS.
El Helm chart de Datadog y el Datadog Operator ofrecen, además, la posibilidad de desplegar ejecutores de checks de clúster. Se trata del despliegue de un pequeño conjunto de Datadog Agents configurados para ejecutar únicamente los checks de clúster distribuidos, en lugar de distribuirlos a los Agents normales que se basan en nodos. Para más detalles, consulta la guía Ejecutores de checks de clúster.
El Cluster Agent puede utilizar una lógica de distribución avanzada para los checks de clúster que tenga en cuenta el tiempo de ejecución y las muestras de las métricas de las instancias del check. Esta lógica permite que el Cluster Agent optimice la distribución entre los ejecutores de checks de clúster.
Para configurar la lógica de distribución avanzada, se debe establecer la variable de entorno DD_CLUSTER_CHECKS_ADVANCED_DISPATCHING_ENABLED como true en el Cluster Agent.
Las siguientes variables de entorno son necesarias a la hora de configurar los Agents del nodo (o los ejecutores de checks de clúster) para mostrar las estadísticas de sus checks. El Cluster Agent utiliza estas estadísticas para optimizar la lógica de distribución de los checks de clúster.
Se admite la ejecución de checks personalizados del Agent, como los checks de clúster, siempre que todos los Agents basados en nodos puedan ejecutar el check. Esto significa que el código de tu check personalizado:
debe instalarse en todos los Agents basados en nodos en los que se haya habilitado el proveedor de configuración clusterchecks;
no debe depender de recursos locales que no sean accesibles a todos los Agents.
Cuando la URL o la IP de un determinado recurso es constante (por ejemplo, un endpoint de servicio externo o una URL pública), se puede transferir una configuración estática al Cluster Agent en forma de archivos YAML. La nomenclatura y la sintaxis de estos archivos son las mismas que las de las configuraciones estáticas del Agent basado en el nodo, excepto por la adición obligatoria de la línea cluster_check: true.
En la versión 1.18.0 (y posteriores) del Cluster Agent, puedes utilizar advanced_ad_identifiers y las variables de plantilla de Autodiscovery en la configuración de tu check para dirigirte a los servicios de Kubernetes (ver ejemplo).
Nota: Esto es independiente de la sección datadog.confd, en la que los archivos se crean en los Agents basados en nodos. El parámetro <INTEGRATION_NAME> debe coincidir exactamente con el check de integración que quieres ejecutar.
Con el Datadog Operator, estos archivos de configuración se pueden crear dentro de la sección spec.override.clusterAgent.extraConfd.configDataMap:
Si lo prefieres, puedes crear un ConfigMap para almacenar el archivo de configuración estática e integrar dicho ConfigMap en el Cluster Agent utilizando el campo spec.override.clusterAgent.extraConfd.configMap:
Con el método manual, debes crear un ConfigMap para almacenar los archivos de configuración estática que quieras y, luego, integrar dicho ConfigMap en el archivo /conf.d correspondiente del contenedor del Cluster Agent. Se sigue el mismo enfoque para integrar ConfigMaps en el contenedor del Agent. Ejemplo:
A continuación, en el manifiesto para el despliegue del Cluster Agent, define los parámetros volumeMounts y volumes según tu ConfigMap y la clave correspondiente de tus datos.
Esto crea un archivo en el directorio /conf.d/ del Cluster Agent correspondiente a la integración. Ejemplo: /conf.d/mysql.yaml o /conf.d/http_check.yaml.
Después de configurar una base de datos alojada externamente, como CloudSQL o RDS, y un usuario de Datadog correspondiente para acceder a la base de datos, integra un archivo /conf.d/mysql.yaml en el contenedor del Cluster Agent con el siguiente contenido:
Si hay una URL en la que desees realizar un check HTTP por clúster, integra un archivo /conf.d/http_check.yaml en el contenedor del Cluster Agent con el siguiente contenido:
Nota: AD Annotations v2 se introdujo en el Datadog Agent v7.36 para simplificar la configuración de la integración. Si tu versión del Datadog Agent es anterior, usa AD Annotations v1.
Esta sintaxis admite una variable de plantilla%%host%%, que se sustituye por la IP del servicio. Las etiquetas kube_namespace y kube_service se añaden automáticamente a la instancia.
La siguiente definición de servicio expone los pods desde el despliegue de my-nginx y ejecuta un check HTTP para medir la latencia del servicio de carga equilibrada:
Esta sintaxis admite una variable de plantilla%%host%%, que se sustituye por la IP del servicio. Las etiquetas kube_namespace y kube_service se añaden automáticamente a la instancia.
La siguiente definición de servicio expone los pods desde el despliegue de my-nginx y ejecuta un check HTTP para medir la latencia del servicio de carga equilibrada:
El Datadog Cluster Agent distribuye cada check de clúster a un Agent de nodo para que lo ejecute. Ejecuta el subcomando clusterchecks del Datadog Cluster Agent y busca el nombre del check bajo el nombre de host del Agent de nodo: