Compose y el Datadog Agent
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
Más enlaces, artículos y documentación útiles: