配置nginx只打印延迟超过0.1s和非2XX的accesslog

数据库77

背景

当业务accesslog全开时,写入es的qps达到了10W,评估后觉得不太值得,所以考虑抽样打印。查看相关文档后发现目前我们使用的nginx版本不支持抽样打印,所以考虑其他解决方案。经过分析,其实我们一般排查问题只需要非20X和延迟较高的访问日志,于是设置nginx只打印延迟超过0.1s和非2XX的accesslog。

具体配置

注意:以下以下为全局配置,要放到http配置内,不能放到server配置内

```plain_text
map $upstream_response_time $u_r_t {
default 0;
~(\d+).[1-9][0-9][0-9] 1;
}

map $status $loggable{
default 0;
~^[345] 1;
}

access_log /dev/stdout json buffer=10K if=$u_r_t; #json是前面定义的日志模板名

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长