Syslogd:翻译发送到服务器的日志消息的功能

Syslogd:翻译发送到服务器的日志消息的功能

我想将一些日志消息发送到远程日志服务器,并将这些消息上的功能更改为配置值,以便日志服务器可以更轻松地判断它们来自我的硬件。也就是说,从我的机器发出的所有日志都是 local3,无论它们的原始功能是什么。

我可以使用 FreeBSD 上的 vanilla syslogd 来执行此操作,或者使用其他实现吗?

答案1

我觉得你在尝试做一些奇怪的事情。你可以轻松地根据消息来源的主机名对系统日志中的消息进行排序。

man syslog.conf

 A hostname specification of the form #+hostname or +hostname means
 the following blocks will be applied to messages received from the speci-
 fied hostname.  Alternatively, the hostname specification #-hostname or
 -hostname causes the following blocks to be applied to messages from
 any host but the one specified.  If the hostname is given as @, the
 local hostname will be used.  As for program specifications, multiple
 comma-separated values may be specified for hostname specifications.

答案2

显然,使用 FreeBSD syslog 无法做到这一点。我仔细查阅了手册页以寻找线索,但一无所获。

根据此网页您可以使用 syslog-ng 来完成此操作,但我们无法切换。

答案3

正如安德鲁 (Andrew) 自己发现的那样,syslog-ng 是最好的选择。

但我认为,即使使用 vanilla FreeBSD syslogd,也可能存在一种笨拙的方法来实现此目的。似乎可以将日志条目通过管道传输到外部程序:然后,您可以将消息通过管道传输到该程序logger并设置所需的功能和优先级,然后要求 logger 将日志条目发送到您的日志服务器。

记录器可能会将其自己的时间戳等添加到每个日志条目中,因此您可能想要sed删除原始时间戳。

是的,我知道,这种方法非常丑陋,属于“不要在任何地方尝试”的范畴,但它仍然可能工作。

相关内容