一.日志配置
1.相关指令:log_format,access_log,error_log,open_log_file_cache
2.日志格式:log_format
- vim /etc/nginx/nginx.conf
$remote_addr 远程地址: 记录客户端IP地址
$remote_user 远程用户:记录客户端用户名称
[$time_local] 本地时间:服务器自身时间
$request 请求:记录请求的URL和HTTP协议(后面的http/1.1)协议版本
"GET /1.html HTTP/1.1"
"GET /index.html HTTP/1.1"
$status 状态:记录请求状态(404表示是缺失的)
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
$http_referer 记录从哪个页面链接访问过来的 (超链接)
$http_user_agent 记录客户端浏览器相关信息 (火狐,IE)
$http_x_forwarded_for 代理ip
- tailf /var/log/nginx/access.log (在访问日志中可以看日志格式的信息)
第一个-表示分割符,第二个表示匿名用户
2.访问日志
一下是访问日志的一条记录
192.168.100.254 - - [17/Dec/2017:14:45:59 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://192.168.100.10/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0" "-"
192.远程主机IP
- - 用户:第一个-是分割符,第二个是匿名用户
[17/Dec/2017:14:45:59 +0800]:时间
get获得,下载,还有post提交。
/nginx-logo.png 下载图片
http版本
状态码 什么结果。对,还是错
368 大小
引用自哪个连接,主页http://192.168.100.10/
Mozilla 5.0浏览器的版本
Windows NT 客户端系统类型
3.错误日志error_log
简介:当出现一些错误时(比如404)就可以访问错误日志,tailf /var/log/nginx/error_log
-
个性化404
我们访问一个网站如果不存在就会出现404报错,如果我们要向让页面看起来美观一点,可以进行设计
vim /etc/nginx/conf.d/hanqiu.conf #:再次定义出现404错误页面,就去找404.html
vim /hanqiu/404.html
404.jpg是图片,从windows移到你的网站下
重新启动nginx
systemctl restart nginx
查看效果:
4. 日志缓存
简介:大量访问到来时,对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭.占用了系统的IO,与业务无关。
可以使用open_log_file_cache来设置
语法:open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m ;
max 1000 指的是日志文件的FD,最大的缓存数量为1000。超了怎么办,看下面
min_users 3 20秒内小于3次访问的FD,就给你清掉,结合inactive 20s 的时间。
valid 1m 检查周期为1分钟。
总结:缓存最多1000个,到了极限,每分钟开始清除掉 20秒内小于3次的文件FD
二.日志轮转
当我们安装nginx时,日志轮状就会默认开启
vim /etc/logrotate.d/nginx
/var/log/nginx/*log {
待切割的日志
create 0644 nginx nginx
创建新的日志文件,属主
daily
天
rotate 10
10份
missingok
丢失不提示
notifempty
空文件的话,不转储
compress
压缩
sharedscripts
轮转后脚本
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。
endscript
}
轮转语句:指令 /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
三.日志分析
先上传一个日志的包,用作后续做日志分析用:
进行解压:
解压完成后:
进入log目录
1.统计总日志条数:
2. 统计2017年9月5日 PV量
grep '05/Sep/2017' cd.mobiletrain.org.log |wc -l
3. 统计九月·5号,八点到九点的pv量
grep '05/Sep/2017:08' sz.mobiletrain.org.log |wc -l
awk '$4>="[05/Sep/2017:08:00:00" && $4<="[05/Sep/2017:09:00:00" {print $0}' sz.mobiletrain.org.log | wc -l
4. 统计2017年9月5日 一天内访问最多的10个IP(ip top10)
grep '05/Sep/2017' cd.mobiletrain.org.log | awk '{ ips[$1]++ } END{for(i in ips){print i,ips[i]} } '| sort -k2 -rn | head -n10
5. 统计2017年9月5日 访问大于100次的IP
grep '05/Sep/2017' cd.mobiletrain.org.log | awk '{ ips[$1]++ } END{for(i in ips){ if(ips[i]>100) {print i,ips[i]}} } '| sort -k2 -rn | head -n10
182.140.217.111 138
就不在详细演示,结合具体需求进行分析就行。