如何复制耗时超过n秒的nginx请求日志

时间:2018-08-06 11:42:05

标签: nginx kong

请考虑访问日志具有以下格式:

  

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秒的请求的新日志文件?

2 个答案:

答案 0 :(得分:0)

您可以将日志发送到http-log并对其进行处理,以找出是否超出您期望的时间。

基于某些条件停止日志的实现似乎并不复杂。但是一旦生成日志,从日志中提取所需信息似乎是正确的方法。

答案 1 :(得分:0)

您可以使用if指令上的内置access_log政治家来做到这一点,就像这样:

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;
   ...
   }
...
}