将所有 Linux 日志发送到远程 rsyslog 并以原始文件名存储

将所有 Linux 日志发送到远程 rsyslog 并以原始文件名存储

我知道有很多像这样的主题,但我有一个特殊的需求:我需要将所有日志从 Linux 服务器发送到中央登录服务器。

问题 1:在中央服务器上,我需要以以下格式存储日志:

<root_dir>/<server_name>/<year>/<month>/<day>/{messages, mail, auth, httpd, etc}.log (the exact original file name of the log file)

rsyslog 服务器配置如下

$template RemoteHost,"/var/log/remotes/%HOSTNAME%/%$YEAR%/%$MONTH%/%$DAY%/%PROGRAMNAME%.log" which creates the folder structure ok but for some logs it doesn't work (httpd logs)

问题 2:我需要发送所有日志。在远程服务器 (centOS) 上,我配置了经典

*.* @@<central-server-hostname>:5544

但我看到 httpd 日志没有发送(我想是因为过滤器并且 httpd 日志被命名为“httpd_acces”并且与过滤器不匹配。

你知道这是否可能吗?

答案1

Apache 默认不使用syslog,它只是默认写入 Apache 配置中定义的一些文件。

您可以配置 Apache 将日志传送到 syslog,例如通过logger或配置rsyslog监视 Apache 文件并将内容发送到远程服务器。

答案2

Apache 通常不通过 syslog 记录日志。您必须通过管道传输日志logger,请参阅本指南. 不确定从性能角度来说这是否是个好主意。

*.*在 syslog 配置中不是文件掩码。它是...的掩码,<facility>.<priority>所以类似于kern.error。请参阅文档了解其工作原理。

相关内容