当前位置: 移动技术网 > 网络运营>服务器>Linux > centos中nginx按日期自动分割访问日志的方法

centos中nginx按日期自动分割访问日志的方法

2019年04月24日  | 移动技术网网络运营  | 我要评论
web 访问日志 (access_log) 记录了所有外部客户端对web服务器的访问行为,包含了客户端ip,访问日期,访问的url资源,服务器返回的http状态码等重要信息

web 访问日志 (access_log) 记录了所有外部客户端对web服务器的访问行为,包含了客户端ip,访问日期,访问的url资源,服务器返回的http状态码等重要信息。

一条典型的web访问日志如下:

复制代码 代码如下:

192.168.50.195 - - [17/jun/2016:23:59:12 +0800] "get / http/1.1" 304 0 "-" "mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/51.0.2704.84 safari/537.36" "-"1

1、 要解决问题:

当网站访问量大后,日志数据就会很多,如果全部写到一个日志文件中去,文件会变得越来越大。文件大速度就会慢下来,比如一个文件几百兆。写入日志的时候,会影响操作速度。另外,如果我想看看访问日志,一个几百兆的文件,下载下来打开也很慢。

注意:使用第三方免费的日志分析工具-日志宝,可以上传nginx、apache、iis的日志文件,它们帮助分析网站安全方面。毕竟专攻,更加专业。日志宝对上传的文件也是做了大小限制的,不超过50m。

2、日志自动切割脚本编写

nignx没有自动分开文件存储日志的机制。由于nginx它不会帮你自动分文件保存。所以,需要自己编写脚本来实现。

#!/bin/bash
# program:
#   auto cut nginx log script.
# 2016/6/15 luozhibo 

# nginx日志路径 /var/log/nginx/
logs_path=/var/log/nginx
today=$(date -d 'today' +%y-%m-%d)
#echo $today

# 移动日志并改名
mv ${logs_path}/error.log ${logs_path}/error_${today}.log
mv ${logs_path}/access.log ${logs_path}/access_${today}.log

# 向nginx主进程发送重新打开日志文件的信号
kill -usr1 $(cat /var/run/nginx.pid)

上面shell脚本的原理是:

先把以前的日志文件移动重命名,目的是就是备份。

3、crontab自动任务配置

直接编写vim /etc/crontab 或者 直接通过echo写入自动任务

复制代码 代码如下:

echo '59 23 * * * root /var/log/nginx/nginx_log_division.sh >> /var/log/nginx/cutnginxlog.log 2>&1' >> /etc/crontab

每晚23:59分自动执行计划任务  以root用户身份运行  将自动任务的执行日志(错误和正确的日志)自动写入cutnginxlog.log  “命令 >> 2>&1” 表示以追加方式将正确输出和错误输出都保存到同一个文件中

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网