es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enviar los registros de Apache a un servidor remoto de rsyslog agrega espacio adicional.

Estoy intentando enviar los registros de Apache/2.2.22 (Ubuntu) a un servidor remoto de rsyslogd 8.2001.0 (también conocido como 2020.01) y luego utilizar awstats 7.6 (build 20161204). Tengo un problema con el formato y awstats muestra que las líneas están corruptas. Supongo que están corruptas debido a un espacio en blanco adicional al principio. ¿Alguien puede decirme por qué rsyslog agrega este espacio adicional o cómo eliminarlo? El registro se ve así:

x.x.x.x - - [06/Ene/2022:08:39:07 +0200] "GET /1.php HTTP/1.1" 200 2906 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"

Pero debería verse así:

x.x.x.x - - [06/Ene/2022:08:39:07 +0200] "GET /1.php HTTP/1.1" 200 2906 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"

Mi configuración de Apache para enviar registros a local7 es la siguiente:

CustomLog "| /bin/bash -c /usr/bin/tee -a ${APACHE_LOG_DIR}/access-my.domain.log | /usr/bin/logger -t my.domain.com -p local7.info" combined

Configuración de rsyslog del remitente:

$ModLoad imfile
$InputFilePollInterval 10
$InputFileName  /var/log/apache2/access-*.log
$InputFileTag apache2-access
$InputFileStateFile stat-apache-access
$InputFileSeverity info
$InputRunFileMonitor
$InputFileFacility local7
local7.*        @x.x.x.x

Configuración de rsyslog del receptor:

module(load="imudp")
input(type="imudp" port="514")
$template mydomain, "/var/log/remote-logs/access-my.domain.com.log"
$template mydomain2, "%msg%\n"
if $syslogtag == "my.domain.com:" then ?mydomain;mydomain2
& stop

Por favor, ayúdame, y si sabes esto: Apache debería registrar en local7 y mantener los archivos localmente, pero este CustomLog solo envía a local7 sin guardar los archivos localmente. Sé que esto es ANTIGUO (DISTRIB_DESCRIPTION=”Ubuntu 12.04.5 LTS”), por eso estoy enviando los registros a un servidor remoto, ya que en esta distribución no hay más paquetes para awstats y los módulos de Perl.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El espacio en blanco adicional al principio de las líneas de registro es causado por el comando de registro en la directiva CustomLog de Apache. Este comando agrega un espacio antes de cada línea de registro. Para eliminar este espacio extra, puedes modificar el comando de registro para incluir la opción ‘-T’ que deshabilita la adición de un espacio antes del mensaje:

    CustomLog "| /bin/bash -c '/usr/bin/tee -a ${APACHE_LOG_DIR}/access-my.domain.log | /usr/bin/logger -t my.domain.com -T -p local7.info'" combined
    

    Además, para asegurarte de que los registros estén en el formato correcto para awstats, puedes modificar la configuración de rsyslog para usar la plantilla “RSYSLOG_TraditionalFileFormat”:

    $template mydomain2, RSYSLOG_TraditionalFileFormat
    

    Esto mostrará los registros en el formato tradicional de registro de acceso de Apache, sin ningún espacio en blanco adicional al principio de cada línea.

Comments are closed.