Recién estoy comenzando con Docker y richt, ahora estoy tratando de descubrir cómo configurar mi primer entorno Apache 2 / PHP dockerizado. Hasta ahora he estado usando máquinas virtuales Linux completas, donde usé archivos de registro que se escriben en / var / log / apache2, luego uso "logrotate" para saltar a un nuevo archivo cada día.
Los archivos de registro se utilizaron principalmente para la detección inmediata de errores (es decir, iniciar sesión en el servidor y usar menos para abrir los archivos actuales access.log y error.log) y para fail2ban.
Si estoy en lo cierto, eso no es posible en un entorno Docker, principalmente porque generalmente no puede iniciar sesión en los contenedores para echar un vistazo a los registros. También se perderán registros si se retira el contenedor.
Entonces: ¿Cuál es el método más común para trabajar con / emular / reemplazar access.log / error.log en esa situación? ¿Cuáles son las soluciones comunes para los entornos de producción y desarrollo?
Mis ideas hasta ahora incluyen el uso de un recurso compartido NFS (lento y puede causar colisiones de nombre de archivo si no es cuidadoso), y logstash (¿no estoy seguro de si vale la pena el esfuerzo y es factible para sitios más pequeños o incluso entornos de desarrollo?) Pero estoy seguro de que las personas inteligentes ¿Has encontrado mejores soluciones?
No estoy seguro si hace la diferencia, pero actualmente estoy basando mi imagen de Docker en php: 5.6-apache .
fuente
docker attach <container name>
es la buena manera de ver stdout desde su contenedor. Pero tenga en cuenta que si hace ctrl + d o ctrl + c, TERMINARÁ (sigkill) su tarea en curso. Por lo tanto, debe separarlo correctamente utilizando la tecla de escapectrl+p+q
. Si solo quieres usar shell en tu contenedor, prefiero usar elexec
comando anterior.¿Qué tal escribir acceso y registro de errores en stderr y stdout?
https://mail-archives.apache.org/mod_mbox/httpd-users/201508.mbox/%3CCABx2=D-wdd8FYLkHMqiNOKmOaNYb-tAOB-AsSEf2p=ctd6sMdg@mail.gmail.com%3E
https://gist.github.com/afolarin/a2ac14231d9079920864
Sin embargo, el registro centralizado con ELK permitiría un monitoreo más proactivo. Pero ya pensaste en eso tú mismo.
fuente
Hasta ahora he encontrado que se mencionan varias veces " registros de la ventana acoplable ".
Soy un absoluto Docker newb, por lo que podría contener la solución a mi problema, pero hasta ahora no he entendido completamente el concepto detrás de ese comando.
Docker parece mantener todos los resultados estándar en archivos JSON en / var / lib / docker / container / y me da la oportunidad de acceder a ellos a través del comando logs.
Hasta ahora no estoy seguro de cómo usar realmente la salida.
fuente
Tal vez esta característica no existía cuando se hizo la pregunta, pero con el argumento run -v puede montar un directorio en el host en un directorio en el contenedor.
De esta manera, los archivos de registro (u otros) sobrevivirán cuando se elimine el contenedor y puede acceder a los archivos como si apache estuviera instalado en el host en lugar de en un contenedor.
Alternativamente, podría de alguna manera enviar archivos de registro modificados a una ubicación central. La pila de Kibana usa filebeat para lograr esto, pero debería ser posible ejecutar filebeat de forma independiente si no le importa el resto de la pila.
fuente
la imagen de Docker que elegí solo vinculaba todos los archivos * .log a / dev / stdout y / dev / stderr, por lo que no pude leerlos.
Después de eliminar los archivos y reiniciar Apache, puedo obtener los registros de / var / log / en la ventana acoplable.
fuente
En el archivo de configuración de apache puede agregar:
CustomLog / dev / stdout
ErrorLog / dev / stderr
y para ver los registros use el siguiente comando:
registros de docker container_id
fuente