Track HTTP Application Response time in Nginx

From wikieduonline
Jump to navigation Jump to search

[1]

1) Add to /etc/nginx/nginx.conf befor your access_log directive http://nginx.org/en/docs/http/ngx_http_log_module.html

 log_format timed_combined '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $body_bytes_sent '
    '"$http_referer" "$http_user_agent" '
    '$pipe $upstream_response_time $request_time';
 

2) Modify access_log directive to use new format:

access_log /var/log/nginx/yourdomain.com.access.log timed_combined;

[2]

request_time This shows how long Nginx dealt with the request
upstream_response_time Gives us the time it took our upstream server (in this case Apache/mod_wsgi) to respond
pipe Shows ‘p’ in case the request was pipelined.


3) Reload nginx:

nginx -t && systemctl restart nginx

4) Check your new log format, last field contains ($request_time):

tail -f /var/log/nginx/access.log

Related[edit]

  • Print http response times and date:
cat /var/log/nginx/access.log | awk '{print $4, $(NF-1)}'

Print only if http response time exceed a threshold:

cat /var/log/nginx/access.log | awk '$(NF-1) > "0.300" {print $4, $(NF-1)}

Web site response time:

See also[edit]

  • https://lincolnloop.com/blog/tracking-application-response-time-nginx/
  • https://stackoverflow.com/a/39260524
  • Advertising: