🏡Inicio | 🗃️ Secciones | ❓ Soporte | Producto:

IoT Gateway NG


https://youtu.be/94OG65LMsfE

Descripción

Gestionar los logs desde los servicios que tenemos corriendo dentro de un contenedor no es una buena idea. Lo ideal es lanzarlos dentro de la salida estándar y la salida de errores del contenedor. Dejando de la mano del contenedor la gestión de los logs.

Docker tiene una larga lista de drivers, para gestionar los logs. Para nuestro gateway de IoT lo que acostumbramos a usar cuando no hay una gestión centralizada de los mismos son ficheros de texto en el host.

Así pues, le diremos a docker que use el driver local. Es una buena idea configurar este driver para que haga la rotación de logs de forma automática y además limite la medida de los mismos a la medida que nos interese.

Otra idea interesante sería usar syslog o journalctl. Usando estos servicios genéricos de Linux para su gestión.

CLI

Como pasamos los parámetros vía linea de comandos:

docker run --log-driver local --log-opt max-size=10m --log-opt max-file=5 my-app:latest

docker-compose.yml

Usando fichero de configuración del contenedor:

services:
  app:
    image: IMAGE_NAME
    ...
    logging:
      driver: "local"
      options:
        max-file: "5"   # number of files or file count
        max-size: "10m" # file size
        compress: true

https://gist.githubusercontent.com/i40sys/4a71fc8895d383f0122fc2f3e99a2fb0/raw/bee0d9c0ceae47e10567d36cc93a550a99910f41/docker-compose.yml

/etc/docker/daemon.json

Configuración de docker para todos los contenedores:

{
   "live-restore" :true,  
   "log-driver" :"local",
     "log-opts": {
       "max-size" :"10m",
       "max-file" :"5",
       "compress" :"true"
      }
 }

https://gist.githubusercontent.com/i40sys/ea5d25b90517580229ade33e3a10f5d2/raw/31533b702877114e4f6ce81f4b25120ff66946fc/daemon.json

Reiniciar servicio docker después de modificar el fichero de configuración: