La opción logging
en Docker Compose permite configurar la captura y gestión de logs generados por los contenedores. Con esta configuración, puedes especificar el controlador de logs y personalizar opciones como el tamaño máximo de los archivos de log y la rotación. Docker ofrece varios controladores de logging, como json-file
, syslog
, journald
, awslogs
, entre otros.
logging
en Docker Compose
Para definir la configuración de logs en un servicio, utiliza la opción logging
dentro del archivo docker-compose.yml
.
logging
En el siguiente ejemplo, configuramos el servicio web
para que use el controlador de log json-file
(controlador predeterminado de Docker) y limitamos el tamaño de los logs.
version: '3.8'
services:
web:
image: nginx
ports:
- "8080:80"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
json-file
guarda los logs en archivos JSON.
Docker admite diferentes controladores de logging que puedes especificar en el campo driver
. Algunos de los controladores más comunes son:
Controlador | Descripción |
---|---|
json-file
|
Almacena los logs en archivos JSON en el host (controlador predeterminado). |
syslog
|
Envía los logs al sistema de logs syslog del host o de otro servidor remoto.
|
journald
|
Almacena los logs en journald (en sistemas que usan systemd ).
|
awslogs
|
Envía los logs a Amazon CloudWatch Logs. |
gcplogs
|
Envía los logs a Google Cloud Logging. |
fluentd
|
Envía los logs a un servidor fluentd , que permite un procesamiento avanzado de logs.
|
splunk
|
Envía los logs a Splunk. |
Cada controlador tiene diferentes opciones que puedes configurar según tus necesidades.
syslog
Si deseas enviar los logs del contenedor al sistema syslog
de tu host (o a otro servidor remoto), puedes hacerlo con el controlador syslog
:
version: '3.8'
services:
app:
image: my_app_image
logging:
driver: "syslog"
options:
syslog-address: "tcp://192.168.1.10:514"
tag: "my_app_service"
En este ejemplo:
awslogs
Para enviar los logs a Amazon CloudWatch, utiliza el controlador awslogs
y especifica los detalles de configuración de AWS:
version: '3.8'
services:
backend:
image: my_backend_image
logging:
driver: "awslogs"
options:
awslogs-region: "us-west-2"
awslogs-group: "/my-app/backend"
awslogs-stream: "app-log"
En este caso:
logging
max-size
y max-file
en json-file
es importante para evitar el uso excesivo de espacio en disco.
syslog
, fluentd
, awslogs
, o gcplogs
.
awslogs
y gcplogs
pueden generar costos adicionales según la cantidad de datos enviados y almacenados.
Para más detalles sobre logging
en Docker Compose y los controladores disponibles, consulta la documentación oficial de Docker Compose.
Jorge García
Fullstack developer