Apache Logging Basics (Español)

el registro de Apache registra los eventos que fueron manejados por el servidor Web Apache, incluidas las solicitudes de otros equipos, las respuestas enviadas por Apache y las acciones internas del servidor Apache. Esta sección de la guía explica los conceptos básicos del registro de Apache, incluidos los tipos de registros generados por Apache, dónde se almacenan y cómo interpretarlos. También cubriremos temas avanzados como la configuración de formatos de registro personalizados y la configuración de módulos para obtener datos más ricos.,

tipos de registros de Apache

Apache genera dos tipos de Registros: Registros de acceso y registros de errores.

registro de acceso

el registro de acceso contiene información sobre las solicitudes que llegan al servidor web. Esta información puede incluir qué páginas están viendo las personas, el estado de éxito de las solicitudes y el tiempo que el servidor tardó en responder. Este es un ejemplo de una entrada típica de registro de acceso:

registro de errores

el registro de errores contiene información sobre los errores que el servidor web encontró al procesar solicitudes, como archivos faltantes., También incluye información de diagnóstico sobre el propio servidor. Aquí hay un ejemplo de registro de errores:

 File does not exist: /var/www/favicon.ico

ubicaciones de Registro

de forma predeterminada, Apache almacena los registros de acceso y errores en archivos separados en el servidor. La ubicación exacta depende de su sistema operativo., Puede encontrar la ubicación de su sistema operativo haciendo clic en los siguientes enlaces:

Debian/Ubuntu/Linux Mint
Redhat/Fedora/CentOS Configuration
OpenSUSE

Configuring Apache Logs

Apache tiene un marco de registro altamente configurable que le permite ajustar el comportamiento de registro globalmente o para cada host virtual. Hay varias directivas que puede usar para cambiar el comportamiento de registro. Algunas de las directivas más comunes son las directivas log level y log format, que explicaremos con mayor detalle.,

Directiva de nivel de Registro

la directiva LogLevel determina el nivel mínimo de gravedad de los eventos que se registran en un destino específico. El nivel de gravedad representa la importancia del evento y puede variar de» Emerg «a» Trace8″, con» Emerg «representando eventos que pueden conducir a inestabilidad, y» Trace8 » representando mensajes a nivel de seguimiento. Por ejemplo, LogLevel crit permitirá registros con severidad» Crit»,» Alert «y» Emerg», pero ignorará todos los demás niveles.,

formato de Registro

la directiva LogFormat controla el diseño y el formato de los eventos de registro. Apache utiliza el formato de registro común (CLF) de forma predeterminada, pero puede especificar su propia cadena de formato para cambiar los campos incluidos en cada registro.

También puede usar la directiva CustomLog para cambiar la ubicación del archivo de registro. En Linux, Apache normalmente escribe registros en los directorios/var/log /apache2 o/var/log / httpd dependiendo de su sistema operativo y de las anulaciones del Host Virtual., También puede definir una cadena LogFormat después del nombre del archivo, que solo aplicará la cadena de formato a este archivo.

por ejemplo, la siguiente configuración escribe registros en logs/access_log utilizando el formato estándar «común». El Subdirectorio logs / es relativo al directorio especificado en la directiva ServerRoot:

LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access_log" common

CustomLog «logs/access_log» common

Puede encontrar una lista completa de campos en la documentación de Apache log., Recomendamos usar al menos los siguientes cinco campos, ya que son importantes para monitorear el estado del servidor y para solucionar problemas:

  1. %>s – el código de estado HTTP para la solicitud. Esto muestra el estado final de la solicitud después de cualquier redirección interna; para el estado original, use %S.
  2. %U – la ruta de URL solicitada, excluyendo cualquier parámetro de URL adicional, como una cadena de consulta.
  3. %a – La dirección IP del cliente que hace la petición., Esto es útil para identificar el tráfico de una fuente en particular.
  4. %T – cuánto tiempo tomó procesar la solicitud en segundos. Esto es útil para medir la velocidad de su sitio. Utilice %D para realizar la misma medición en microsegundos.
  5. %{UNIQUE_ID}e – también conocido como el ID de solicitud, esto registra un identificador único con cada solicitud. Esto es útil para rastrear una solicitud de Apache a su servidor de aplicaciones web.,

asignar apodos

LogFormata las cadenas se les pueden asignar apodos, que luego puede usar con una directiva CustomLog para escribir registros utilizando el formato especificado. Esto le permite utilizar el mismo formato de registro para varios archivos de registro sin tener que redefinir el formato cada vez. Esto es particularmente útil cuando se utilizan diferentes archivos de registro para varios hosts virtuales.

por ejemplo, vamos a crear un formato de ejemplo y nombrarlo » vhost_combined.,»Luego crearemos una directiva CustomLog que escribe registros en un archivo usando el formato vhost_combined.

LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combinedCustomLog /var/log/apache2/vhost.log vhost_combined

formatear como JSON

almacenar sus registros como texto sin formato los hace fáciles de escanear en caso de que alguna vez necesite leer sus archivos de registro. Sin embargo, esto dificulta el uso de herramientas como las soluciones de administración de registros para leer los registros, ya que estas herramientas deben saber cómo se formatean los registros. La mayoría de las soluciones de administración de Registros admiten el formato de registro predeterminado de Apache, pero si no, debe considerar el uso de un formato estructurado como JSON.,

JSON (abreviatura de JavaScript Object Notation) es un formato flexible para almacenar datos estructurados. JSON almacena una colección de pares de nombre/valor anidables, lo que le permite almacenar casi cualquier tipo de datos y estructura. JSON también se documenta automáticamente, ya que el nombre de la clave describe los datos que contiene. JSON admite muchos tipos de datos básicos, incluidos strings, numbers, booleanos, arrays y valores null.,

Aquí hay un ejemplo de un LogFormat que almacena registros en formato JSON:

LogFormat "{ \"time\":\"%t\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"request\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }"

las anulaciones predeterminadas de Host Virtual

Los host virtuales (vhost) se utilizan para ejecutar más de un sitio web en un solo servidor Apache. Puede definir una configuración de registro independiente para cada vhost, a la que se da prioridad sobre la configuración de registro global. Esto le permite registrar cada sitio web en un directorio separado, por ejemplo. Dejar estos parámetros por defecto en la configuración de registro global.

por ejemplo, la siguiente configuración es para un ejemplo vhost at.,com. Los registros se escriben en archivos separados access.log y error.log en el directorio /var/www/example.com/logs:

las siguientes secciones muestran las ubicaciones y directivas predeterminadas de los archivos de configuración utilizados en diferentes distribuciones de Linux.

Debian/Ubuntu/Linux Mint

en las distribuciones basadas en Debian, la configuración vhost predeterminada para sitios no cifrados (puerto 80) se puede encontrar en/etc/apache2/sites-available/000-default.conf. La configuración predeterminada de vhost para sitios cifrados con SSL / TLS (puerto 443) es /etc/apache2/sites-available/default-ssl.conf.,

tabla de directivas predeterminadas

* variable de entorno condicionada. Proporciona soporte para múltiples instancias de servidor Apache.

** variable de entorno. Se utiliza para establecer dinámicamente la ruta de registro inicial.

Red Hat/Fedora/CentOS

en las distribuciones basadas en Red Hat, el archivo de configuración principal se encuentra en /etc/httpd/conf/httpd.conf. Puede colocar archivos de configuración vhost adicionales en el directorio /etc/httpd/conf.d, que el servidor lee automáticamente al iniciar.

tabla de directivas predeterminadas

* condicionada a log_config_module cargado.,

** condicionado por logio_module cargado.

OpenSUSE

en OpenSUSE, la configuración predeterminada de vhost para sitios sin cifrar (puerto 80) se encuentra en /etc/apache2/default-vhost.conf, mientras que la configuración predeterminada para sitios cifrados con SSL/TLS se encuentra en /etc/apache2/default-vhost-ssl.conf.

tabla de directivas predeterminadas

* condicionada a log_config_module cargado.

** condicionado por logio_module cargado.

*** condicionado por mod_ssl cargado.,

módulos relacionados con registros

El Servidor Web Apache ofrece una serie de módulos que cambian la forma en que Apache funciona o amplían su capacidad. Los siguientes módulos agregan o cambian el comportamiento de registro de maneras útiles.

mod_log_config

Este es el módulo de Registro base que usa Apache, y el que cubrimos en esta sección de la guía.

mod_log_debug

Este módulo proporciona opciones adicionales para registrar mensajes de depuración., Por ejemplo, puede registrar eventos en una ruta de URL específica, registrar solicitudes después de que se procesen, registrar mensajes de un cliente específico si resultan en tiempos de espera, y más. Tenga en cuenta que este módulo es experimental y puede que no esté incluido en su distribución de Apache.

por ejemplo, la siguiente configuración registra la dirección IP de un cliente cada vez que solicita una ruta específica:

mod_log_forensic

Este módulo habilita el registro antes y después de procesar una solicitud. A cada entrada se le asigna un ID único, que se puede usar para rastrear eventos entre el registro forense y el registro normal., Sin embargo, el registrador forense no admite formatos personalizados. Este módulo también reemplaza al módulo mod_unique_id.

una vez que el módulo está habilitado, puede usar la palabra clave forensic para especificar qué archivo de registro es el registro forense. También puede usar el patrón %{forensic-id} En otras cadenas LogFormat para agregar datos forenses a registros normales. Aquí, usamos /var/www/example.com/logs/forensic.log:

cada línea en el registro forense comienza con un carácter » + «o» -«., «+»indica la línea de registro de entrada para esta solicitud en particular, y» – » indica las entradas posteriores para la misma solicitud.

por ejemplo, el siguiente registro de entrada se generó llamando a http://localhost utilizando el formato de registro predeterminado:

la entrada de registro final de la misma solicitud aparece como:

-3264:55958cb4:0

Si una entrada final no aparece en el registro, la solicitud no se completó.

mod_logio

Este módulo agrega la capacidad de registrar el número de bytes enviados y recibidos por solicitud., Esto incluye bytes recibidos, enviados y transferidos (combinación de recibidos y enviados). El módulo también tiene en cuenta con precisión los cambios de tamaño debido al cifrado SSL y TLS. Este módulo requiere mod_log_config y normalmente se incluye en Apache por defecto.

Este módulo agrega la directiva LogIOTrackTTFB On|Off, que alterna la capacidad de rastrear el tiempo hasta el primer byte (TTFB). TTFB es la cantidad de tiempo desde que se recibe una solicitud hasta que la respuesta se envía por primera vez al cliente., A continuación, puede utilizar %^FB para incluir la medición TTFB en una cadena LogFormat.

mod_filter

Este módulo proporciona filtros sensibles al contexto a la cadena de salida mediante el registro de cualquier número de proveedores de filtros. mod_filter no es específico para el registro, pero permite extraer solicitudes específicas basadas en el proveedor del filtro. Los contenedores de contexto incluyen: configuración principal de apache, configuración de vhost, dentro de etiquetas de directorio, y .archivos htaccess.,

El uso de este módulo permite filtrar solicitudes que contienen elementos como ciertos criterios de inyección y de qué dirección IP proviene.

Este módulo se proporciona de forma predeterminada en muchas de las distribuciones de paquetes, pero puede requerir la habilitación. Para fines de registro, la directiva FilterTrace publica información en el registro de errores.,li> FilterDeclare – declara un filtro inteligente

  • FilterProtocol – hace que mod_filter maneje los encabezados de respuesta correctamente
  • FilterProvider – registra proveedores de filtros
  • FilterTrace – permite depurar/diagnosticar información a un registro de errores antes del procesamiento del proveedor
  • el siguiente ejemplo aplica el filtrado en un contenedor de contexto vhost condicionalmente en filter e incluye módulos:

    mod_unique_id:

    Este módulo construye una variable de entorno y un identificador único para cada solicitud., A menudo se incluye en las distribuciones de paquetes, pero puede requerir la habilitación. Este identificador único se escribe en el registro de acceso.

    Este módulo ha sido reemplazado por mod_log_forensic para fines forenses, pero sigue siendo compatible con otros.

    a diferencia del identificador forense, el identificador único se pasa al controlador de la aplicación a través de la variable de entorno UNIQUE_ID. Esto permite a los desarrolladores de aplicaciones rastrear una solicitud a través del servidor web hasta el servidor de aplicaciones. Puede ser útil para depurar una solicitud.,

    Apache desactiva los procesos secundarios para manejar las solicitudes, y una instancia secundaria procesa varias solicitudes a la vez. Como resultado, a veces es deseable usar un identificador único para identificar una sola solicitud en varias instancias de servidor y procesos secundarios.

    una vez activado, el módulo proporciona un Identificador por defecto al controlador de aplicaciones.,

    por ejemplo:

    UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA

    el identificador se construye a partir de una dirección IP de 32 bits, ID de proceso de 32 bits, marca de tiempo de 32 bits acoplada a un contador de 16 bits para una resolución más estricta que un índice de subprocesos de 32 bits de un solo segundo. El componente de marca de tiempo es UTC para evitar problemas con los ajustes de horario de verano. El manejador de la aplicación debe tratar el identificador solo como un token opaco y no diseccionado en constituyentes.

    véalo. Analícelo. Inspeccionarlo. Solucionarlo

    Ver lo que importa.

    Iniciar prueba gratuita

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Ir a la barra de herramientas