Nginx记录到远程rsyslog

时间:2016-01-04 19:25:23

标签: logging nginx rsyslog

由于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.logerror.log聚合到远程rsyslog服务器上的文件access.logerror.log?先感谢您。

1 个答案:

答案 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