nginx日志文件分析以及添加接口响应耗时

本文介绍了如何通过分析Nginx的access.log日志来统计站点访问情况,包括IP来源、访问频率、热门页面、HTTP状态码以及接口性能。详细解析了默认的日志格式,并给出了一个案例。同时,讨论了如何自定义日志格式以添加接口响应时间,并展示了如何筛选出响应时间超过2秒的接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

access.log日志用处

统计站点访问ip来源、某个时间段的访问频率
查看访问最频的页面、Http响应状态码、接口性能
接口秒级访问量、分钟访问量、小时和天访问量

默认配置解析
#log_format main '$remote_addr - remoteuser[remote_user [remoteuser[time_local] “KaTeX parse error: Expected 'EOF', got '#' at position 16: request" ' #̲ …status bodybytessent"body_bytes_sent "bodybytessent"http_referer” ’
# ‘“httpuseragent""http_user_agent" "httpuseragent""http_x_forwarded_for”’;
案例

122.70.148.18 - - [04/Aug/2020:14:46:48 +0800] “GET /user/api/v1/product/order/query_state?product_id=1&token=xdclasseyJhbGciOJE HTTP/1.1” 200 48 “https://xdclass.net/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36”
解析

$remote_addr 对应的是真实日志里的122.70.148.18,即客户端的IP。

remoteuser对应的是第二个中杠“−”,没有远程用户,所以用“−”填充。​[remote_user 对应的是第二个中杠“-”,没有远程用户,所以用“-”填充。 ​ [remoteusertime_local]对应的是[04/Aug/2020:14:46:48 +0800]。

“$request”对应的是"GET /user/api/v1/product/order/query_state?product_id=1&token=xdclasseyJhbGciOJE HTTP/1.1"。

$status对应的是200状态码,200表示正常访问。

bodybytessent对应的是48字节,即响应body的大小。​“body_bytes_sent对应的是48字节,即响应body的大小。 ​ “bodybytessent48bodyhttp_referer” 对应的是”https://xdclass.net/“,若是直接打开域名浏览的时,referer就会没有值,为”-“。

httpuseragent”对应的是”Mozilla/5.0(Macintosh;IntelMacOSX10.12;rv:56.0)Gecko/20100101Firefox/56.0”。​“http_user_agent” 对应的是”Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0) Gecko/20100101 Firefox/56.0”。 ​ “httpuseragentMozilla/5.0(Macintosh;IntelMacOSX10.12;rv:56.0)Gecko/20100101Firefox/56.0http_x_forwarded_for” 对应的是”-“或者空。

自定义日志格式,统计接口响应耗时

日志格式增加 $request_time

从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出响应数据时间

$upstream_response_time:指从Nginx向后端建立连接开始到接受完数据然后关闭连接为止的时间

$request_time一般会比upstream_response_time大,因为用户网络较差,或者传递数据较大时,前者会耗时大很多

配置自定义日志格式

log_format main '$remote_addr - remoteuser[remote_user [remoteuser[time_local] “KaTeX parse error: Double superscript at position 33: … '̲status bodybytessent"body_bytes_sent "bodybytessent"http_referer” ’
‘“httpuseragent""http_user_agent" "httpuseragent""http_x_forwarded_for” $request_time’;


server {
listen 80;
server_name aabbcc.com;

location / {
root /usr/local/nginx/html;
index xdclass.html;
}
#charset koi8-r;
#
access_log logs/host.access.log main;
}

统计耗时接口, 列出传输时间超过 2 秒的接口,显示前5条

cat time_temp.log|awk '($NF > 2){print KaTeX parse error: Expected 'EOF', got '}' at position 2: 7}̲'|sort -n|uniq …NF 表示最后一列, awk ‘{print $NF}’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值