Apache es un servidor HTTP de código abierto y multiplataforma. Tiene muchas funciones potentes que se pueden ampliar con una amplia variedad de módulos. Al administrar servidores web Apache, una de las tareas más frecuentes que realizará es verificar los archivos de registro.

Saber cómo configurar y leer los registros es muy útil para solucionar problemas del servidor o de la aplicación, ya que proporcionan información detallada sobre la depuración.

Apache escribe registros de sus eventos en dos tipos de registros: registros de acceso y registros de errores. Los registros de acceso incluyen información sobre solicitudes de clientes e información de registros de errores sobre el servidor y los problemas de la aplicación.

Este artículo describe cómo configurar y leer los registros de error y acceso de Apache.

Configuración del registro de acceso

El servidor web Apache genera un nuevo evento en el registro de acceso para todas las solicitudes procesadas. Cada registro de evento contiene una marca de tiempo e incluye diversa información sobre el cliente y el recurso solicitado. Los registros de acceso muestran la ubicación de los visitantes, la página que visitan, cuánto tiempo pasan en la página y mucho más.

La CustomLog directiva define la ubicación del archivo de registro y el formato de los mensajes registrados.

La sintaxis más básica de la CustomLogdirectiva es la siguiente:

CustomLog log_file format [condition];

log_filePuede ser relativo a o una ruta ServerRootcompleta al archivo de registro. Los mensajes de registro también se pueden canalizar a otro programa utilizando el símbolo de canalización |.

El segundo argumento formatespecifica el formato de los mensajes de registro. Puede ser una definición de formato explícita o un apodo definido por la LogFormatdirectiva.

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access.log combined
CustomLog logs/access.log "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""

Para evitar repetir el mismo código varias veces, prefiera definir la LogFormatdirectiva y usarla como apodo en la CustomLogdirectiva.

Para obtener una lista completa de todas las cadenas de formato y modificadores, consulte la documentación del módulo "mod_log_config" .

El tercer argumento [condition]es opcional y le permite escribir mensajes de registro solo cuando se cumple una condición específica. Por lo general, esto se hace usando variables de entorno. La condición se puede negar con el !símbolo.

Por ejemplo, si desea excluir solicitudes de archivos css para que se escriban en el archivo de registro, usaría lo siguiente:

SetEnvIf Request_URI \.css$ css-file
CustomLog logs/access.log custom env=!css-file

Para cambiar el formato de registro, puede definir una nueva LogFormatdirectiva o anular el formato predeterminado. Por lo general, es mejor definir un nuevo formato.

Si bien el registro de acceso proporciona información muy útil, ocupa espacio en el disco y puede afectar el rendimiento del servidor. Si su servidor tiene pocos recursos y tiene un sitio web ocupado, es posible que desee deshabilitar el registro de acceso.

Para hacer eso, simplemente comente o elimine la CustomLogdirectiva de la configuración del servidor principal y las secciones del servidor virtual.

Si desea desactivar el registro de acceso solo para un host virtual, establezca el primer argumento de la CustomLogdirectiva en /dev/null:

CustomLog /dev/null combined

Configuración del registro de errores

Apache escribe mensajes sobre la aplicación y los errores generales del servidor en el archivo de registro de errores. Si experimenta errores en su aplicación web, el registro de errores es el primer lugar para comenzar a solucionar problemas.

La ErrorLogdirectiva define la ubicación del nombre del registro de errores. Toma la siguiente forma:

ErrorLog log_file

Si la ruta al log_fileno es absoluta, se establece como relativa al ServerRootLos mensajes de error también se pueden canalizar a otro programa utilizando el símbolo de canalización |.

El LogLevelparámetro establece el nivel de registro. A continuación se enumeran los niveles por su gravedad (de menor a mayor):

  • trace1trace8- Seguimiento de mensajes.
  • debug- Mensajes de depuración.
  • info- Mensajes informativos.
  • notice- Avisos.
  • warn- Advertencias.
  • error- Errores al procesar una solicitud.
  • crit- Cuestiones críticas. Requiere una acción inmediata.
  • alert- Alertas. Se deben tomar medidas de inmediato.
  • emerg- Situación de emergencia. El sistema está en un estado inutilizable.

Cada nivel de registro incluye los niveles superiores. Por ejemplo, si establece el nivel de registro en warn, Apache también escribe los mensajes errorcritalerty .emerg

Cuando LogLevelno se especifica el parámetro, el valor predeterminado es warnSe recomienda establecer el nivel en al menos crit.

La ErrorLogFormatdirectiva especifica el formato del registro de errores. En la mayoría de las distribuciones de Linux, el servidor Apache utiliza el formato predeterminado, que es suficiente para la mayoría de los casos.

Hosts virtuales y registro global

El comportamiento de registro y la ubicación de los archivos se pueden configurar globalmente o por host virtual.

Luego, las directivas CustomLogErrorLogse establecen en el contexto del servidor principal, el servidor escribe todos los mensajes de registro en los mismos archivos de registro de acceso y error. De lo contrario, si las directivas se colocan dentro de un <VirtualHost>bloque, solo los mensajes de registro para ese host virtual se escriben en el archivo especificado.

La directiva de registro establecida en el <VirtualHost>bloque anula la establecida en el contexto del servidor.

Los hosts virtuales sin directivas CustomLogErrorLogtendrán sus mensajes de registro escritos en los registros del servidor global.

Para una mejor legibilidad, se recomienda establecer archivos de registro de error y acceso separados para cada host virtual. Aquí hay un ejemplo:

<VirtualHost *:80>
     ServerName example.com
     ServerAlias www.example.com
     ServerAdmin webmaster@example.com
     DocumentRoot /var/www/example.com/public
     LogLevel warn
     ErrorLog /var/www/example.com/logs/error.log
     CustomLog /var/www/example.com/logs/access.log combined
</VirtualHost>

Siempre que modifique el archivo de configuración, debe reiniciar el servicio Apache para que los cambios surtan efecto.

Ubicación de los archivos de registro

De forma predeterminada, en las distribuciones basadas en Debian , como Ubuntu , los registros de acceso y error se encuentran en el /var/log/apache2directorio. En CentOS , los archivos de registro se colocan en el /var/log/httpddirectorio.

Lectura y comprensión de los archivos de registro de Apache

Los archivos de registro se pueden abrir y analizar mediante comandos estándar como cat , less , grep , cut , awk , etc.

Aquí hay un registro de ejemplo del archivo de registro de acceso que usa el combineformato de registro de Debian:

192.168.33.1 - - [08/Jan/2020:21:39:03 +0000] "GET / HTTP/1.1" 200 6169 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"

Desglosemos lo que significa cada campo del registro:

  • %h192.168.33.1- El nombre de host o la dirección IP del cliente que realiza la solicitud.
  • %l-- Nombre de registro remoto. Cuando no se establece el nombre de usuario, este campo muestra -.
  • %u-- Si la solicitud está autenticada, se muestra el nombre de usuario remoto.
  • %t[08/Jan/2020:21:39:03 +0000]- Hora del servidor local.
  • \"%r\""GET / HTTP/1.1"- Primera línea de solicitud. El tipo de solicitud, la ruta y el protocolo.
  • %>s200- El código de respuesta final del servidor. Si >no se utiliza el símbolo y la solicitud se ha redirigido internamente, mostrará el estado de la solicitud original.
  • %O396- El tamaño de la respuesta del servidor en bytes.
  • \"%{Referer}i\""-"- La URL de la referencia.
  • \"%{User-Agent}i\"Mozilla/5.0 ...- El agente de usuario del cliente (navegador web).

Utilice el tail comando para ver el archivo de registro en tiempo real:

tail -f access.log 

Conclusión

Los archivos de registro le brindan información útil sobre los problemas del servidor y cómo los visitantes interactúan con su sitio web.

Apache tiene un sistema de registro muy configurable que le permite personalizar los registros de acceso y error según sus necesidades.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.