使用(r)syslog 的动态文件生成

使用(r)syslog 的动态文件生成

我正在将 (r)syslog 服务器配置为接收来自各种客户端的日志的远程服务器。

我想知道是否有更好的方法来动态生成多个文件名,而不是为任何需要动态创建文件名的 facility.priority 创建模板。

$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"
kern.*                          ?FILENAME

除此之外,我是否必须明确告诉服务/守护程序使用 TCP 才能使用 (r)syslogd 通过 TCP 进行日志记录?例如,当我关闭服务器接收 UDP 数据包的能力时,它会停止记录任何内容。或者换句话说:

kern.*                           @loghost 

不起作用。

答案1

从手册页:

   To  forward  messages to another host via UDP, prepend the hostname
   with the at sign ("@").  To forward it via plain tcp,  prepend  two
   at signs ("@@").

因此,请像这样更改您的配置行:

kern.*                           @@loghost 

并告诉 rsyslog 重新读取配置文件。

答案2

是的,模板是 rsyslog 中生成动态文件名的标准和推荐方法。它们允许您从逻辑上将文件名格式与操作分开,并为您的配置引入清晰的结构。

关于 TCP,珍妮D已经给了你正确的答案。请注意,您的主机需要支持 TCP 上的 syslog。Syslog 最初基于 UDP,因此根据您在主机上运行的 syslog 守护程序的版本,TCP 可能无法在某些甚至所有主机上运行。rsyslog 和 syslog-ng 都支持 TCP。

有关 rsyslog 的更多参考,RedHat 有相当不错的文档

相关内容