使用通配符将新文件添加到 rsyslogd



我们有一个预先存在的 rsyslog 配置文件,它适用于 papertrail,例如

/etc/rsyslog.d/20-papertrail.conf

*.*          @logs4.papertrailapp.com:44407

但是,我们在服务器上有几个NGINX网站,因此希望它也监视其错误日志。

它们的路径是:

/var/log/nginx/www.website-one.com-error.log
/var/log/nginx/www.website-two.com-error.log
/var/log/nginx/www.website-three.com-error.log

但是,此/var/log/nginx还包含一堆我们不想监视的.log文件,例如

/var/log/nginx/error.log
/var/log/nginx/access.log
/var/log/nginx/error.log1
/var/log/nginx/nginx.log

在我的脑海中,我们需要添加类似的东西...

/var/log/nginx/*-error.log

并确保它们也通过管道传输到书面记录网址。

但是,我正在努力破译 rsyslog 文档以弄清楚如何做到这一点。

谢谢!

在 rsyslog 文档中,似乎您可以在文件中使用通配符。

文件

正在监视的文件。到目前为止,这必须是绝对名称(没有宏或模板(。请注意,在文件名级别支持通配符(有关更多详细信息,请参阅下面的通配符(。

通配符

版本之前:8.25.0

通配符仅在文件名部分受支持,在目录名称中不受支持。

/var/log/*.log有效。

/var/log/*/syslog.log不起作用。

自版本:8.25.0

文件名和路径中支持通配符,这意味着这些示例将起作用:

/var/log/*.log有效。

/var/log/*/syslog.log有效。

/var/log/*/*.log有效。

所有匹配子文件夹中的所有匹配文件都将正常工作。请注意,这可能会降低 imfile 的性能,具体取决于动态监视的目录和文件数量。

如果要转发虚拟主机日志,可以直接在NGINX虚拟主机配置中更改配置,应更改/添加access_logerror_log策略,如此处所述,或使用自定义工具来转发日志(使用rsyslog(。

如何使用 RSYSLOG 来做到这一点?

/etc/rsyslog.d/nginx_custom.conf中创建新的自定义文件:

module(load="imfile" PollingInterval="1") #needs to be done just once
# File 1
input(type="imfile"
File="/var/log/nginx/www.website-*.com-error.log"
Tag="websites"
Facility="local0")
local0.* @logs4.papertrailapp.com:44407
#Just to test that logs are forwarded, comment the line once you've tested it
local0.* /var/log/test.log

并重新启动 rsyslog 服务

注意:第local0.* /var/log/test.log行只是为了测试您是否可以看到转发到本地服务器的日志,请在测试一切正常后注释此行。

相关内容

  • 没有找到相关文章

最新更新