前言
本文主要记录nginx日志过大的问题处理以及nginx访问日志的分析统计。
日志分割采用Linux自带的logrotate,日志分析使用goaccess。
nginx日志分割
1、编写日志分割脚本
# cd /etc/logrotate.d/
# vi nginx
脚本内容如下:
nginx
其中:
/data/logs/*.log //nginx日志目录daily //每天切割
dateext //%Y%m%d作为后缀
missingok //日志不存在,分析下一个
rotate 7 //保留7天的日志文件
compress //转储之后压缩.tar.gz
delaycompress //总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
notifempty //空文件不转储
create 640 root root //新日志文件模式
sharedscripts //整个日志组运行一次的脚本
更多选项说明可参考官网文档:http://www.linuxcommand.org/man_pages/logrotate8.html
2、运行命令
/usr/sbin/logrotate -vf /etc/logrotate.d/nginx
logrotate -f强制执行logrotate可以查看效果。
3、写入crontab定期执行
# crontab -e
输入:
00 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx
每天0点执行日志分割。
执行效果
nginx日志分析
1、安装goaccess
# wget http://tar.goaccess.io/goaccess-1.2.tar.gz
# tar -xzvf goaccess-1.2.tar.gz
# cd goaccess-1.2/
# ./configure --enable-utf8
# make
# make install
提示:更多安装选项可参考官网文档:https://goaccess.io
2、配置goaccess
下载配置文件: https://raw.githubusercontent.com/allinurl/goaccess/master/config/goaccess.conf
# mv goaccess.conf .goaccesssrc
主要配置:
time-format %T
date_format %d/%b/%Y
log_format %h %^[%d:%^] "%r" %s %b "%R" "%u"
3、分析日志
# goaccess -f air_access.log -p ~/.goaccessrc -a > air_report.html
其中air_report.html就是输出的分析结果页面。
日志分析结果1
日志分析结果2
日志分析结果3
结语
上面提到的nginx日志分割和日志分析只是在项目实施中用的方法之一。应该还有更好、更优雅的方式。另外日志分割和日志分析还有很多配置大家可以根据实际需求进行研究。
本文暂时没有评论,来添加一个吧(●'◡'●)