Esta página cubre la instalación y la configuración de integraciones para tu infraestructura Kubernetes utilizando una característica de Datadog conocida como Autodiscovery. Esto te permite utilizar variables como %%host%% para rellenar dinámicamente tus parámetros de configuración. Para ver una explicación detallada de cómo funciona Autodiscovery, consulta Empezando con contenedores: Autodiscovery. Para ver las opciones avanzadas de Autodiscovery, como la exclusión de determinados contenedores de Autodiscovery o la tolerancia de pods no listos, consulta la gestión de Autodiscovery.
Algunas integraciones de Datadog no funcionan con Autodiscovery, ya que requieren datos del árbol de procesos o un acceso a los sistemas de archivos: Ceph, Varnish, Postfix, nodetools Cassandra y Gunicorn.
Para monitorizar integraciones que no son compatibles con Autodiscovery, puedes utilizar un exportador Prometheus en el pod, para exponer un endpoint HTTP, y luego puedes utilizar la integración con OpenMetrics (compatible con Autodiscovery) para encontrar el pod y consultar el endpoint.
Algunas integraciones requieren pasos de configuración, como la creación de un token de acceso o la concesión de permisos de lectura al Datadog Agent. Sigue las instrucciones de la sección Configuración de la documentación de integraciones.
Para utilizar una integración que no está empaquetada con el Datadog Agent, debes crear una imagen personalizada que contenga la integración deseada. Consulta el uso de integraciones comunitarias para obtener instrucciones.
Algunas integraciones de uso común vienen por defecto con una configuración para Autodiscovery. Consulta Auto-configuración de Autodiscovery para obtener más detalles, incluyendo una lista de integraciones auto-configuradas y sus correspondientes archivos de configuración por defecto. Si tu integración está en esta lista y la configuración por defecto es suficiente para tu caso de uso, no es necesario realizar ninguna acción adicional.
O:
Elige un método de configuración (anotaciones en pods de Kubernetes, un archivo local, un ConfigMap, una base de datos clave-valor, un manifiesto del Datadog Operator o un chart de Helm) que se adapte a tu caso de uso.
Consulta el formato de plantilla del método que hayas elegido. Cada formato contiene parámetros como <CONTAINER_IDENTIFIER>.
Si defines tus pods de Kubernetes directamente con kind: Pod, añade las anotaciones de cada pod directamente bajo su sección metadata, como se muestra a continuación:
Anotaciones de Autodiscovery v2 (para el Datadog Agent v7.36 o posteriores)
Si defines pods indirectamente (con despliegues, ReplicaSets o ReplicationControllers), añade anotaciones de pod en spec.template.metadata.
Puedes almacenar plantillas de Autodiscovery como archivos locales dentro del directorio montado /conf.d. Debes reiniciar tus contenedores del Agent cada vez que cambies, añadas o elimines plantillas.
Crea un archivo conf.d/<INTEGRATION_NAME>.d/conf.yaml en tu host:
Puedes obtener plantillas de Autodiscovery de Consul, etcd o ZooKeeper. Puedes configurar tu base de datos clave-valor en el archivo de configuración datadog.yaml (y posteriormente montar este archivo en el contenedor del Agent) o como variables de entorno en el contenedor del Agent.
Configurar en datadog.yaml:
En datadog.yaml, configura la dirección <KEY_VALUE_STORE_IP> y el<KEY_VALUE_STORE_PORT> de tu base de datos clave-valor:
Si la base de datos clave-valor se ha activado como fuente de plantillas, el Agent busca plantillas con la clave /datadog/check_configs. Autodiscovery espera una jerarquía clave-valor como la siguiente:
Para configurar integraciones en datadog-agent.yaml, añade una sobreescritura al componente extraConfd.configDataMapnodeAgent de tu configuración del DatadogAgent. Cada clave se convierte en archivo en el directorio conf.d del Agent.
Para monitorizar un check de clústeres, añade una sobreescritura extraConfd.configDataMap al componente clusterAgent. También debes activar los checks de clústeres configurando features.clusterChecks.enabled: true.
Tu archivo datadog-values.yaml contiene una sección datadog.confd donde puedes definir plantillas de Autodiscovery. Puedes encontrar ejemplos en línea en values.yaml. Cada clave se convierte en archivo en el directorio conf.d del Agent.
Para monitorizar un check de clústeres, define tu plantilla en clusterAgent.confd. Puedes encontrar ejemplos en línea en values.yaml. También debes habilitar el Cluster Agent, configurando clusterAgent.enabled: true, y habilitar los checks de clústeres, configurando datadog.clusterChecks.enabled: true.
nombre de tu integración de Datadog, como etcd o redisdb.
<CONTAINER_IDENTIFIER>
identificador para cotejar con los nombres (spec.containers[0].name, nospec.containers[0].image) de los contenedores que corresponden a tu integración. El parámetro ad_identifiers toma una lista, por lo que puedes proporcionar varios identificadores de contenedores.
Por ejemplo: si proporcionas redis como identificador de contenedor, tu plantilla de Autodiscovery se aplicará a todos los contenedores cuyos nombres coincidan con redis. Si tienes un contenedor que ejecuta foo/redis:latest y bar/redis:v2, tu plantilla de Autodiscovery se aplicará a ambos contenedores.
parámetros de configuración que figuran en init_config en el archivo <INTEGRATION_NAME>.d/conf.yaml.example de tu integración. La sección init_config suele estar vacía.
<INSTANCES_CONFIG>
parámetros de configuración que figuran en instances, en el archivo <INTEGRATION_NAME>.d/conf.yaml.example de tu integración.
<LOGS_CONFIG>
parámetros de configuración que figuran en logs, en el archivo <INTEGRATION_NAME>.d/conf.yaml.example de tu integración.
El Datadog Agent reconoce y proporciona automáticamente una configuración básica para algunas tecnologías comunes. Para ver una lista completa, consulta Auto-configuración de Autodiscovery.
Las configuraciones establecidas con anotaciones de Kubernetes tienen prioridad sobre la auto-configuración, pero la auto-configuración tiene prioridad sobre las configuraciones establecidas con el Datadog Operator o con Helm. Para utilizar el Datadog Operator o Helm para configurar una integración en la lista de auto-configuración de Autodiscovery, debes desactivar la auto-configuración.
En este escenario de ejemplo, has desplegado Postgres en Kubernetes y quieres configurar la integración Datadog-Postgres. Todos tus contenedores de Postgres tienen nombres de contenedor que contienen la cadena postgres.
En primer lugar, consulta la documentación de integraciones de Postgres para conocer los pasos de configuración adicionales. La integración de Postgres requiere la creación de un usuario de sólo lectura llamado datadog y el almacenamiento de la contraseña correspondiente como una variable de entorno llamada PG_PASSWORD.
Si tuvieras que configurar esta integración en un host, podrías hacer referencia a postgresql.d/conf.yaml.example para ver los parámetros y crear un archivo postgresql.d/conf.yaml que contenga lo siguiente:
Los siguientes comandos etcd crean una plantilla de integración con Postgres con un parámetro password personalizado:
etcdctl mkdir /datadog/check_configs/postgres
etcdctl set /datadog/check_configs/postgres/check_names '["postgresql"]'
etcdctl set /datadog/check_configs/postgres/init_configs '[{}]'
etcdctl set /datadog/check_configs/postgres/instances '[{"host": "%%host%%","port":"5432","username":"datadog","password":"%%env_PG_PASSWORD%%"}]'
Fíjate que cada uno de los tres valores es una lista. Autodiscovery agrupa los elementos de la lista en configuraciones de integraciones basadas en índices de lista compartidos. En este caso, conforma la primera (y única) configuración de checks a partir de check_names[0], init_configs[0] y instances[0].
%%host%% se rellena dinámicamente con la IP del contenedor.
%%env_PG_PASSWORD%% hace referencia a una variable de entorno denominada PG_PASSWORD, que es como la ve el proceso del Agent.
Para ver más ejemplos, incluyendo la configuración de múltiples checks para múltiples conjuntos de contenedores, consulta Autodiscovery: escenarios y ejemplos.