服务器优化之分割nginx日志的解决方案

[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/54/ ]

以前就看过维护nginx服务器的相关资料,但因为各种各样的原因,迟迟没有动手实践.正好趁着国庆有时间,就看了看磨途歌的阿里云服务器相关配置与程序运行状态,才发现nginx的访问日志文件已经达到了543MB,错误日志也有172MB了,还好目前磨途歌的访问量不大,如果再偷懒一点,那就棘手了.

以前就看过很多关于linux系统维护的相关资料,如centos安装、配置、维护nginx服务器,但因为各种各样的原因,迟迟没有动手实践。正好趁着国庆有时间,就看了看磨途歌阿里云服务器相关配置与程序运行状态,才发现nginx的访问日志文件已经达到了543MB,错误日志也有172MB了,还好目前磨途歌的访问量不大,如果再偷懒一点,那就棘手了。

当务之急就是确定分割nginx日志的解决方案,是按月分割,还是按日分割?最后还是采用了常用的分割方案:每天凌晨,执行两个步骤,1)把nginx日志另存到对应的年文件夹,月文件夹下,以年月日命名的文件,2)然后让nginx重新生成日志。

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

[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服务器重新生成一份新的日志文件

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

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

#!/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配置文件,里边应该有类似下边的记录,替换成正确的路径。

pid        /var/run/nginx.pid;

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

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

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

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

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

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

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

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

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

    评论:

    1. 暂无评论...
    2. 我来说两句:

        切换  

      磨途歌检测发现,您当前使用的浏览器版本过低,要想使用画板模式,请先更新浏览器

        切换  

      磨途歌随机验证码