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 日志等等。我只是无法通过 Google 搜索找到足够具体的内容。

答案1

如果你有一个较新的版本rsyslog最新版本的软件包可以在他们的网站上找到)那么你应该能够使用数组进行比较,如下所述这里。 就像是:

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 版本支持。

相关内容