Cómo habilitar y configurar el registro de errores de Apache y el registro de acceso en Linux

27 feb 2021 6 min di lettura
Cómo habilitar y configurar el registro de errores de Apache y el registro de acceso en Linux
Indice dei contenuti

Introducción

Apache es un servidor HTTP multiplataforma de código abierto. Tiene muchas características poderosas 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 registros es muy útil a la hora de solucionar problemas del servidor o la aplicación, ya que proporcionan información de depuración detallada.

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

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

Si desea habilitar el registro de errores de Apache y los archivos de registro de acceso en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Configurar registros 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 información diversa sobre el cliente y el recurso solicitado. Los registros de acceso muestran dónde están los visitantes, qué página visitan, cuánto tiempo pasan en la página y más.

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

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

CustomLog log_file format [condition];

El Log_file puede ser relativo a ServerRoot o una ruta completa al archivo de registro. Los mensajes de registro también se pueden redirigir a otro programa mediante el símbolo de barra vertical |.

El segundo argumento, format, especifica el formato de los mensajes de registro. Puede ser una definición de formato explícita o un apodo definido por la directiva LogFormat

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, prefiere definir la LogFormat y usarla como apodo en la directiva CustomLog

Para obtener una lista completa de todas las cadenas y modificadores de formato, 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. Normalmente, esto se hace mediante variables de entorno. La condición se puede cancelar con el símbolo !.

Por ejemplo, si desea excluir las solicitudes de archivos CSS para que no se escriban en el archivo de registro, utilice 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 LogFormat o anular el formato predeterminado. Por lo general, es mejor definir un formato nuevo.

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 esto, simplemente comente o elimine la CustomLog de la configuración del servidor principal y las secciones del servidor virtual.

Si desea deshabilitar el registro de acceso solo para un host virtual, establezca el primer argumento de la directiva CustomLog /dev/null:

CustomLog /dev/null combined

Configurar el registro de errores

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

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

ErrorLog log_file

Si la ruta a log_file no es absoluta, se establece en relación con ServerRoot. Los mensajes de error también se pueden enviar a otro programa mediante el símbolo de barra vertical |.

El LogLevel establece el nivel de registro. Los niveles enumerados por gravedad (de menor a mayor) se enumeran a continuación:

  • trace1 - trace8 - Mensajes de seguimiento.
  • debug: depurar mensajes.
  • info: mensajes de información.
  • notice - Avisos.
  • warn - Advertencias.
  • error: errores al procesar una solicitud.
  • crit - Problemas críticos. Requiere una acción rápida.
  • 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 más altos. Por ejemplo, si configura el nivel de registro de warn, Apache también escribe mensajes de error, crit, alert y emerg

Cuando no se especifica el parámetro LogLevel warn. Se recomienda establecer al menos el nivel crit

La ErrorLogFormat especifica el formato del archivo de registro de errores de Apache. En la mayoría de las distribuciones de Linux, el servidor Apache usa 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 del archivo se pueden configurar globalmente o por host virtual.

Luego, las CustomLog o ErrorLog se 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 en un <VirtualHost>, solo los mensajes de registro para ese host virtual se escriben en el archivo especificado.

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

Los hosts virtuales sin CustomLog o directivas ErrorLog tendrán sus mensajes de registro escritos en los registros del servidor global.

Para una mejor legibilidad, se recomienda que configure archivos de registro de errores y accesos separados para cada host virtual. Aquí hay un ejemplo:

<VirtualHost *:80>
 ServerName esempio.it
 ServerAlias www.esempio.it
 ServerAdmin [email protected]
 DocumentRoot /var/www/esempio.it/public
 LogLevel warn
 ErrorLog /var/www/esempio.it/logs/error.log
 CustomLog /var/www/esempio.it/logs/access.log combined
 </VirtualHost>

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

Ubicación de los registros de archivos

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

Leer y comprender los registros de archivos 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 muestra del archivo de registro de acceso que usa el combine

192.168.22.22 - - [26/Jan/2020:20:19:02 +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"

Analicemos lo que significa cada campo del registro:

  • %h - 192.168.22.22: 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 - [26/Jan/2020:20:19:02 +0000] - Hora del servidor local.
  • \"%r\" - "GET /HTTP/1.1" - Primera línea de la solicitud. Tipo de solicitud, ruta y protocolo.
  • %>s - 200 - El código de respuesta del servidor final. Si > y la solicitud se ha redirigido internamente, mostrará el estado de la solicitud original.
  • %O - 396: 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 para ver el archivo de registro en tiempo real:

tail -f access.log

Conclusión

Los registros de archivos brindan información útil sobre 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 errores para satisfacer sus necesidades.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.