日志分割配置
nginx 默认没有日志的分割,在网上查了很多资料,大多数人选择了自己写一个定时任务手动去切割日志文件,但是在使用 yum 安装的过程中。已经自动添加了 logrotate 的日志分割配置。
在 /etc/logrotate.d/
中可以看到nginx 的配置文件:
/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }
将按天对 nginx 默认日志目录下的所有日志进行分割;
详细的分割配置参考 logrotate 的内容;
第二天查看日志,发现日志的切割时间是在凌晨3点左右;
因为数据统计的需要,我们需要日志都是只有当天的;
查看/etc/crontab
中的定时任务配置:
根据注释在下面添加 daily 任务的设置;
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 0 0 * * * root run-parts /etc/cron.daily
日志统计
某日的 IP 访问次数与访问 IP 输出到文件 root/nginx_cnt_ip_time
grep "13/Dec/2017" access.log-20171214 | awk '{cnt[$1]++;}END{for(i in cnt){printf("%s\t%s\n", cnt[i], i);}}' | sort -n >> ~/nginx_cnt_ip_time
留言