2016-05-04 66 views
1

我想嘗試使用rsyslog虛擬機進行過濾和轉發。rsyslog過濾和轉發

當我使用

*.* @@192.168.1.100:514 

它轉發所有日誌,該日誌服務器。

我需要做的是過濾掉包含「測試」和「流量」的日誌,並防止日誌從本地主機發送到日誌服務器。

我已經嘗試了很多方法來實現這種組合並失敗。一旦我使用過濾器,我只是沒有收到任何日誌到目的地。

的rsyslog.conf剩下的全部內容是

# rsyslog configuration file 

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html 
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html 

#### MODULES #### 

# The imjournal module bellow is now used as a message source instead of imuxsock. 
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) 
$ModLoad imjournal # provides access to the systemd journal 
#$ModLoad imklog # reads kernel messages (the same are read from journald) 
#$ModLoad immark # provides --MARK-- message capability 

# Provides UDP syslog reception 
$ModLoad imudp 
$UDPServerRun 514 

# Provides TCP syslog reception 
$ModLoad imtcp 
$InputTCPServerRun 514 

#### GLOBAL DIRECTIVES #### 

# Where to place auxiliary files 
$WorkDirectory /var/lib/rsyslog 

# Use default timestamp format 
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 

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

# Turn off message reception via local log socket; 
# local messages are retrieved through imjournal now. 
$OmitLocalLogging on 

# File to store the position in the journal 
$IMJournalStateFile imjournal.state 

#### RULES #### 
if $msg contains 'testing' then @@192.168.1.100:514 
#*.* @@192.168.1.100:514 

我的配置不工作。

回答

0

首先,注意行$IncludeConfig /etc/rsyslog.d/*.conf。基本上說,所有.conf文件將包含在您粘貼的rsyslog.conf文件中。因此,不要將您的規則放在該文件的底部,我會建議添加另一個文件,例如/etc/rsyslog.d/30-testing.conf並將您的規則放在那裏。這是更有組織的,並且如果您的系統日誌配置在將來增長,將會很有幫助。

除此之外,如果它沒有過濾器,因此端口/防火牆不是問題,而不是真的應該工作 - 你的過濾器線看起來很好。您可能已經這樣做了,但也許嘗試:

:msg, contains, "testing"   @@192.168.1.100:514 

此外,您是否每次更改配置文件時重新啓動rsyslog服務?您可能需要這樣做。你也可以發佈你使用的rsyslog版本嗎?

+0

謝謝德魯。我發現這不是沒有工作的rsyslog。我發送的測試消息不夠長,無法與之匹配。如果您只是發送「測試」作爲消息,則規則不起作用。如果你發送「我只是測試」它的作品。我認爲消息部分有一些長度條件後,它匹配..我必須在配置文件中啓用調試來弄清楚這一點。現在它適用於我,並非常感謝你回答我的問題 – Harry

+0

@Harry這其實很有趣,它對我很好(但我只記錄到本地文件)。我在我的rsyslog配置文件中: '如果$ msg包含'testing',那麼/ var/log/mylog.log'並在運行'logger'測試''命令後,然後在'mylog.log'中看到logline : '5月9日14:56:25 myServerHostname root:testing'。它記錄得很好,所以很奇怪它不適合你。我在Ubuntu 12.04(rsyslog版本:5.8.6),如果這有所作爲。 – drewyupdrew

+0

我使用的是Centos 7.2,除了沒有記錄到文件之外,我正在記錄到另一個系統日誌服務器,它本質上只是我的筆記本電腦中的一個守護進程。它只是在這裏追加一個文本文件。至少我用rsyslog學到了一些新東西:) – Harry