关于nginx的日志分析
nginx默认的日志路径是在nginx目录下的logs里(我这里是/usr/local/nginx/logs),包括访问日志access.log和错误日志error.log。
比如我们查看一下:
1 | cat /usr/local/nginx/logs/access.log | more |
我们可以在主配置文件里面(/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 | log_format main '$remote_addr $remote_user [$time_local] "$request" ' |
然后我们在需要使用的文件后面调用,比如是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 |
