rsyslog - 不同的 IP 位址有不同的日誌?

rsyslog - 不同的 IP 位址有不同的日誌?

我們的網路中設備遍佈各處。我想做這樣的事情:

池1 { 192.168.1.1-192.168.1.20, 192.168.1.50 } 池2 { 192.168.1.21-192.168.1.40, 192.168.1.66 }

如果來自 pool1 則執行此操作

如果來自 pool2 則這樣做

這樣我就可以讓 Mac 的日誌看起來像 Mac 日誌,Linux 日誌看起來像 Linux 日誌,Cisco 日誌看起來像 Cisco 日誌,等等。

答案1

如果你有一個不錯的最新版本系統日誌最新版本的軟體包可以在他們的網站上找到)那麼您應該能夠使用數組進行比較,如下所述這裡。就像是:

if $fromhost-ip == [ "192.168.1.1", "192.168.1.2"... ] then {
  action(...do this...)
}

雖然從控制結構文檔看來它應該更像是:

if $variable in [array]

如果範圍很大,則應該能夠使用類似的 foreach 結構來填充局部變數。如果您在文件中搜尋“RainerScript”,您可以找到有關腳本編寫的更多信息

答案2

這對我有用:

# accept logging for remote hosts on a per-ip-address basis
$template DirectoryPerHost,"/var/log/REMOTEHOSTS/%fromhost-ip%/%syslogfacility-text%.log"
if ( ( $fromhost-ip != "127.0.0.1" ) and (  $fromhost-ip != "::1" ) ) then  {
    ?DirectoryPerHost
} else {
    whatever you want to do with local log files here
}

您可以使用其他變數來代替 fromhost-ip - 有關更多信息,請參閱 Radu 連結到的文檔。

Radu 是正確的,您需要最近的 rsyslog 才能完成此操作。

如果您陷入 RHEL6 或其重建版本之一,您可以使用作業系統中的 rsyslog7 軟體包來取代預設(舊的)rsyslog。預設版本不支援此語法,但 v7 支援。

相關內容