Compose es una herramienta de Docker que simplifica el desarrollo de aplicaciones en Docker, ya que permite definir, crear y ejecutar varios contenedores como una sola aplicación.

Aunque las instrucciones de instalación de un solo contenedor permiten ejecutar el contenedor del Datadog Agent, es posible que quieras habilitar integraciones para otros servicios contenedorizados que formen parte de tu aplicación de Compose. Para ello, deberás combinar los archivos YAML de integración con la imagen base del Datadog Agent para crear tu contenedor del Datadog Agent. Una vez hecho esto, añade el contenedor al YAML de Compose.

Ejemplo de Redis

El siguiente es un ejemplo de cómo puedes monitorizar un contenedor de Redis usando Compose. La estructura del archivo es:

|- docker-compose.yml
|- datadog
  |- Dockerfile
  |- conf.d
    |-redisdb.yaml

El archivo docker-compose.yml describe cómo funcionan los contenedores en conjunto y establece algunos detalles de la configuración para los contenedores.

version: '3'
services:
  redis:
    image: redis
  datadog:
    build: datadog
    pid: host
    environment:
     - DD_API_KEY=${DD_API_KEY}
     - DD_SITE=
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock
     - /proc/:/host/proc/:ro
     - /sys/fs/cgroup:/host/sys/fs/cgroup:ro

El redisdb.yaml sigue el modelo del archivo redisdb.yaml.example e indica al Datadog Agent que busque Redis en el host llamado redis (definido en docker-compose.yaml, arriba) y que use el puerto Redis estándar:

init_config:

instances:
    - host: redis
      port: 6379

El Dockerfile se usa para indicar a Docker Compose que genere una imagen del Datadog Agent que incluya el archivo redisdb.yaml en la localización adecuada:

FROM gcr.io/datadoghq/agent:latest
ADD conf.d/redisdb.yaml /etc/datadog-agent/conf.d/redisdb.yaml

Recopilación de logs

El archivo docker-compose.yml se puede ampliar para permitir al Datadog Agent recopilar logs del contenedor.

version: '3'
services:
  redis:
    image: redis
    labels:
      com.datadoghq.ad.logs: '[{"source": "redis", "service": "redis"}]'
  datadog:
    build: datadog
    pid: host
    environment:
     - DD_API_KEY=${DD_API_KEY}
     - DD_SITE=
     - DD_LOGS_ENABLED=true
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock
     - /proc/:/host/proc/:ro
     - /sys/fs/cgroup:/host/sys/fs/cgroup:ro
     - /var/lib/docker/containers:/var/lib/docker/containers:ro

Nota: La configuración anterior solo recopila logs del contenedor Redis. Los logs se pueden recopilar desde el Datadog Agent añadiendo una etiqueta com.datadoghq.ad.logs similar. La recopilación de logs también se puede habilitar expresamente para todos los contenedores configurando la variable de entorno DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL como true. Encontrarás más información en la documentación completa sobre la recopilación de logs de Docker.

Leer más