由于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
文件中?提前谢谢你。
发布于 2016-01-05 07:01:59
我认为你应该使用if
条件。见文档中的示例
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
。现在您可以通过rsyslog
通过tag
过滤它。
但是,如果只想分离访问日志和错误日志,则可以使用不同的标记:
access_log ... tag=nginx-access;
error_log ... tag=nginx-error;
另一个解决方案:使用severity
!
https://stackoverflow.com/questions/34598357
复制相似问题