我正在将(r)syslog服务器configuration为从各种客户端接收日志的远程服务器。
我想知道是否有一个更好的方法来dynamic生成多个文件名,而不是创build一个模板的任何facility.priority其文件名应该dynamic创build。
$template FILENAME,"/var/log/%fromhost-ip%/syslog.log" kern.* ?FILENAME
除此之外,我是否必须明确地告诉服务/守护进程使用TCP以便通过使用(r)syslogd的TCP进行日志logging? 就像当我closures服务器接收UDP数据包的能力时,它会停止logging任何东西。 或者换个说法:
kern.* @loghost
不起作用。
从手册页:
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 ("@@").
所以改变你的configuration线如下所示:
kern.* @@loghost
并告诉rsyslog重新读取configuration文件。
是的,模板是在rsyslog中生成dynamic文件名的标准和推荐的方法。 它们允许从逻辑上将文件名格式与动作分开,并向您的configuration引入清晰的结构。
关于技术合作计划, 珍妮D已经给了你正确的答案。 请注意,您的主机需要支持TCP上的系统日志。 系统日志最初是基于UDP的,所以根据您在主机上运行的syslog守护进程的版本,某些甚至全部都可能无法使用TCP。 TCP由rsyslog和syslog-ng支持。
对于rsyslog的额外参考,RedHat有相当不错的文档 。