如何使用 rSyslog 按端口对日志进行分类?

如何使用 rSyslog 按端口对日志进行分类?

我一直使用 Syslog-NG 来记录日志,但是我手头拮据,不得不使用 rsyslog,而我对 rsyslog 并不是很熟悉。

我大体上理解如何配置它,但是,我想要的方法之一是按设备类型进行分类,即 Linux 设备日志进入 Linux 文件夹,Windows 等也是如此。

使用 Syslog-NG,我可以通过为每种设备类型设置不同的端口,然后让 Syslog-ng 将其放置在端口旁边的正确文件夹中来实现这一点。

我在 rsyslog 中找不到实现此目的的方法。我尝试过模板,但这样做只会将所有内容放在 linux 文件夹中,将所有内容放在 windows 文件夹中,本质上是重复。我尝试过使用过滤器,但也没有成功。

首先,有人知道是否可以用这种方式对日志进行分类吗?如果可以,您能给我指出正确的方向吗?

答案1

如果你想从一个给定的 tcp 端口输入到一个日志文件,并从第二个 tcp 端口输入到另一个日志文件,请查看多个规则集。 这个例子为三个不同的端口拆分本地和远程日志记录减少到 2 个 tcp 端口 10514 和 10515 可得到:

ruleset(name="remote10514"){
    action(type="omfile" file="/var/log/fileA")
}
ruleset(name="remote10515"){
    action(type="omfile" file="/var/log/fileB")
}
input(type="imptcp" port="10514" ruleset="remote10514")
input(type="imptcp" port="10515" ruleset="remote10515")

在每个里面,ruleset(){...}您可以进行任何常见的进一步过滤和模板化。

答案2

昨天我偶然发现了同样的问题。这里的解决方案并不奏效。
这就是我想到的。以下是 /etc/rsyslog.d 下 port515.conf 的内容:

$ActionQueueFileName port515
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
$ModLoad imudp.so

$template tmpl_remote515, "/var/log/port515.log"
$RuleSet Remote515
$RulesetCreateMainQueue on
*.* -?tmpl_remote515

$InputUDPServerBindRuleset Remote515
$UDPServerRun 515

它非常有效,将 UDP 端口 515 上的所有内容放入单独的文件中。启动服务时,您可能会在 journalctl 中看到“模块‘imudp.so’已在此配置中,无法添加”。如果您使用上述配置设置了多个端口并且只更改了端口号,就会发生这种情况。我建议您只在 /etc/rsyslog.conf 中加载一次 UDP 模块,方法是

$ModLoad imudp.so

或者

module(load="imudp")

相关内容