MENU

Logrotate日志切割

前言

最近将docker上的nginx服务完善添加日志的切割,之前一直是一个文件时间久了出现体积过大,而且不利于查看访问情况(比如每个小时情况、每天的情况等)

实现

日志切割,在Linux中自带有Logrotate,但是默认情况最小粒度是按天切割,比如需要按小时切割则需要做一些修改。下面为详细的过程。

  • Logrotate配置文件修改

    # 编辑
    vi /etc/logrotate.conf
    
    # 删除下面这行前面的#号
    include /etc/logrotate.d
    
  • 支持按小时切割

    # 将按天切割中的logrotate复制到按小时cron
    cp /etc/cron.daily/logrotate /etc/cron.hourly/logrotate
    
  • 添加具体服务的切割配置文件

    # 进入logrotate目录新建配置文件
    cd /etc/logrotate.d
    
    # 这里示例采用nginx
    vi nginx
    
    # 填充如下内容
    /var/log/nginx/*.log {   # 这里是nginx中存放日志的地方
          hourly                      # 按小时切割
          missingok                   # #如果日志文件不存在,继续进行下一个操作,不报错
          rotate 48                   # 最多保留最近48份日志文件
          nocompress                  # 不压缩
          create 640 nginx adm        # 新日志文件的权限以及组
          sharedscripts               
          postrotate
              docker exec nginx bash -c "if [ -f /run/nginx.pid ]; then kill -USR1 `docker exec nginx cat /run/nginx.pid`; fi"  # 执行切割的命令,注意博主这边命名nginx的container为nginx
          endscript
     }
    

haproxy分享

博主这边再分享一个haproxy的日志切割配置文件,当然官方默认的镜像是不支持日志输出,可以使用一位作者使用的镜像mminks/haproxy-docker-logging

/var/log/haproxy/haproxy.log {
      hourly
      missingok
      rotate 48
      nocompress
      create 640 root adm
      sharedscripts
      postrotate
         docker exec haproxy sh -c "/bin/kill -HUP `docker exec haproxy cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true"  # 注意博主这边命名nginx的container为haproxy
      endscript
}
标签: Linux, docker
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码