日志分割配置

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

 

最后修改日期: 2019年6月27日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。