` nginx(七) | 听云轩

nginx(七)

关于nginx的日志分析

nginx默认的日志路径是在nginx目录下的logs里(我这里是/usr/local/nginx/logs),包括访问日志access.log和错误日志error.log。

比如我们查看一下:

1
cat /usr/local/nginx/logs/access.log | more

AgHU7q.md.png

我们可以在主配置文件里面(/nginx.conf)通过log_format自定义日志的打印格式。语法:

1
log_format name type

其中,name为我们为这个模板定义的名字,type为日志的类型。

关于type变量说明:

  • $remote_addr:记录客户端的IP地址。
  • $server_name:虚拟主机的名称 。
  • $http_x_forwarded_for:HTTP请求端真实的IP。
  • $request:请求的URL和HTTP协议。
  • $remote_name:客户端的名称。
  • $status:记录返回HTTP请求的状态。
  • $upstream_status:upstream的状态。
  • $ssl_protocol:ssl的协议版本。
  • $body_bytes_sent:发送给客户端的字节数,不包括头部的大小。
  • $bytes_sent:发送给客户端的字节总数。
  • $http_referer:记录从哪个页面链接访问过来的。
  • $http_user_agent:记录客户端浏览器相关信息。
  • $request_length:请求的长度,包括请求行,请求头和请求正文。
  • $msec:日志写入时间。
  • $request_time:请求处理时间,单位为s。
  • $upstream_response_time:应用程序响应时间,nginx向后端服务建立连接开始到接受完数据然后关闭连接的总时间。

比如我们在/nginx.conf中配置一个main 的log_format:

1
2
3
log_format  main  '$remote_addr $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'$http_user_agent $http_x_forwarded_for $request_time $upstream_response_time $upstream_addr $upstream_status';

然后我们在需要使用的文件后面调用,比如是nginx的日志文件(access.log)或者是虚拟主机的日志文件(./vhost/*.conf):

1
access_log  logs/access.log  main;

然后我们就可以通过awk等工具来进行分析。

比如:

统计nginx服务器独立IP数

1
awk '{print $1}' access.log |sort -r|uniq -c|wc -l
------ 本文结束 ------
您的支持将鼓励我继续创作