【问题标题】:How to copy nginx logs of requests that took more than n seconds如何复制超过n秒的请求的nginx日志
【发布时间】:2018-08-06 11:42:05
【问题描述】:

考虑访问日志的格式如下:

log_format 详细 '$remote_addr $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '$request_length $request_time $upstream_connect_time $upstream_header_time $upstream_response_time';

我怎样才能有一个新的日志文件只包含超过 5 秒的请求?

【问题讨论】:

    标签: nginx kong


    【解决方案1】:

    您可以使用access_log 指令上的内置if 语句来执行此操作,如下所示:

    http{
    ...
    map $upstream_response_time $under {
       ~^[01234]\.[0-9]+ 1; 
       default 0; 
       } 
    
    server {
       set $over 1;
       if ( $under = 1 ) { set $over 0; }
       access_log /some/folder/under.log combined if=$under;
       access_log /some/folder/over.log combined if=$over;
       ...
       }
    ...
    }
    

    【讨论】:

      【解决方案2】:

      您可以将日志发送到 http-log 并对其进行处理,以确定是否有任何超出您预期的时间。

      根据某些条件停止日志看起来并不复杂。但是一旦生成日志,从中提取所需信息似乎是正确的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-03
        • 2019-06-19
        • 2021-08-25
        • 2012-10-26
        • 1970-01-01
        • 1970-01-01
        • 2012-06-23
        • 2012-02-01
        相关资源
        最近更新 更多