Configuración de Docker en producción: Logging

Una de las herramientas principales para un administrador de sistemas o hasta para el desarrollador son los logs, por este motivo es necesario contar algunas configuraciones esenciales para llevar a cabo este fin.

Un error típico en la configuración de docker es que en determinado momento los logs ocupan todo el disco de la máquina y es necesario eliminar el docker o vaciar su archivo de logs.

Se puede encontrar la ubicación de los logs con el siguiente comando y posteriormente vaciar su contenido:

docker inspect name | grep LogPath
> /var/lib/docker/containers/xxxxxx-json.log

Nota: He tenido casos que estos archivos llegan a tener teras de información

A continuación explicaré algunos drivers:

Json-file

Envía los logs a stdoutput en formato Json.

  • max-size: El máximo tamaño que tiene el archivo de logs, puede utilizarse en términos de (k, m o g), equivale a (KB, MB o GB) respectivamente. --log-opt max-size=10m
  • max-file: Define el máximo número de archivos que existiran para los logs. --log-opt max-file=3

Ejemplo:

docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

Gelf

Si deseamos utilizar una arquitectura como ELK[1], podríamos conectar nuestros dockers con Logstash, definiendo un input tipo Gelf[1:1] y configurando el driver con las siguiente opción:

  • gelf-address: Dirección remota del Gelf server. --log-opt gelf-address=udp://192.168.0.42:12201

Ejemplo:

docker run -dit --log-driver=gelf --log-opt gelf-address=udp://192.168.0.42:12201 alpine sh

Gcplogs

Este es el driver para registrar información con Google Compute, se puede utilizar siempre y cuando se estén utilizando sus servicios y no necesita una configuración especial, simplemente definir el nombre del proyecto:

  • gcp-project: Nombre de proyecto en Google compute.

Ejemplo:

docker run --log-driver=gcplogs \
    --log-opt gcp-log-cmd=true \
    --env "TEST=false" \
    --label location=west \
    your/application \

Todos los logs quedarán almacenados en el visor de registros de la consola de Google.

Exiten bastantes tipos más de drivers de logging, toda esta información se encuentra muy detallada en la página oficial de docker. [1:2]


  1. Docker Logging ↩︎ ↩︎ ↩︎

Juan Pablo Arias

I constantly discover new technologies and ways to improve IT processes. I'm a fan of automation. I like programming, but my passion is cloud computing.