如何使用 rsyslog 将 /var/log 之外的特定日志文件转发到远程服务器?

Kev*_*ion 27 log-files rsyslog

我如何从一个特定的日志文件转发消息就像/www/myapp/log/test.logrsyslog客户端的远程rsyslog服务器?此日志文件位于目录之外/var/log

小智 45

只需在您的 /etc/rsyslog.conf 中设置一个 imfile 规则

#/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /data/mysql/error.log
$InputFileTag mysql-error
$InputFileStateFile stat-mysql-error
$InputFileSeverity error
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@hostname:<portnumber>
Run Code Online (Sandbox Code Playgroud)

这会监视文件并保存到 syslog 中的 local3 工具。然后您可以将所有数据从 local3 设施发送到您的远程服务器。您可能还想将以下内容添加到您的 rsyslog conf(在 Ubuntu 上通常为 /etc/rsyslog.d/50-default.conf),以免将 local3 工具保存到 /var/log/syslog:

#/etc/rsyslog.d/50-default.conf
*.*;auth,authpriv.none,local1.none,local2.none,local3.none,local4.none,local5.none,local6.none          -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)

此外,我鼓励阅读以下 rsyslog 文档以获得更高级的过滤:

  1. 财产替代者
  2. 过滤条件