Как уменьшить размер логов Docker-контейнеров

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

dockerлогированиеjson-file

ℹ️ Docker-контейнеры могут генерировать огромные логи, что приводит к проблемам с дисковым пространством, особенно в продуктивных окружениях. Однако есть способ гибко управлять логами контейнеров, используя драйверы логирования и фильтрацию на основе уровня критичности событий.

🔥 Как это сделать:

  1. 📁 1. Выберите драйвер логирования:

    Docker по умолчанию использует драйвер json-file, который сохраняет логи в виде JSON на диск. Это удобно, но можно оптимизировать.

    Например, если у вас настроен сбор логов через Fluentd, вы можете использовать соответствующий драйвер:

    docker run --log-driver=fluentd --log-opt tag="my-app" my-app-image
  2. 📑 2. Ограничьте размер логов:

    Даже если вы используете json-file, можно ограничить размер файлов логов и количество ротаций:

    docker run --log-opt max-size=10m --log-opt max-file=3 my-app-image

    ℹ️ Это ограничит логи до 10 MB на файл и сохраняет до 3 архивных копий.

  3. ➡️ 3. Используйте logspout для маршрутизации логов:

    Для более сложных сценариев маршрутизации логов можно подключить контейнер logspout, который отправляет логи Docker в различные системы мониторинга или хранилища логов.

    Пример для отправки логов в syslog:

    docker run --name="logspout" \
    --volume=/var/run/docker.sock:/var/run/docker.sock \
    gliderlabs/logspout syslog://syslog-server:514

✳️ Эти методы помогают управлять объемом логов в Docker, снижая нагрузку на хранилище и делая логирование более управляемым.

tags: #полезно #docker #логирование

🧭 @recura_tech

Иллюстрация рабочей станции: монитор с открытым терминалом и подсветкой строк логов Docker, иконки уведомлений и утилит.
Рабочая иконографика: терминал и логи Docker.

Читайте так же