La imagen oficial de nginx docker (Dockerfile) utiliza el siguiente truco para transferir sus registros a stdout y stderr para que sean capturados por el recopilador de registros de docker y visibles mediante docker logs <container-name>
:
# forward request and error logs to docker log collectorRUN ln -sf /dev/stdout /var/log/nginx/access.logRUN ln -sf /dev/stderr /var/log/nginx/error.log
Quiero hacer lo mismo, sin embargo tengo supervisor como PID 1 en mi contenedor y supervisa el proceso nginx y captura stdout y stderr y lo coloca en su propio archivo de registro. Por lo tanto, los registros no llegan al recopilador de registros de docker.
Aquí está el bloque relevante en mi supervisor.conf
[program:nginx]command=/usr/sbin/nginx -g "daemon off;"priority=990; NOTE: We do not want to redirect stdout and stderr of a nginx process to a logfile because we want docker log collector to get them.stdout_logfile= NOT SURE WHAT TO PUT HERE?stderr_logfile= NOT SURE WHAT TO PUT HERE?username=www-dataautorestart=true
Los documentos del supervisor son geniales (http://supervisord.org/configuration.html) pero para stdout_logfile
no me dan la respuesta que necesito, a saber, cómo configuro supervisord para que no intercepte una salida estándar / stderr de procesos ( o para capturar en un archivo de registro, pero también para reenviar a la salida estándar / stderr normal).
Lo que ya intenté:
-
stdout_logfile=NONE
- No obtiene registros ni de salida estándar ni de un archivo -
stdout_logfile=/var/log/supervisor/%(program_name)s.log
- Obtener registros en un archivo pero no en la salida estándar. - Sin definir
stdout_logfile
- Obtener registros en un archivo con nombre aleatorio, pero no en la salida estándar. -
stdout_logfile=/dev/stdout
- El supervisor da un error:>CRIT uncaptured python excepción, el cierre de canal (stdout) (:[Errno 29] Ilegales buscar [/usr/lib/python2.7/seguidores-paquetes/supervisor/supervisord.py|runforever|233] [/usr/lib/python2.7/seguidores-paquetes/supervisor/repartidores.py|handle_read_event|231] [/usr/lib/python2.7/seguidores-paquetes/supervisor/repartidores.py|record_output|165] [/usr/lib/python2.7/seguidores-paquetes/supervisor/repartidores.py|_log|141] [/usr/lib/python2.7/seguidores-paquetes/supervisor/ - madereros.py|info|273] [/usr/lib/python2.7/seguidores-paquetes/supervisor/ - madereros.py|log|291] [/usr/lib/python2.7/seguidores-paquetes/supervisor/ - madereros.py|comprado|186] [/usr/lib/python2.7/seguidores-paquetes/supervisor/ - madereros.py|doRollover|195])