Linux

如何將非預設日誌文件發送到遠端 rsyslog 伺服器?

  • December 22, 2015

是的,我看到你想將此標記為重複,我很感激,但請閱讀到最後。

我已經在幾個地方找到了這個問題,答案要麼太模糊,對於 rsyslog 的菜鳥來說無法理解……就像這樣

Waaay 太難了,不可能是一種易於理解的方式來做我想做的事情……就像這樣

或者非常接近我正在尋找的東西,但不完全……像這樣

無論如何,針對具體問題。

伺服器 X = 集中式系統日誌伺服器,執行 rsyslog。

伺服器 Y = 執行Redmine的伺服器

我已經將Y配置為將預設日誌文件發送到X。我使用了這些說明,並結合了其他一些說明。

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也發送到系統日誌伺服器X

就像我說的,我已經閱讀了很多關於此的內容。我只是不關注它,我需要一個更簡單的例子。

我想將日誌文件保留在XY上,因此將它們直接管道傳輸到任何地方,這不是我想要的。

我發現看起來最簡單,我幾乎可以遵循的說明是這些。問題在於,沒有任何東西真正得到解釋,我真的很想了解它是如何工作的。

我不在乎 redmine.access.log 是否與 syslog 的東西一起被拋出(儘管我更希望它沒有),或者它是否被一起寫在其他地方(儘管顯然是在X上)。

如果有人可以寫出他們認為我應該做什麼,我會更新我的問題以使我的最終配置有效,因此希望其他菜鳥可以從我的愚蠢問題中受益。

編輯

此編輯是為了解釋為什麼這不是重複的。

這是重複的……我承認了。

但我真的很想看到這麼簡單的東西,有一個實際完整的例子。因此,如果它被標記為重複並被刪除,那很好,但我將在最後使用一個工作範例對其進行編輯。

您所做的就是在其中創建一個新的 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

為您想要的每個文件添加一個類似的塊。事實上,從技術上講,您不必創建新的 conf,只需添加到現有的。

但是,如果您正在尋找複製/粘貼解決方案,您可能會感到失望。最終,rsyslog這並不難弄清楚,所以你已經為你準備好了。這很好。

引用自:https://serverfault.com/questions/744847