How to log Application Response Time with Nginx
How can I log response time ( the time my server took to serve the request ) in Nginx?
1 Answer
7 years ago by Divya
Edit the nginx.conf file
sudo vi /etc/nginx/nginx.conf
and add the following log format under http > Logging Settings
log_format apm '"$time_local" client=$remote_addr '
'method=$request_method request="$request" '
'request_length=$request_length '
'status=$status bytes_sent=$bytes_sent '
'body_bytes_sent=$body_bytes_sent '
'referer=$http_referer '
'user_agent="$http_user_agent" '
'upstream_addr=$upstream_addr '
'upstream_status=$upstream_status '
'request_time=$request_time '
'upstream_response_time=$upstream_response_time '
'upstream_connect_time=$upstream_connect_time '
'upstream_header_time=$upstream_header_time';
Now use this newly created apm log format in for your site like below
server {
...
...
access_log /var/log/nginx/your-website.com.log apm;
...
...
}
After changing the server config, restart your Nginx
sudo systemctl restart nginx
After restart you will start seeing the detailed logs as defined in apm log_format, you can check the response time in upstream_response_time
field. Following is a sample log statement
"15/Sep/2017:18:14:33 +0000" client=xxx.xxx.xx.xxx method=GET request="GET / HTTP/1.1" request_length=827 status=200 bytes_sent=8279 body_bytes_sent=8009 referer=- user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" upstream_addr=127.0.0.1:xxxx upstream_status=200 request_time=0.005 upstream_response_time=0.005 upstream_connect_time=0.000 upstream_header_time=0.005
In the log you can see that the upstream_response_time=0.005 means server took 5 milliseconds to serve that perticular request.
7 years ago by Karthik Divi