是的,我知道您想将其标记为重复,我很感激,但请读到最后。
我在好几个地方都发现了这个问题,答案要么太模糊,对于 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
不过,最终,这并不难弄清楚,所以你已经找到了解决方案。这很好。