将 apache 日志发送到远程 rsyslog 服务器会增加额外的 space
Sending apache logs to remote rsyslog server adds extra space
我正在尝试将 Apache/2.2.22 (Ubuntu) 日志发送到远程 rsyslogd 8.2001.0(又名 2020.01)服务器,然后使用 awstats 7.6(内部版本 20161204)。我的格式有问题,awstats 显示该行已损坏我猜该行已损坏是因为开头有一个额外的白色 space。有人能告诉我为什么 rsyslog 添加这个额外的 space 或如何删除它吗?日志看起来像:
x.x.x.x - - [06/Jan/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"
但应该看起来像:
x.x.x.x - - [06/Jan/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"
我将日志发送到 local7 的 apache 配置:
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
发件人 rsyslog 配置:
$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
接收者 rsyslog:
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
请帮忙,如果你知道这是额外的:Apache 应该登录到 local7 并在本地保存文件,但是这个 CustomLog 只发送到 local7 而没有在本地保存文件,我知道这是旧的(DISTRIB_DESCRIPTION= “Ubuntu 12.04.5 LTS”),这就是我将日志发送到远程服务器的原因,因为在此发行版中不再有 awstats 和 Perl 模块的软件包。
对于白色 space 我需要用
剥离日志
"%msg:2:$%\n" not only "%msg%\n"
但我有问题,为什么日志不保存在本地?
我正在尝试将 Apache/2.2.22 (Ubuntu) 日志发送到远程 rsyslogd 8.2001.0(又名 2020.01)服务器,然后使用 awstats 7.6(内部版本 20161204)。我的格式有问题,awstats 显示该行已损坏我猜该行已损坏是因为开头有一个额外的白色 space。有人能告诉我为什么 rsyslog 添加这个额外的 space 或如何删除它吗?日志看起来像:
x.x.x.x - - [06/Jan/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"
但应该看起来像:
x.x.x.x - - [06/Jan/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"
我将日志发送到 local7 的 apache 配置:
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
发件人 rsyslog 配置:
$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
接收者 rsyslog:
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
请帮忙,如果你知道这是额外的:Apache 应该登录到 local7 并在本地保存文件,但是这个 CustomLog 只发送到 local7 而没有在本地保存文件,我知道这是旧的(DISTRIB_DESCRIPTION= “Ubuntu 12.04.5 LTS”),这就是我将日志发送到远程服务器的原因,因为在此发行版中不再有 awstats 和 Perl 模块的软件包。
对于白色 space 我需要用
剥离日志"%msg:2:$%\n" not only "%msg%\n"
但我有问题,为什么日志不保存在本地?