Cómo analizar e interpretar el registro del servidor web Apache
Los servidores web Apache pueden generar muchos registros. Estos registros contienen información como las solicitudes HTTP que Apache ha manejado y respondido, y otras actividades específicas de Apache. Analizar los registros es una parte importante de la administración de Apache y garantizar que se ejecute como se espera.
En esta guía, repasaremos las diferentes opciones de registro presentes en Apache y cómo interpretar estos datos de registro. Aprenderá cómo analizar los registros que produce Apache y cómo configurar los ajustes de registro para brindarle los datos más relevantes sobre lo que está haciendo Apache.
En este tutorial aprenderás:
Configurar y comprender el registro del servidor web Apache
¿Qué son los niveles de registro de Apache?
-
Cómo interpretar el formato de registro de Apache y su significado
¿Cuáles son los archivos de configuración de registros de Apache más comunes?
Cómo ampliar la configuración de registro para incluir datos forenses
Cómo analizar e interpretar el registro del servidor web Apache
Archivos de registro de Apache y su ubicación
Apache produce dos archivos de registro diferentes:
access.log almacena información sobre todas las solicitudes de conexión entrantes a Apache. Cada vez que un usuario visite su sitio web, quedará registrado aquí. Cada página que solicite un usuario también se registrará como una entrada separada.
error.log almacena información sobre los errores que Apache encuentra durante su funcionamiento. Idealmente, este archivo debería permanecer relativamente vacío.
Configuración de registro predeterminada de Apache en el servidor Ubuntu Linux
La ubicación de los archivos de registro puede depender de la versión de Apache que esté ejecutando y de la distribución de Linux en la que se encuentre. Apache también se puede configurar para almacenar estos archivos en alguna otra ubicación no predeterminada.
Pero, de forma predeterminada, debería poder encontrar los registros de acceso y errores en uno de estos directorios:
/var/log/apache/
/var/log/apache2/
/etc/httpd/logs/
Formato de registro de Apache
Apache le permite personalizar qué información se registra y cómo se presenta cada entrada del registro, lo cual cubriremos más adelante en este tutorial.
El formato habitual que sigue Apache para presentar las entradas del registro es:
"%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""
A continuación se explica cómo interpretar este formato:
%h: la dirección IP del cliente.
%l: este es el 'identd' del cliente, que se utiliza para identificarlo. Este campo suele estar vacío y se presenta como un guión.
-
%u: el ID de usuario del cliente, si se utilizó la autenticación HTTP. De lo contrario, la entrada del registro no mostrará nada para este campo.
%t: marca de tiempo de la entrada del registro.
\%r\: la línea de solicitud del cliente. Esto mostrará qué método HTTP se utilizó (como GET o POST), qué archivo se solicitó y qué protocolo HTTP se utilizó.
%>s: el código de estado que se devolvió al cliente. Los códigos 4xx (como 404, página no encontrada) indican errores del cliente y los códigos 5xx (como 500, error interno del servidor) indican errores del servidor. Otros números deben indicar éxito (como 200, OK) o algo así como redirección (como 301, movido permanentemente).
%O: el tamaño del archivo (incluidos los encabezados), en bytes, que se solicitó.
\”%{Referer}i\”: el enlace de referencia, si corresponde. Esto le indica cómo el usuario navegó a su página (ya sea desde un enlace interno o externo).
\”%{User-Agent}i\”: contiene información sobre el navegador web y el sistema operativo del cliente que se conecta.
Una entrada típica en el registro de acceso se verá así:
10.10.220.3 - - [17/Dec/2019:23:05:32 -0500] "GET /products/index.php HTTP/1.1" 200 5015 "http://example.com/products/index.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
El registro de errores es un poco más sencillo y fácil de interpretar. Así es como podría verse una entrada típica:
[Mon Dec 16 06:29:16.613789 2019] [php7:error] [pid 2095] [client 10.10.244.61:24145] script '/var/www/html/settings.php' not found or unable to stat
Esta es una buena manera de ver cuántos errores 404
encuentran sus visitantes y puede indicarle algunos enlaces inactivos en su sitio. Más importante aún, puede alertarle sobre recursos faltantes o posibles problemas con el servidor. El ejemplo anterior muestra una página *.php
que se solicitó pero falta.
Configuración del registro de Apache
El registro de Apache es altamente personalizable y se puede ajustar desde un par de archivos de configuración. En Ubuntu y Debian, el archivo de configuración principal para el registro de Apache se encuentra aquí:
/etc/apache2/apache2.conf
Dado que puede ejecutar varios sitios web (denominados Hosts virtuales
) desde una única instancia de Apache, también puede configurar cada uno de ellos para que tenga registros de acceso y errores independientes. Para definir cómo se deben nombrar estos archivos de registro separados y dónde guardarlos, configure este archivo:
/etc/apache2/sites-available/000-default.conf
En CentOS, RHEL y Fedora, los dos archivos de configuración se encuentran, respectivamente, en estas ubicaciones:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/ (coloque configuraciones adicionales de VirtualHost en este directorio)
Directivas de registro
Hay bastantes directivas diferentes que se pueden configurar dentro de estos archivos, pero estas son las principales por las que debe preocuparse si desea personalizar el registro de Apache:
CustomLog: define dónde se almacena el archivo de registro de acceso.
ErrorLog: define dónde se almacena el archivo de registro de errores.
LogLevel: define la gravedad que debe tener un evento para poder registrarlo (lea a continuación para obtener más información).
LogFormat: define cómo se debe formatear cada entrada en el registro de acceso (lea a continuación para obtener más información).
LogLevel está configurado en warn
de forma predeterminada, lo que significa que escribirá en el registro de errores en condiciones de advertencia o eventos más graves. Si su registro de errores se está llenando de mensajes de advertencia inofensivos, puede aumentarlo a error
, que solo informará errores o problemas más graves.
Otras opciones incluyen (en orden de gravedad) crit
, alert
y emerg
. Apache recomienda utilizar un nivel mínimo de crítico. Para fines de depuración, puede configurar temporalmente LogLevel en debug
, pero tenga en cuenta que puede terminar con una cantidad difícil de manejar de entradas en su registro de errores.
LogFormat le permite ajustar el aspecto de las entradas dentro del registro de acceso. Si la entrada de ejemplo en access.log
(de la sección de formato de registro de Apache anterior) le parece un poco confusa, no está solo. Apache le permite personalizar el formato de las entradas del registro, para que pueda configurarlas de una manera más lógica. También puede utilizar esta personalización para excluir cierta información que pueda resultarle irrelevante.
Módulos de registro de Apache
La configuración de registro que hemos mostrado en esta guía hasta ahora pertenece al módulo Apache mod_log_config
. Para ampliar aún más la funcionalidad de registro, puede cargar otros módulos de registro en Apache. Esto puede proporcionar algunas capacidades más que no están disponibles con la configuración predeterminada.
mod_log_forensic comienza a registrar antes de una solicitud (cuando se reciben los encabezados por primera vez) y vuelve a registrar después de la solicitud. Eso significa que se crean dos entradas de registro para cada solicitud, lo que permite al administrador medir los tiempos de respuesta con mayor precisión.
Defina la ubicación de su registro forense con la directiva CustomLog
. Por ejemplo:
CustomLog ${APACHE_LOG_DIR}/forensic.log forensic
mod_logio registra el número de bytes enviados y recibidos de cada solicitud. Proporciona información muy precisa porque también cuenta los datos presentes en el encabezado y el cuerpo de cada solicitud, así como los datos adicionales que se requieren para las conexiones cifradas SSL/TLS.
Agregue los marcadores de posición %I
y O%
a la directiva LogFormat
para hacer uso de los datos adicionales proporcionados por este módulo. Existen otros módulos; estos son sólo dos de los más útiles.
Conclusión
En este artículo vimos cómo analizar e interpretar los registros de acceso y errores de Apache. También aprendimos cómo personalizar el registro en los archivos de configuración de Apache para que los datos del registro sean más relevantes. Armado con este conocimiento, podrá aislar problemas más rápidamente y solucionar problemas con Apache.
Recuerde que la funcionalidad de registro de Apache se puede ampliar aún más a través de otros módulos de registro, aunque esto sólo es necesario en casos extremos que requieren una depuración avanzada.