使用通配符将新文件添加到 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_log
和 error_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的主要内容,如果未能解决你的问题,请参考以下文章