[Docker] Monitorizar contenedores

Ya hemos hecho algunas cositas interesantes con los contenedores de Docker y llega un momento en que necesitamos monitorizarlos, saber que está pasando, los recursos que consume o por qué no funciona correctamente. Para ello Docker nos brinda tres comandos: logs, top y stats.

docker logs

Como os podéis imaginar con docker logs nos va a mostrar los logs del contenedor que queramos. La sintaxis sería:

docker logs <ID o nombre contenedor>

Si queremos seguir la salida que va mostrando:

docker logs -f <ID o nombre contenedor>

O mostrar las últimas diez salidas:

docker logs --tail 10 <ID o nombre contenedor>

docker top

Mostramos los procesos que están corriendo de un contenedor:

docker top <ID o nombre contenedor>

docker stats

Nos muestra las estadísticas del flujo de recursos de un contenedor o de varios contenedores. Esto es, el uso de CPU, memoria, trafico de red y de disco.

docker stats <IDs o nombre contenedores>

Si queremos ver todos los contenedores:

docker stats -a

Podemos usar la opción --format para sacar la información que queramos de la forma que nos guste, por ejemplo:

docker stats --format "{{.Name}}\t{{.CPUPerc}}" <IDs o nombre contenedorres>

La salida de este comando es la monitorización de solo el porcentaje de CPU a los contenedores especificados.

Usar un contenedor

Existen contenedores que se encargan de recoger las métricas y usos de otros contenedores, algunos de estos son cAdvisor o Prometheus (esta es ya una solución cuando tenemos una infraestructura importante). Cualquiera de estas opciones es buena si el fin es que todo funcione correctamente :smile: