首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx日志到远程rsyslog

Nginx日志到远程rsyslog
EN

Stack Overflow用户
提问于 2016-01-04 19:25:23
回答 1查看 6.7K关注 0票数 0

由于nginx 1.7+支持syslog,所以我尝试将所有nginx节点日志聚合到远程rsyslog服务器上。我将nginx.conf设置为

代码语言:javascript
运行
复制
error_log syslog:server=[REMOTE_HOST]:514,tag=nginx;
access_log syslog:server=[REMOTE_HOST]:514,tag=nginx;

在远程rsyslog服务器上,我将配置文件设置为

代码语言:javascript
运行
复制
local7.debug            /var/log/nginx/access.log; RemoteFormat
local7.debug            /var/log/nginx/error.log; RemoteFormat

但是仍然无法获得日志,如何将所有的nginx access.logerror.log聚合到远程rsyslog服务器上的access.logerror.log文件中?提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2016-01-05 07:01:59

我认为你应该使用if条件。见文档中的示例

if参数(1.7.0)启用条件日志记录。如果条件计算为“0”或空字符串,则不会记录请求。在下面的示例中,响应代码为2xx和3xx的请求将不会被记录:

代码语言:javascript
运行
复制
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过滤它。

但是,如果只想分离访问日志和错误日志,则可以使用不同的标记:

代码语言:javascript
运行
复制
access_log ... tag=nginx-access;
error_log ... tag=nginx-error;

另一个解决方案:使用severity

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34598357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档