由于nginx 1.7+支持syslog
,我尝试将所有nginx节点日志聚合到远程rsyslog服务器上。我将nginx.conf
设置为
error_log syslog:server=[REMOTE_HOST]:514,tag=nginx;
access_log syslog:server=[REMOTE_HOST]:514,tag=nginx;
在远程rsyslog服务器上,我使用
设置配置文件local7.debug /var/log/nginx/access.log; RemoteFormat
local7.debug /var/log/nginx/error.log; RemoteFormat
但是仍然无法获取日志,如何将所有nginx access.log
和error.log
聚合到远程rsyslog服务器上的文件access.log
和error.log
?先感谢您。
答案 0 :(得分:1)
我认为你应该使用if
条件。请参阅example in doc:
if参数(1.7.0)启用条件记录。如果条件评估为“0”或空字符串,则不会记录请求。在以下示例中,将不会记录响应代码为2xx和3xx的请求:
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /path/to/access.log combined if=$loggable;
我的想法:如果邮件为loggable
(您可以重写此map
),则代码将nginx-access
,如果不是loggable
,则代码将nginx-error
{1}}。现在,您可以使用rsyslog
通过tag
过滤它。
但是如果你只想分开访问和错误日志,你可以使用不同的标签:
access_log ... tag=nginx-access;
error_log ... tag=nginx-error;
另一种解决方案:使用severity
!