linux下nginx日志的优化分割

Server 林涛 2106℃ 0评论

分割nginx日志采用的是每天凌晨分割,分为两个步骤:1)把nginx日志另存到对应的年文件夹,月文件夹下,以年月日命名的文件,2)然后让nginx重新生成日志。

例如今天是2013年10月6号,那么晚上的23点59分就开始分割日志,就执行下边的命令,把nginx访问日志access.log移动到指定目录。

1
2
[root@localhost ~]# mv /var/log/nginx/access.log /var/log/nginx/bak/2013/10/access_20131006.log
[root@localhost ~]# mv /var/log/nginx/error.log /var/log/nginx/bak/2013/10/error_20131006.log

然后再执行下边的命令,让nginx服务器重新生成一份新的日志文件

1
kill -USR1 `cat /var/run/nginx.pid`

思路清晰了,就可以把上边的操作写成一个脚本文件,需要时执行一下就好了,下边给出用来分割nginx日志的脚本。

1
2
3
4
5
6
#!/bin/bash
log_path="/var/log/nginx"
mkdir -p  $log_path/bak/$(date +%Y)/$(date +%m)
mv $log_path/access.log  $log_path/bak/$(date +%Y)/$(date +%m)/access_$(date +%Y%m%d).log
mv $log_path/error.log  $log_path/bak/$(date +%Y)/$(date +%m)/error_$(date +%Y%m%d).log
kill -USR1 `cat /var/run/nginx.pid`

大致说明一下代码的意义:

第2行声明了一个变量,用来设置nginx的日志路径

第3行新建保存日志的目录,如果目录存在则略过

第4,5行移动nginx的访问日志和错误日志到指定目录下

第6行让nginx重新生成日志文件

这里需要注意:阿里云服务器上安装的是centos系统,其他的linux系统可能需要稍微修改一下,要修改的就两个地方:

1)log_path="/var/log/nginx",修改成nginx日志存放的路径

2)kill-USR1 `cat /var/run/nginx.pid`,修改成nginx.pid的存放位置,可以看看nginx.conf配置文件,里边应该有类似下边的记录,替换成正确的路径。

1
pid        /var/run/nginx.pid;

最后,我们需要每天晚上23点59分手动执行我们上边写好的脚本?如果可以,别这么做,因为crontab很担心你抢了它的饭碗,我们只需要跟crontab打声招呼,就好了。

1)先检测一下linux系统的crontab服务是否启动

1
[root@localhost ~]# /etc/init.d/crond status

如果出现类似crond (pid  1889) is running…的提示,说明crontab已经运行了,如果提示crond is stopped,那么就执行下边的命令让它工作。

1
2
[root@localhost ~]# /etc/init.d/crond start
Starting crond: [  OK  ]

2)然后给linux系统的crontab服务添加任务

1
2
[root@localhost ~]# crontab -e
59 23 * * * /bin/bash /nginx分割脚本的路径

保存就可以了,从左往右简单的说明一下上边的命令:分钟 小时 日 月 周 执行的命令,星号表示所有时间段。上述的设定之后,linux系统的crontab服务就会在每天的23点59分执行指定的脚本,很方便。

后期可以添加用tar来压缩打包日志的功能,实现起来也很容易,有时间,再更新了。

如需转载请注明: 转载自26点的博客

本文链接地址: linux下nginx日志的优化分割

转载请注明:26点的博客 » linux下nginx日志的优化分割

喜欢 (0)
发表我的评论
取消评论

表情