- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
nginx日志研究
日志切割1概论服务器程序运行时会产生各种日志,如错误日志,登陆日志等。这些日志作用很大,errlog可以分析服务器运行状况,出现的bug等。Accesslog可以做数据挖掘,用户行为分析。这些数据随着时间的增长会变得很大,根据需要可以做相应的切割。2原理服务器的代表:APACHE、 NGINX。就拿它们为例。在httpd.conf 和nginx.conf中可以配置使它们在运行的时候自动产生日志。当服务器运行一段时间后,日志会变得很大,不容易查找和分析。我们可以每天备份一份,或者按大小备份。日志切割的原理其实是将:当前的日志更名保存,然后服务器重载配置文件,重新生成日志文件。3实例 拿NGINX为例。3.1首先将日志名按照格式更改,可以按照时间,也可以按照大小。这里有两种方式对日志进行更改第一种:linux指令Mv access_log access_log_2013/05/20第二种方式:用logrotate进行更改。logrotate是对日志轮询的工具,轮询则意味着备份,可以按照名称,亦可以按照大小等等。其生效是依靠配置文件来的。在/etc/logrotate.conf ,这是主配置文件,记录了大概的配置,更细的配置则在/etc/logrotate.d/目录下,需要新建一个相应的配置文件,这里我们建立名为nginx的文件。在logrotate.conf里有 include /logrotate.d/nginx 将自己写的配置文件包括进去。Logrotate 还可以将日志进行压缩,记录转存的计数。更详细的配置在http://5/2999926/790908http://5/2999926/790908对文件进行更名的配置是:dateext; logrotate 会根据这个命令将文件按照时间进行更名。然后再发送 消息让nginx重载配置文件,重新生成日志。重要的一点:logrotate是一个程序,不是一项服务,他可以将文件更名,但不能每天都这样做,因为它不是服务,会持续性的运行着。如果每天切割日志,则需要定时任务的配合。后面后讲到cron的应用。3.2然后发信号给nginx主进程。这里是:kill –USR1 `cat /usr/local/nginx/logs/nginx.pid`Kill 并不是杀死进程,是发信号的意思,根据后面的参数不同产生不同的效果。 USR1是用户自定义的信号,一般没什么特定的作用,当用户发送USR1信号给apache或者nginx主进程的时候,主进程此时的响应会是先停止处理用户请求,将数据写入硬盘,然后重载配置文件,继续写入日志。注意,此时的继续写入日志是如果原来的access_log存在,则继续写入,如果不存在,则生成名为access_log的文件。如果日志切割的话,则意味着在此之前就得对日志进行更名。到此,日志切割的步骤基本上完成了。如果需要每天切割一次,则需要些定时任务。3.3定时任务Linux系统的定时任务分为两块,一个是系统任务,一个是用户任务。系统任务:系统每天,每星期,每个月都会定时执行的任务。需要配置文件才能生效。配置文件在 /etc/crontab ,修改之,就能生效。01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly系统会根据这四行,每小时,每天,每星期,每月执行里面的任务。/etc/cron.daily等里面是 要执行的任务指令。比如/usr/sbin/logrotate -f /etc/logrotate.d/nginx或者/bin/bash /usr/local/nginx/nginx.shNginx.sh 是自己写的将文件更名的脚本指令:Mv /usr/local/nginx/logs/access.log access_log_${date –d +”%Y”+”%M”}用户任务则相对简单些,直接用命令:crontab –e打开用户计划任务,在里面写入你要执行的任务就行了。Logrotate –f /etc/logrotate.d/nginx或者Usr/local/nginx/nginx.sh为了每天执行,则需要在前面写上时间,于是,整个的指令如下:00 00 * * * /usr/local/nginx/nginx.sh*表示每 - 代表从哪到哪 1-3 从一到3/ 表示每隔一共五位,依次表示 分钟/ 小时/ 天/ 月/ 星期具体的介绍见/tianlesoftware/article
文档评论(0)