我想运行rsyslogd
(在不同的网络命名空间 [ netns
] 上)的多个实例。rsyslogd
从 读取/dev/log
,一旦进程读取,套接字就会被耗尽,而另一个实例则没有任何内容可读取!有什么办法可以制作一个(比如说,掌握) 实例rsyslogd
将
syslog
消息复制到其他本地 (奴隶)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
您的系统上。