如何配置 rsyslog 在接收远程日志时写入 /var/log/{发送方的主机名}?

如何配置 rsyslog 在接收远程日志时写入 /var/log/{发送方的主机名}?

我的 ADSL 调制解调器支持通过 syslog 进行远程日志记录。我已设置运行 rsyslog 的服务器,以接受来自调制解调器的日志消息,这些消息与服务器上生成的消息一起显示/var/log/syslog。日志如下所示:

(timestamp) (hostname) (program): (message)

其中 hostname 是servermodem

我已经看过了(在我看来很糟糕)文档, 和找到了这个例子这看起来正是我需要的,但我无法让它在我的处境下发挥作用。

如何配置 rsyslog 将从调制解调器接收到的日志写入而/var/log/modem不是/var/log/syslog

调制解调器IP是静态的,如果这有助于简化答案。

版主:这个帖子可能应该有一个rsyslog标签而不是syslog,但我的声誉还不够高,无法创建它。

答案1

使用简单模板为每个主机创建一个文件:

$template DynaFile,"/var/log/%HOSTNAME%"
*.* -?DynaFile

来源:如何按发送设备的主机名分隔日志文件?

我不确定在这种情况下应该使用的正确属性是“hostname”、“source”还是“fromhost”,但根据我的理解属性文档任何一种方法都可以适用于你的情况。

答案2

如果你正在使用,rsyslog那么使用$template remote-incoming-logs声明/etc/rsyslog.conf

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs

在您的示例中,主机上的登录modem会将日志消息发送到文件/var/log/modem/auth.log


摘自文章

相关内容