Docker stats: Métricas fáciles para contenedores
Dejadme que hoy os hable de una herramienta, llamada docker stats, que nos permite comprobar en directo el uso de los contenedores que tengamos desplegados. Ya sea el uso del procesador, de la memoria o de la red. Además, la información que nos ofrece se puede customizar, para ver únicamente lo que nosotros deseemos.
El comando docker stats muestra información en vivo de los contenedores que se estén ejecutando. Para limitar los datos a uno o más contenedores específicos, podemos especificar una lista de estos o bien separados por un espacio. También existe la posibilidad de seleccionar un contenedor detenido, no entonces no devolverán ningún dato.
Su uso es el siguiente:
docker stats [OPCIONES] [CONTENEDORES…]
Respecto a las opciones principales:
- –all, -a Muestra información de todos los contenedores en funcionamiento
- –format Información más amigable utilizando una plantilla en Go
- –no-stream Se deshabilita la estadística de transmisión y solo se obtiene el primer resultado
- –no-trunc No trunca la salida
Aprovechando el VPS que tengo creado en mi compañía de confianza Clouding.io, que tiene un buen puñado de contenedores en funcionamiento, vamos a ver el funcionamiento de la herramienta. Primero de todo veamos su uso básico.
$ docker stats
Con el resultado en mi caso:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 0a5903c2b25f wordpress_wordpress_1 0.01% 98.41MiB / 3.852GiB 2.49% 16.4MB / 21.3MB 71.6MB / 38.5MB 12 2460b583428a wordpress_mariadb_1 0.09% 87.17MiB / 3.852GiB 2.21% 3MB / 9.8MB 61.8MB / 804MB 30 cb58260d6f6e dudle 0.08% 6.543MiB / 3.852GiB 0.17% 70.6kB / 111kB 7.52MB / 4.1kB 57 3274ba73ee01 odoo_web_1 0.01% 59.96MiB / 3.852GiB 1.52% 23.9kB / 777B 72.9MB / 0B 4 3e690a1674f5 odoo_db_1 0.01% 9.715MiB / 3.852GiB 0.25% 27.6kB / 846B 39.3MB / 49.8MB 7 32914ef36135 webdav 0.00% 8.48MiB / 3.852GiB 0.21% 36.5kB / 3.08kB 32.8MB / 8.19kB 4 0595f0fdf591 nextcloud_app_1 0.00% 12.47MiB / 3.852GiB 0.32% 27.4kB / 0B 71.8MB / 4.1kB 6 35b5e2b70fdf nextcloud_db_1 0.06% 76.15MiB / 3.852GiB 1.93% 24.6kB / 0B 78.5MB / 2.17MB 30 4201e2852e00 nextcloud_redis_1 0.14% 2.137MiB / 3.852GiB 0.05% 25.8kB / 0B 11.6MB / 0B 4 6878623e79e4 telegraf 0.03% 12.46MiB / 3.852GiB 0.32% 8.12MB / 84.3MB 63.4MB / 0B 11 686e93009c49 grafana 0.02% 31.05MiB / 3.852GiB 0.79% 10.7MB / 7.36MB 79.8MB / 85MB 12 16f638dd7fed influxdb 0.06% 212.2MiB / 3.852GiB 5.38% 1.18GB / 26.5MB 262MB / 2.73GB 1
Para muestra un botón:
Tal y como se observa, nos muestra información del ID de los contenedores, el uso de CPU y memoria, el limite de memoria que pueden utilizar, el uso de la red, el uso de disco en lo que respecta a lectura y escritura, además de su PID
Ya he comentado que podemos mostrar la información de uno o varios contenedores, de la siguiente manera:
$ docker stats dudle 32914ef36135
Los contenedores se pueden llamar por su nombre o por su ID
Si queremos formatear la salida, únicamente con la información que queramos, sería así:
$ docker stats --all --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" dudle 32914ef36135
Con el resultado:
CONTAINER CPU % MEM USAGE / LIMIT dudle 0.06% 6.543MiB / 3.852GiB 32914ef36135 0.00% 8.48MiB / 3.852GiB
Formateo de la información
Cuando se usa la opción --format
, el comando docker stats
genera los datos exactamente como declara la plantilla o, cuando se usa la directiva de tabla, también incluye encabezados de columna.
Posición | Descripción |
---|---|
.Container | Nombre del contenedor o su ID |
.Name | Nombre del contenedor |
.ID | ID del contenedor |
.CPUPerc | Porcentaje de CPU |
.MemUsage | Memoria utilizada |
.NetIO | IO de la red |
.BlockIO | Block IO |
.MemPerc | Porcentaje de memoria |
.PIDs | Número de PIDs |
Para más información os recomiendo la página de la herramienta, ubicada en la web de Docker
Si queréis obtener información mas vistosa, con información histórica correspondiente, podéis consultar la entrada que escribí en su día:
Controlar Docker Swarm con Telegraf, InfluxDB y Grafana
Y esto es todo. Espero que esta información os pueda ser de utilidad en algún momento. Nos vamos leyendo.