nginx日志log

本文详细介绍了Nginx的日志配置,包括log_format、access_log、error_log和open_log_file_cache指令,以及日志轮转的实现和日志分析的方法,如统计PV量、IP访问次数等。

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

一.日志配置

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

就不在详细演示,结合具体需求进行分析就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值