Ротация логов docker контейнеров

В продолжение прошлой статьи рассмотрим пример настройки ротации логов контейнеров на примере CentOs 7. В моём случае stdout и stderr контейнеров никакой ценности не имеют, а все значимые события пишутся либо в примонтированные директории, либо в Apache Kafka. В ротации логов внутри самих контейнеров не вижу смысла.

Для начала создадим файл:

nano /etc/logrotate.d/docker-containers

И заполним примерно таким содержимым:

/var/lib/docker/containers/*/*.log {
 rotate 7
 daily
 size 50M
 compress
 missingok
 notifempty
 copytruncate
 dateext
}

Затем принудительно проротируем логи.

logrotate -f /etc/logrotate.conf

Пожалуй, самая важная директива в данном конфиге — это copytruncate. Обязательна для логов докер-контейнеров. Создаёт копию оригинального log-файла, после чего обнуляет оригинальный, т.е. сам файл не удаляется.

Дополнительные материалы: