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

Posted

技术标签:

【中文标题】使用通配符将新文件添加到 rsyslogd【英文标题】:Adding new files to rsyslogd with wildcards 【发布时间】:2020-05-03 03:21:17 【问题描述】:

我们有一个预先存在的 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

并确保它们也通过管道传输到 papertrail url。

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

谢谢!

【问题讨论】:

你检查过this吗?NGINX 允许在每个 vhost 中使用多个 access_log 或 error_log 指令 【参考方案1】:

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

文件

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

通配符

之前版本:8.25.0

通配符只支持文件名部分,目录名不支持。

/var/log/*.log有效。

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

自版本:8.25.0

文件名和路径支持通配符,这意味着这些示例可以工作:

/var/log/*.log有效。

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

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

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

如果您想转发您的 vhosts 日志,您可以直接在 NGINX vhosts 配置中更改配置,您应该按照 here 的说明更改/添加 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 行只是为了测试您是否可以看到转发到本地服务器的日志,请在测试一切正常后评论此行。

【讨论】:

感谢您的帮助,内容丰富,很快就会尝试! @alvaro-niño 它是否适用于 inotify 模块?我选择了 /var/log/redis/*.log 但它正在发送一些随机文件 /var/log/folder-A/radom.log ?

以上是关于使用通配符将新文件添加到 rsyslogd的主要内容,如果未能解决你的问题,请参考以下文章

将新设备添加到现有通配符配置文件

如何在类路径中使用通配符来添加多个 jar? [复制]

带有 dnsmasq 的通配符子域

用word通配符添加空格

如何在SharePoint的列表中使用通配符来filter出ListItem

使用目录上的通配符从文件夹复制内容