登录  /  注册
首页 > 运维 > Nginx > 正文

nginx的access_log日志怎么设置

PHPz
发布: 2023-05-31 10:28:29
转载
2689人浏览过

nginx 日志主要有两条指令:1)log_format:用来设置日志格式;2)access_log:用来指定日志文件的存放路径、格式

nginx的access_log日志怎么设置

log_format 日志格式

1、语法:

log_format name(格式名字) 格式样式(即想要得到什么样的日志内容) 示例:

log_format main'$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_s ent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"'
登录后复制
2、具体参数格式
nginx的access_log日志怎么设置
3、x_forwarded_for:

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_addr拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

:在server中设置x_forwarded_for

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
登录后复制

access_log

用了log_format 指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;

1、语法:

access_log path(存放路径) format (自定义日志名称) 示例:

access_log logs/access.log main;
登录后复制
2、设置刷盘策略:
access_log /data/logs/nginx-access.log buffer=32k flush=5s;
登录后复制

buffer 满 32k 才刷盘;假如 buffer 不满 5s 钟强制刷盘。

:一般log_format在全局设置,可以设置多个。access_log 可以在全局设置,但往往是定义在虚拟主机(server)中的location中。 例如:

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''"$status" $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" ''"$gzip_ratio" $request_time $bytes_sent $request_length';
log_format srcache_log '$remote_addr - $remote_user [$time_local] "$request" ''"$status" $body_bytes_sent $request_time $bytes_sent $request_length ''[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]';
open_log_file_cache max=1000 inactive=60s;
server {
server_name ~^(www\.)?(.+)$;
access_log logs/$2-access.log main;
error_log logs/$2-error.log;
location /srcache {
access_log logs/access-srcache.log srcache_log;
}
}
}
登录后复制
3、其他:

1)error_log:

配置错误日志,例如上例。

2)open_log_file_cache:

对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭。你可以使用open_log_file_cache来开启日志文件缓存(默认情况下是关闭的)。 语法:

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
登录后复制

参数注释如下:

  • max:设置缓存中的最大文件描述符数量,如果缓存被占满,采用LRU算法将描述符关闭。

  • inactive:设置存活时间,默认是10s

  • min_uses:设置在inactive时间段内,日志文件最少使用多少次后,该日志文件描述符记入缓存中,默认是1次

  • valid:设置检查频率,默认60s

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
登录后复制

3)日志分析:

通过对日志格式的定义,就可以使用常见的 Linux 命令行工具进行分析了:

查找访问频率最高的 URL 和次数:

cat access.log | awk -F ‘^A’ ‘{print $10}’ | sort | uniq -c
登录后复制

查找当前日志文件 500 错误的访问:

cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’
登录后复制

查找当前日志文件 500 错误的数量: cat access.log | awk -F ‘^A’ ‘{if(0}’ | wc -l

查找某一分钟内 500 错误访问的数量:

cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’ | grep ’09:00’ | wc-l
登录后复制

查找耗时超过 1s 的慢请求:

tail -f access.log | awk -F ‘^A’ ‘{if($6>1) print $0}’
登录后复制

假如只想查看某些位:

tail -f access.log | awk -F ‘^A’ ‘{if($6>1) print $3″|”$4}’
登录后复制

查找 502 错误最多的 URL:

cat access.log | awk -F ‘^A’ ‘{if($5==502) print $11}’ | sort | uniq -c
登录后复制

查找 200 空白页

cat access.log | awk -F ‘^A’ ‘{if($5==200 && $8 print $3″|”$4″|”$11″|”$6}’
登录后复制

切割日志

Nginx 的日志都是写在一个文件当中的,不会自动地进行切割,如果访问量很大的话,将导致日志文件容量非常大,不便于管理和造成Nginx 日志写入效率低下等问题。因此,通常需要对access_log和error_log日志进行分割。 切割日志一般利用USR1信号让nginx产生新的日志。实例:

#!/bin/bashlogdir="/data/logs/nginx"pid=`cat $logdir/nginx.pid`
DATE=`date -d "1 hours ago" +%Y%m%d%H`
DATE_OLD=`date -d "7 days ago" +%Y%m%d`for i in `ls $logdir/*access.log`; domv $i $i.$DATEdonefor i in `ls $logdir/*error.log`; domv $i $i.$DATEdonekill -s USR1 $pidrm -v $logdir"/access.log."$DATE_OLD*rm -v $logdir"/error.log."$DATE_OLD*
登录后复制
1、分析:
  • 将上面的脚本放到crontab中,每小时执行一次(0 ),这样每小时会把当前日志重命名成一个新文件;然后发送USR1这个信号让Nginx 重新生成一个新的日志。(相当于备份日志)

  • 将前7天的日志删除;

2、说明:

在没有执行kill -USR1 $pid之前,即便已经对文件执行了mv命令而改变了文件名称,nginx还是会向新命名的文件”*access.log.2016032623”照常写入日志数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。

3、logrotates:

使用系统自带的logrotates,也可以实现nginx的日志分割,查看其bash源码,发现也是发送USR1这个信号。

以上就是nginx的access_log日志怎么设置的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:亿速云网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号