nginx - 使用通配符将新文件添加到 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
并确保他们也通过管道连接到 papertrail url。
但是,我正在努力破译 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_log
或使用自定义工具来转发您的日志(使用 rsyslog)。error_log
如何使用 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
只是为了测试您是否可以看到转发的日志到您的本地服务器,在您测试一切正常后评论此行。
推荐阅读
- sockets - 在客户端软件上播放来自服务器的流式数据
- spring - 如何在 Spring Tool Suite 4 中打开 Spring 透视图
- c# - 将统一输入更改为跨平台输入
- java - 无法读取spring boot打包jar文件
- javascript - Datatable Ajax重新加载在按钮单击时不起作用
- javascript - 运行 item.url 时的方法 .map 在视图的每次迭代中保持最后一个 url,同时保持每个视图的更改
- .net - TemplateBinding 填充到边框不适用于我的按钮
- javascript - 如何使用angularJS过滤选定的复选框
- php - 在php中添加爆炸时间
- prolog - 在 Prolog 中生成可能的组合