docker-logs-monitorizacion-basica

Logs y monitorización en Docker

  • 3 min

Los logs de Docker son la salida que generan los procesos del contenedor y que Docker captura para que podamos consultarla después.

Hemos aprendido a lanzar contenedores en modo Detached (-d). Esto es genial porque nos libera la terminal, pero tiene un efecto secundario peligroso: dejamos de ver qué está pasando.

  • Si lanzas una base de datos y falla al arrancar, no verás el error.
  • Si tu servidor web se cae al recibir una petición, no te enterarás.

En este artículo vamos a aprender a escuchar lo que dicen nuestros contenedores y a vigilar su salud.

Docker Logs

En los sistemas tradicionales, cuando una aplicación fallaba, tenías que ir a buscar un archivo perdido en /var/log/nginx/error.log o similar.

En Docker, la filosofía es distinta. Docker captura automáticamente todo lo que el proceso principal escribe en la Salida Estándar (STDOUT) y en la Salida de Error (STDERR).

Para ver qué ha dicho un contenedor, usamos docker logs:

docker logs <nombre_contenedor>
Copied!

Esto volcará en tu pantalla todo el historial de lo que ha ocurrido desde que el contenedor arrancó.

Si estás programando una app para Docker (en Node, Python, C#…), no escribas logs en archivos de texto dentro del contenedor.

Escribe simplemente en la consola (console.log, print). Docker se encargará de capturarlo, rotarlo y gestionarlo.

Monitorización de Recursos (docker stats)

A veces el problema no es que falle, sino que va lento. O peor, que tu ordenador entero va lento desde que lanzaste esos contenedores. ¿Cómo sabemos quién se está comiendo la CPU o la RAM?

Docker incluye un “Administrador de Tareas” nativo muy potente:

docker stats
Copied!

Verás una tabla en tiempo real que se actualiza cada segundo:

CONTAINER ID   NAME        CPU %     MEM USAGE / LIMIT   MEM %     NET I/O
a1b2c3d4       mi-db       0.15%     450MiB / 8GiB       5.20%     1.2kB / 0B
e5f6g7h8       mi-web      0.02%     22MiB / 8GiB        0.12%     500B / 0B
Copied!

Aquí puedes detectar rápidamente al culpable:

  • CPU %: Si un contenedor está al 100%, algo se ha quedado colgado en un bucle infinito.
  • MEM USAGE: Aquí verás si esa base de datos o ese servidor Java se está comiendo toda tu RAM disponible.

Inspeccionando procesos (docker top)

Si quieres hilar más fino y ver qué procesos específicos corren dentro de un contenedor (sin entrar en él), puedes usar:

docker top mi-contenedor
Copied!

Es útil para verificar, por ejemplo, si tu servidor web ha lanzado los hilos (threads) de trabajo correctamente o si hay procesos zombis.