如何将非默认日志文件发送到远程 rsyslog 服务器?

如何将非默认日志文件发送到远程 rsyslog 服务器?

是的,我知道您想将其标记为重复,我很感激,但请读到最后。

我在好几个地方都发现了这个问题,答案要么太模糊,对于 rsyslog 新手来说难以理解……比如

太难了,不可能有一种简单易懂的方式来做我想做的事情......就像

或者非常接近我想要的,但不完全是....就像

无论如何,回到具体问题。

服务器 X= 集中式 syslog 服务器,运行 rsyslog。

服务器Y= 运行的服务器Redmine

我已经配置了将默认日志文件发送至X。 我用了这些说明,并结合其他一些说明。

/etc/rsyslog.conf:

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

# This one is the template to generate the log filename dynamically, depending on the client's IP address.
$template FILENAME,"/var/log/logs/%fromhost-ip%/syslog.log"

# Log all messages to the dynamically formed file. Now each clients log (192.168.1.2, 192.168.1.3,etc...), wil    l be under a separate directory which is formed by the template FILENAME.
*.* ?FILENAME


# Enable non-kernel facility klog messages
$KLogPermitNonKernelFacility on

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

如您所见,发送到的日志X被放入以其来源 IP 地址命名的目录中。

是 /etc/rsyslog.d/10-rsyslog.conf

*.* @192.168.1.X:514

这一切都很顺利,我得到的一切都很好。

我想要做的是将位于的 redmine.access.log 文件/var/log/apache2/redmine.access.log也发送到 syslog 服务器X

就像我说的,我读了很多关于这个的内容。我只是不明白,我需要一个更简单的例子。

我想保留日志文件X,因此将它们直接管道传输到任何地方都不是我想要的。

我发现看起来最简单的、我几乎可以遵循的说明是这些. 问题在于,没有任何东西真正得到解释,而我真的想了解这是如何运作的。

我不在乎 redmine.access.log 是否与 syslog 内容混在一起(尽管我更希望它不这样做),或者它是否被写在其他地方(显然在X尽管)。

如果有人可以写出他们认为我应该做什么,我会更新我的问题以获得最终可行的配置,所以希望其他新手可以从我的愚蠢问题中受益。

编辑

这次编辑是为了解释为什么这不是重复的。

这是重复的……我承认了。

但我真的希望看到如此简单的东西,有一个真正完整的示例。所以,如果这个被标记为重复并被删除,那没关系,但无论如何我都会在最后用一个可行的示例来编辑它。

答案1

您所要做的就是创建一个新的 conf 文件,/etc/rsyslog.d/然后用$Input[...]指令填充它。例如

$InputFileName /var/log/apache2/redmine.access.log
$InputFileTag web.apache.access-combined.pro.whatever.yourface:
$InputFileStateFile stat-file1-ApacheAccess
$InputFileSeverity info
$InputFileFacility local7
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$InputRunFileMonitor

为每个需要的文件添加一个这样的块。实际上,从技术上讲,您不必创建新的配置文件,只需将其添加到现有配置文件中即可。

不过,如果你正在寻找复制/粘贴解决方案,你可能会失望。rsyslog不过,最终,这并不难弄清楚,所以你已经找到了解决方案。这很好。

相关内容