【问题标题】:traefik logrotate access log docker volumetraefik logrotate 访问日志 docker 卷
【发布时间】:2019-12-14 23:04:54
【问题描述】:

我正在尝试使用主机上的 traefik docker 记录访问日志。当 logrotate 运行时,它会创建一个新的日志文件,很好,但它总是为零,就像没有重新挂载 docker 卷一样。在 traefik docker 上,访问日志仍在继续增长。 logrotate 我的访问日志的技巧是什么?谢谢

我的 /etc/logrotate.d/traefik

/var/www/traefik_access.log {
  size 10K
  rotate 30
  missingok
  notifempty
  compress
  dateext
  dateformat .%Y-%m-%d
  create 0644 www-data www-data
  postrotate
    docker kill --signal="USR1" traefik
  endscript
}

我的 docker-compose.yml :

version: '3'

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: always
    ports:
    - 80:80
    - 443:443
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - ./traefik.toml:/traefik.toml
    - ./acme.json:/acme.json
    - ./traefik_access.log:/access.log
    networks:
    - web

我的文件

-rw-r--r--  1 www-data www-data  1818 août   7 11:30 traefik_access.log.2019-08-07.gz
-rw-r--r--  1 www-data www-data     0 août   7 11:30 traefik_access.log

【问题讨论】:

    标签: docker traefik logrotate


    【解决方案1】:

    我在使用“traefik:chevrotin”时遇到了同样的问题。 感谢@anastymous 评论,我在How to enable logrotation for traefik? 线程中找到了解决方案。

    要正确应用USR1信号,需要在docker-compose.yml中绑定日志所在的日志目录,而不是绑定每个日志文件。

    在收到信号 USR1 时成功对数旋转:

    OK docker-compose.yml

    services:
    
      traefik:
        image: "traefik:chevrotin"
        container_name: "traefik"
        restart: "unless-stopped"
        command:
          - "--log.level=DEBUG"
          - "--log.filePath=/logs/traefik.log"
          - "--accessLog.filePath=/logs/access.log"
        volumes:
          - "/var/log/traefik:/logs" #make sure to touch log files before starting container
    

    在收到信号 USR1 时对数旋转失败:

    NOK docker-compose.yml

    services:
    
      traefik:
        image: "traefik:chevrotin"
        container_name: "traefik"
        restart: "unless-stopped"
        command:
          - "--log.level=DEBUG"
          - "--log.filePath=/logs/traefik.log"
          - "--accessLog.filePath=/logs/access.log"
        volumes:
          - "/var/log/traefik.log:/logs/traefik.log"
          - "/var/log/traefik-access.log:/logs/acccess.log"
    

    希望对你有帮助!

    【讨论】:

    • 我只是在为我的 traefik 容器(docker)寻找激活日志轮换,偶然发现了这个。感谢您分享您的见解!
    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2020-03-30
    • 1970-01-01
    相关资源
    最近更新 更多