如何将数据从 /dev/log 复制到多个 rsyslog 接收器

如何将数据从 /dev/log 复制到多个 rsyslog 接收器

我想运行rsyslogd(在不同的网络命名空间 [ netns] 上)的多个实例。rsyslogd从 读取/dev/log,一旦进程读取,套接字就会被耗尽,而另一个实例则没有任何内容可读取!有什么办法可以制作一个(比如说,掌握) 实例rsyslogdsyslog消息复制到其他本地 (奴隶rsyslogd实例?如果可以通过任何其他方式实现这一点,欢迎指点/建议。由于rsyslogd它本身不支持 Linux netns,看起来在不同命名空间上发送syslog消息的唯一方法是运行rsyslogd.

答案1

您应该能够使用 rsyslog 的多个输出模块中的任何一个来执行此操作。例如(无耻地窃取并稍微修改过rsyslog.conf(5))在你的主人上:

*.*  :omrelp:192.168.0.2:2514
*.*  :omrelp:192.168.0.3:2514
*.*  :omrelp:192.168.0.4:2514

让主服务器将所有系统日志条目发送到在这三个 IP 地址上运行的 rsyslog,需要进行如下配置:

 $ModLoad imrelp
 $InputRELPServerRun 2514

(请注意,这*.*是一个普通的日志选择器,因此您可以限制转发的消息 - 例如,local0.* :omrelp:192.168.0.4:2514仅转发发送到local0设备的日志)。

PS:你做的事情有点奇怪。通常人们希望集中日志。根据您这样做的原因,您可能实际上需要其他输出模块之一(例如,您可能希望将日志发送到 SQL 数据库,所有不同名称空间中的程序都可以连接到该数据库并进行查询)。

PPS:还有其他方法可以处理这个问题 - rsyslog 读取和写入的套接字是完全可配置的。有他们的网站上有相当丰富的文档,当然也可能在/usr/share/doc您的系统上。

相关内容