Docker Daemon

Supported OS Linux

Nota: El check de Docker Daemon todavía se mantiene, pero solo funciona con el Agent v5.

Para utilizar la integración de Docker con el Agent v6 consulta la sección Agent v6 a continuación.

Dashboard predeterminado de Docker

Información general

Configura este check del Agent para obtener métricas del servicio de Docker_daemon en tiempo real para lo siguiente:

  • Visualizar y monitoritorizar los estados de Docker_daemon.
  • Recibir notificaciones sobre las conmutaciones por error y eventos de Docker_daemon.

Configuración

Instalación

Para recopilar métricas de Docker sobre todos tus contenedores, ejecuta un Datadog Agent en cada host. Hay dos formas de ejecutar el Agent: directamente en cada host o en un contenedor de docker-dd-agent (recomendado).

Para cualquiera de las opciones, tus hosts necesitan una gestión de memoria de grupo activada para que el check de Docker tenga éxito. Consulta el repositorio docker-dd-agent para saber cómo activarla.

Instalación del host

  1. Asegúrate de que Docker se esté ejecutando en el host.
  2. Instala el Agent tal y como se describe en las instrucciones de instalación del Agent para tu sistema operativo del host.
  3. Activa el ícono de integración de Docker en la aplicación.
  4. Añade el usuario del Agent al grupo Docker: usermod -a -G docker dd-agent
  5. Crea un archivo docker_daemon.yaml copiando el archivo de ejemplo en el directorio Agent conf.d. Si tienes una instalación estándar de Docker en tu host, no debería haber nada que necesites cambiar para que la integración funcione.
  6. Para activar otras integraciones, utiliza docker ps para identificar los puertos utilizados por las aplicaciones correspondientes. Comando ps de Docker

Instalación del contenedor

  1. Asegúrate de que Docker se esté ejecutando en el host.

  2. Según las instrucciones de instalación del contenedor de Docker, ejecuta lo siguiente:

     docker run -d --name dd-agent \
       -v /var/run/docker.sock:/var/run/docker.sock:ro \
       -v /proc/:/host/proc/:ro \
       -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
       -e API_KEY={YOUR_DD_API_KEY} \
       datadog/docker-dd-agent:latest
    

En el comando anterior, puedes pasar tu clave de la API al Datadog Agent utilizando la marca de la variable de entorno -e de Docker. Otras variables son:

VariableDescripción
API_KEYConfigura tu clave de la API de Datadog.
DD_HOSTNAMEConfigura el nombre el host en el archivo datadog.confdel contenedor del Agent. Si no se configura esta variable, el contenedor del Agent utiliza valores predeterminados para el campo Name (tal y como se indica en el comando docker info) como el nombre del host del contenedor del Agent.
DD_URLConfigura la URL del servidor de entrada de Datadog al que el Agent envía los datos. Esto es útil cuando se utiliza el Agent como proxy.
LOG_LEVELConfigura el nivel de detalle del registro (CRÍTICO, ERROR, ADVERTENCIA, INFORMACIÓN, DEPURAR). Por ejemplo, -e LOG_LEVEL=DEBUG configura el registro en el modo de depuración.
ETIQUETAS (tags)Configura etiquetas (tags) del host como una cadena delimitada por comas. Están disponibles tanto etiquetas (tags) simples como etiquetas (tags) clave-valor, por ejemplo: -e etiquetas (tags)="simple-etiquetar, etiquetar-clave:etiquetar-valor".
EC2_TAGSActivar esta función permite al Agent consultar y capturar el conjunto personalizado etiquetas (tags) utilizando la API de EC2 durante el inicio. Para activarla, utiliza -e EC2_TAGS=yes. Nota: Esta función requiere un rol IAM asociado a la instancia.
NON_LOCAL_TRAFFICActivar esta función permite informar StatsD desde cualquier IP externa. Para activarla, utiliza -e NON_LOCAL_TRAFFIC=yes. Esto se usa para informar métricas desde otros contenedores o sistemas. Consulta configuración de red para obtener más detalles.
PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASSWORDDefine detalles de la configuración de proxy. Nota: PROXY_PASSWORD es obligatorio para pasar una contraseña de autenticación y no puede renombrarse. Para más información, consulta la documentación de proxy del Agent.
SD_BACKEND, SD_CONFIG_BACKEND, SD_BACKEND_HOST, SD_BACKEND_PORT, SD_TEMPLATE_DIR, SD_CONSUL_TOKENActiva y configura Autodiscovery. Para más información, consulta la guía de Autodiscovery .

Nota: Añade --restart=unless-stopped si quieres que tu Agent sea resistente a los reinicios.

Ejecutar el contenedor del Agent en Amazon Linux

Para ejecutar el contenedor del Datadog Agent en Amazon Linux, haz este cambio en la localización de montaje de volumen cgroup:

docker run -d --name dd-agent \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro \
  -v /cgroup/:/host/sys/fs/cgroup:ro \
  -e API_KEY={YOUR API KEY} \
  datadog/docker-dd-agent:latest

Contenedor basado en Alpine Linux

La imagen estándar de Docker está basada en Debian Linux, pero a partir del Datadog Agent v5.7, existe una imagen basada en Alpine Linux. La imagen Alpine Linux es considerablemente más pequeña que la imagen tradicional basada en Debian. También hereda el diseño orientado a la seguridad de Alpine.

Para utilizar la imagen de Alpine Linux, añade -alpine a la etiqueta (tag) de la versión. Por ejemplo:

docker run -d --name dd-agent \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro \
  -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
  -e API_KEY={YOUR API KEY} \
  datadog/docker-dd-agent:latest-alpine

Versión de imágenes

A partir de la versión 5.5.0 del Datadog Agent, la imagen de Docker sigue un nuevo patrón de versión. Esto permite a Datadog publicar cambios en la imagen de Docker del Datadog Agent, pero con la misma versión del Agent.

La versión de la imagen de Docker tiene el siguiente patrón: X.Y.Z donde X es la versión principal de la imagen de Docker, Y es la versión secundaria y Z representa la versión del Agent.

Por ejemplo, la primera versión de la imagen de Docker que incluye el Datadog Agent 5.5.0 es: 10.0.550

Contenedores personalizados e información adicional

Para obtener más información sobre la creación de contenedores personalizados de Docker con el Datadog Agent, la imagen basada en Alpine Linux, el control de versiones, etc., consulta el proyecto docker-dd-agent en Github.

Validación

Ejecuta el subcomando de estado del Agent y busca docker_daemon en la sección Checks.

Agent v6

El último check de Docker se denomina docker y está escrito en Go para aprovechar la nueva arquitectura interna. A partir de la versión 6.0, el Agent ya no carga la el check docker_daemon, aunque siga disponible y se mantenga para el Agent v5. Todas las funciones se portan en la versión >6.0, excepto las obsoletas siguientes:

  • Las opciones url, api_version y tags* están obsoletas. Se fomenta el uso directo de las variables de entorno estándar de Docker.
  • Las opciones ecs_tags, performance_tags y container_tags están obsoletas. Cada etiquetar relevante se recopila de modo predeterminado.
  • La opción collect_container_count para activar la métricadocker.container.count no es compatible. Deben utilizarse docker.containers.running y .stopped.

Algunas opciones se han movido de docker_daemon.yaml al archivo datadog.yaml principal:

  • collect_labels_as_tags ha pasado a llamarse docker_labels_as_tags y admite etiquetas (tags) de cardinalidad alta. Conslta los detalles en datadog.yaml.example.
  • exclude y include han pasado a denominarse ac_include y ac_exclude. Para que el filtrado sea coherente en todos los componentes del Agent, se ha suprimido el filtrado en etiquetas (tags) arbitrario. Los únicos filtros admitidos en etiquetas (tags) son image (nombre de la imagen) y name (nombre del contenedor). El filtrado de expresiones regulares sigue estando disponible; consulta datadog.yaml.example para ver ejemplos.
  • La opción docker_root se ha dividido en dos opciones: container_cgroup_root y container_proc_root.
  • exclude_pause_container se ha añadido para excluir los contenedores en pausa en Kubernetes y Openshift (el valor predeterminado es true). Esto evita eliminarlos de la lista por error.

Cambios adicionales:

El comando import convierte el antiguo docker_daemon.yaml en el nuevo docker.yaml. El comando también traslada las configuraciones necesarias de docker_daemon.yaml a datadog.yaml.

Datos recopilados

Métricas

docker.container.open_fds
(gauge)
The number of open file descriptors
Shown as file
docker.container.size_rootfs
(gauge)
Total size of all the files in the container
Shown as byte
docker.container.size_rootfs.95percentile
(gauge)
95th percentile of docker.container.size_rootfs
Shown as byte
docker.container.size_rootfs.avg
(gauge)
Average value of docker.container.size_rootfs
Shown as byte
docker.container.size_rootfs.count
(rate)
The rate that the value of docker.container.size_rw was sampled
Shown as sample
docker.container.size_rootfs.max
(gauge)
Max value of docker.container.size_rootfs
Shown as byte
docker.container.size_rootfs.median
(gauge)
Median value of docker.container.size_rootfs
Shown as byte
docker.container.size_rw
(gauge)
Total size of all the files in the container which have been created or changed by processes running in the container
Shown as byte
docker.container.size_rw.95percentile
(gauge)
95th percentile of docker.container.size_rw
Shown as byte
docker.container.size_rw.avg
(gauge)
Average value of docker.container.size_rw
Shown as byte
docker.container.size_rw.count
(rate)
The rate that the value of docker.container.size_rw was sampled
Shown as sample
docker.container.size_rw.max
(gauge)
Max value of docker.container.size_rw
Shown as byte
docker.container.size_rw.median
(gauge)
Median value of docker.container.size_rw
Shown as byte
docker.containers.running
(gauge)
The number of containers running on this host tagged by image
docker.containers.running.total
(gauge)
The total number of containers running on this host
docker.containers.stopped
(gauge)
The number of containers stopped on this host tagged by image
docker.containers.stopped.total
(gauge)
The total number of containers stopped on this host
docker.cpu.limit
(gauge)
Limit on CPU available to the container, expressed as percentage of a core
Shown as percent
docker.cpu.shares
(gauge)
Shares of CPU usage allocated to the container
docker.cpu.system
(gauge)
The percent of time the CPU is executing system calls on behalf of processes of this container, unnormalized
Shown as percent
docker.cpu.system.95percentile
(gauge)
95th percentile of docker.cpu.system [deprecated in agent 6.0]
Shown as percent
docker.cpu.system.avg
(gauge)
Average value of docker.cpu.system [deprecated in agent 6.0]
Shown as percent
docker.cpu.system.count
(rate)
The rate that the value of docker.cpu.system was sampled [deprecated in agent 6.0]
Shown as sample
docker.cpu.system.max
(gauge)
Max value of docker.cpu.system
Shown as percent
docker.cpu.system.median
(gauge)
Median value of docker.cpu.system [deprecated in agent 6.0]
Shown as percent
docker.cpu.throttled
(gauge)
Number of times the cgroup has been throttled
docker.cpu.usage
(gauge)
The percent of CPU time obtained by this container
Shown as percent
docker.cpu.user
(gauge)
The percent of time the CPU is under direct control of processes of this container, unnormalized
Shown as percent
docker.cpu.user.95percentile
(gauge)
95th percentile of docker.cpu.user [deprecated in agent 6.0]
Shown as percent
docker.cpu.user.avg
(gauge)
Average value of docker.cpu.user [deprecated in agent 6.0]
Shown as percent
docker.cpu.user.count
(rate)
The rate that the value of docker.cpu.user was sampled [deprecated in agent 6.0]
Shown as sample
docker.cpu.user.max
(gauge)
Max value of docker.cpu.user [deprecated in agent 6.0]
Shown as percent
docker.cpu.user.median
(gauge)
Median value of docker.cpu.user [deprecated in agent 6.0]
Shown as percent
docker.data.free
(gauge)
Storage pool disk space free
Shown as byte
docker.data.percent
(gauge)
The percent of storage pool used
Shown as percent
docker.data.total
(gauge)
Storage pool disk space total
Shown as byte
docker.data.used
(gauge)
Storage pool disk space used
Shown as byte
docker.image.size
(gauge)
Size of all layers of the image on disk
Shown as byte
docker.image.virtual_size
(gauge)
Size of all layers of the image on disk
Shown as byte
docker.images.available
(gauge)
The number of top-level images
docker.images.intermediate
(gauge)
The number of intermediate images, which are intermediate layers that make up other images
docker.io.read_bytes
(gauge)
Bytes read per second from disk by the processes of the container
Shown as byte
docker.io.read_bytes.95percentile
(gauge)
95th percentile of docker.io.read_bytes [deprecated in agent 6.0]
Shown as byte
docker.io.read_bytes.avg
(gauge)
Average value of docker.io.read_bytes [deprecated in agent 6.0]
Shown as byte
docker.io.read_bytes.count
(rate)
The rate that the value of docker.io.read_bytes was sampled [deprecated in agent 6.0]
Shown as sample
docker.io.read_bytes.max
(gauge)
Max value of docker.container.io.read_bytes [deprecated in agent 6.0]
Shown as byte
docker.io.read_bytes.median
(gauge)
Median value of docker.container.io.read_bytes [deprecated in agent 6.0]
Shown as byte
docker.io.write_bytes
(gauge)
Bytes written per second to disk by the processes of the container
Shown as byte
docker.io.write_bytes.95percentile
(gauge)
95th percentile of docker.io.write_bytes [deprecated in agent 6.0]
Shown as byte
docker.io.write_bytes.avg
(gauge)
Average value of docker.io.write_bytes [deprecated in agent 6.0]
Shown as byte
docker.io.write_bytes.count
(rate)
The rate that the value of docker.io.write_bytes was sampled [deprecated in agent 6.0]
Shown as sample
docker.io.write_bytes.max
(gauge)
Max value of docker.container.io.write_bytes [deprecated in agent 6.0]
Shown as byte
docker.io.write_bytes.median
(gauge)
Median value of docker.container.io.write_bytes [deprecated in agent 6.0]
Shown as byte
docker.kmem.usage
(gauge)
The amount of kernel memory that belongs to the container's processes.
Shown as byte
docker.mem.cache
(gauge)
The amount of memory that is being used to cache data from disk (e.g. memory contents that can be associated precisely with a block on a block device)
Shown as byte
docker.mem.cache.95percentile
(gauge)
95th percentile value of docker.mem.cache [deprecated in agent 6.0]
Shown as byte
docker.mem.cache.avg
(gauge)
Average value of docker.mem.cache [deprecated in agent 6.0]
Shown as byte
docker.mem.cache.count
(rate)
The rate that the value of docker.mem.cache was sampled [deprecated in agent 6.0]
Shown as sample
docker.mem.cache.max
(gauge)
Max value of docker.mem.cache [deprecated in agent 6.0]
Shown as byte
docker.mem.cache.median
(gauge)
Median value of docker.mem.cache [deprecated in agent 6.0]
Shown as byte
docker.mem.in_use
(gauge)
The fraction of used memory to available memory, IF THE LIMIT IS SET
Shown as fraction
docker.mem.in_use.95percentile
(gauge)
95th percentile of docker.mem.in_use [deprecated in agent 6.0]
Shown as fraction
docker.mem.in_use.avg
(gauge)
Average value of docker.mem.in_use [deprecated in agent 6.0]
Shown as fraction
docker.mem.in_use.count
(rate)
The rate that the value of docker.mem.in_use was sampled [deprecated in agent 6.0]
Shown as sample
docker.mem.in_use.max
(gauge)
Max value of docker.container.mem.in_use [deprecated in agent 6.0]
Shown as fraction
docker.mem.in_use.median
(gauge)
Median value of docker.container.mem.in_use [deprecated in agent 6.0]
Shown as fraction
docker.mem.limit
(gauge)
The memory limit for the container, if set
Shown as byte
docker.mem.limit.95percentile
(gauge)
95th percentile of docker.mem.limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.limit.avg
(gauge)
Average value of docker.mem.limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.limit.count
(rate)
The rate that the value of docker.mem.limit was sampled [deprecated in agent 6.0]
Shown as sample
docker.mem.limit.max
(gauge)
Max value of docker.mem.limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.limit.median
(gauge)
Median value of docker.mem.limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.rss
(gauge)
The amount of non-cache memory that belongs to the container's processes. Used for stacks, heaps, etc.
Shown as byte
docker.mem.rss.95percentile
(gauge)
95th percentile value of docker.mem.rss [deprecated in agent 6.0]
Shown as byte
docker.mem.rss.avg
(gauge)
Average value of docker.mem.rss [deprecated in agent 6.0]
Shown as byte
docker.mem.rss.count
(rate)
The rate that the value of docker.mem.rss was sampled [deprecated in agent 6.0]
Shown as sample
docker.mem.rss.max
(gauge)
Max value of docker.mem.rss [deprecated in agent 6.0]
Shown as byte
docker.mem.rss.median
(gauge)
Median value of docker.mem.rss [deprecated in agent 6.0]
Shown as byte
docker.mem.soft_limit
(gauge)
The memory reservation limit for the container, if set
Shown as byte
docker.mem.soft_limit.95percentile
(gauge)
95th percentile of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.soft_limit.avg
(gauge)
Average value of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.soft_limit.count
(rate)
The rate that the value of docker.mem.soft_limit was sampled
Shown as sample
docker.mem.soft_limit.max
(gauge)
Max value of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.soft_limit.median
(gauge)
Median value of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.sw_in_use
(gauge)
The fraction of used swap + memory to available swap + memory, if the limit is set
Shown as fraction
docker.mem.sw_in_use.95percentile
(gauge)
95th percentile of docker.mem.swinuse [deprecated in agent 6.0]
Shown as fraction
docker.mem.sw_in_use.avg
(gauge)
Average value of docker.mem.swinuse [deprecated in agent 6.0]
Shown as fraction
docker.mem.sw_in_use.count
(rate)
The rate that the value of docker.mem.swinuse was sampled [deprecated in agent 6.0]
Shown as sample
docker.mem.sw_in_use.max
(gauge)
Max value of docker.container.mem.swinuse [deprecated in agent 6.0]
Shown as fraction
docker.mem.sw_in_use.median
(gauge)
Median value of docker.container.mem.swinuse [deprecated in agent 6.0]
Shown as fraction
docker.mem.sw_limit
(gauge)
The swap + memory limit for the container, if set
Shown as byte
docker.mem.sw_limit.95percentile
(gauge)
95th percentile of docker.mem.sw_limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.sw_limit.avg
(gauge)
Average value of docker.mem.sw_limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.sw_limit.count
(rate)
The rate that the value of docker.mem.sw_limit was sampled [deprecated in agent 6.0]
Shown as sample
docker.mem.sw_limit.max
(gauge)
Max value of docker.mem.sw_limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.sw_limit.median
(gauge)
Median value of docker.mem.sw_limit. Ordinarily this value will not change [deprecated in agent 6.0]
Shown as byte
docker.mem.swap
(gauge)
The amount of swap currently used by the container
Shown as byte
docker.mem.swap.95percentile
(gauge)
95th percentile value of docker.mem.swap [deprecated in agent 6.0]
Shown as byte
docker.mem.swap.avg
(gauge)
Average value of docker.mem.swap [deprecated in agent 6.0]
Shown as byte
docker.mem.swap.count
(rate)
The rate that the value of docker.mem.swap was sampled [deprecated in agent 6.0]
Shown as sample
docker.mem.swap.max
(gauge)
Max value of docker.mem.swap [deprecated in agent 6.0]
Shown as byte
docker.mem.swap.median
(gauge)
Median value of docker.mem.swap [deprecated in agent 6.0]
Shown as byte
docker.metadata.free
(gauge)
Storage pool metadata space free
Shown as byte
docker.metadata.percent
(gauge)
The percent of storage pool metadata used
Shown as percent
docker.metadata.total
(gauge)
Storage pool metadata space total
Shown as byte
docker.metadata.used
(gauge)
Storage pool metadata space used
Shown as byte
docker.net.bytes_rcvd
(gauge)
Bytes received per second from the network
Shown as byte
docker.net.bytes_rcvd.95percentile
(gauge)
95th percentile of docker.net.bytes_rcvd [deprecated in agent 6.0]
Shown as byte
docker.net.bytes_rcvd.avg
(gauge)
Average value of docker.net.bytes_rcvd [deprecated in agent 6.0]
Shown as byte
docker.net.bytes_rcvd.count
(rate)
The rate that the value of docker.net.bytes_rcvd was sampled [deprecated in agent 6.0]
Shown as sample
docker.net.bytes_rcvd.max
(gauge)
Max value of docker.container.net.bytes_rcvd [deprecated in agent 6.0]
Shown as byte
docker.net.bytes_rcvd.median
(gauge)
Median value of docker.container.net.bytes_rcvd [deprecated in agent 6.0]
Shown as byte
docker.net.bytes_sent
(gauge)
Bytes sent per second to the network
Shown as byte
docker.net.bytes_sent_bytes.95percentile
(gauge)
95th percentile of docker.net.bytessentbytes [deprecated in agent 6.0]
Shown as byte
docker.net.bytes_sent_bytes.avg
(gauge)
Average value of docker.net.bytessentbytes [deprecated in agent 6.0]
Shown as byte
docker.net.bytes_sent_bytes.count
(rate)
The rate that the value of docker.net.bytessentbytes was sampled [deprecated in agent 6.0]
Shown as sample
docker.net.bytes_sent_bytes.max
(gauge)
Max value of docker.container.net.bytessentbytes [deprecated in agent 6.0]
Shown as byte
docker.net.bytes_sent_bytes.median
(gauge)
Median value of docker.container.net.bytessentbytes [deprecated in agent 6.0]
Shown as byte
docker.thread.count
(gauge)
Current thread count for the container
Shown as thread
docker.thread.limit
(gauge)
Thread count limit for the container, if set
Shown as thread
docker.uptime
(gauge)
Time since the container was started
Shown as second

Eventos

La integración de Docker produce los siguientes eventos:

  • Eliminar imagen
  • Expirar
  • Error
  • Fallo
  • Terminar
  • Sin memoria (oom)
  • Pausa
  • Reiniciar el contenedor
  • Reiniciar el Daemon
  • Actualización

Checks de servicio

docker.service_up
Returns CRITICAL if the Agent is unable to collect the list of containers from the Docker daemon. Returns OK otherwise.
Statuses: ok, critical

docker.container_health
Returns CRITICAL if a container is unhealthy. Returns OK otherwise or UNKNOWN if the health is unknown.
Statuses: ok, critical, unknown

docker.exit
Returns CRITICAL if a container exited with a non-zero exit code. Returns OK otherwise.
Statuses: ok, critical

Nota: Para utilizar docker.exit, añade collect_exit_codes: true en tu archivo Docker YAML y reinicia el Agent.

Solucionar problemas

¿Necesitas ayuda? Ponte en contacto con soporte técnico de Datadog.

Referencias adicionales