-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46616
- shell命令
-
- 文章:(42)篇
- 阅读:154520
- Git教程
-
- 文章:(36)篇
- 阅读:235134
- leetCode刷题
-
- 文章:(76)篇
- 阅读:132288
-
nginx访问日志和错误详解2018-06-19 23:39 阅读(7436) 评论(0)
一、简介
Nginx日志主要有访问日志和错误日志。访问日志用来记录客户端访问nginx的每一个请求内容(用户地址、使用终端、请求url、访问时间、请求端口、请求方法等),其格式内容支持自定义;错误日志,是记录客户端访问nginx出错的日志,格式内容不支持自定义。
二、访问日志
访问日志可以通过access_log参数来控制,如下:
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
当然,也可以通过access_log来关闭日志,如下:
access_log off;
2.1、访问日志的格式
通过log_format参数可以设置访问日志的格式,如下:
log_format combinedio '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" $request_length $request_time $upstream_response_time'
nginx中变量描述如下:
变量名称
变量描述
举例说明
$remote_addr
客户端地址
192.168.13.147
$remote_user
客户端用户名称
–
$time_local
访问时间和时区
03/Jul/2018:15:01:32 +0800
$request
请求的URI和HTTP协议
“"GET /index.html HTTP/1.1”
$http_host
请求地址,即浏览器中你输入的地址(IP或域名)
192.168.13.1
$status
HTTP请求状态
200
$upstream_status
upstream状态
200
$body_bytes_sent
发送给客户端文件内容大小
571
$http_referer
跳转来源
“http://www.findme.wang/”
$http_user_agent
用户终端代理
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
$ssl_protocol
SSL协议版本
TLSv1
$ssl_cipher
交换数据中的算法
RC4-SHA
$upstream_addr
后台upstream的地址,即真正提供服务的主机地址
192.168.13.1:8360
$request_time
整个请求的总时间
0.130
$upstream_response_time
请求过程中,upstream响应时间
0.001
2.2、日志分析
(1)分析有哪些ip进行了访问
可能首先,我们能够想到的是如下:
awk '{print $1}' access.log |uniq -c|sort -nr
不仔细看,还真以为实现了。原来第二个ip和第三个ip一样啊。怎么会这样呢?
因为uniq的去重,仅仅是去重相邻的。sort -u,去重虽然可以作用于全局,但是没有统计重复量啊。
怎么搞呢?
可以先排序,再去重。如下:
awk '{print $1}' access.log |sort |uniq -c |sort -nr
当然了,我们不用uniq命令也是可以解决问题的,如下:
awk '{a[$1]++}END{for(i in a){print a[i],i}}' access.log |sort -nr
2.3、open_log_file_cache指令
对于每一条日志的记录过程,都将是先打开文件,再写入日志,最后关闭。可以使用open_log_file_cache来设置日志文件缓存(默认是off),格式如下:
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
max:设置缓存中的最大文件描述符数量,如果缓存被占满,采用LRU算法将描述符关闭。
inactive:设置存活时间,默认是10s
min_uses:设置在inactive时间段内,日志文件最少使用多少次后,该日志文件描述符记入缓存中,默认是1次
valid:设置检查频率,默认60s
off:禁用缓存
三、错误日志
错误日志,可以通过err_log指令控制,语法如下:
error_log file | stderr | syslog:server=address[,parameter=value] [debug | info | notice | warn | error | crit | alert | emerg];