Журналирование Docker-контейнеров через journald позволяет централизованно управлять логами всех контейнеров Ринго. В этом руководстве описано, как перевести контейнеры на драйвер journald, настроить автоматическую ротацию логов и экспортировать их для передачи в техническую поддержку.
Результат: все логи Ринго будут храниться в системном журнале, автоматически ротироваться и легко экспортироваться для диагностики.
При использовании
journaldв логах бэкенда Ринго возможно дублирование даты в записях.
root или sudo)systemd (Ubuntu 20.04+, Debian 11+, CentOS 8+, RHEL 8+)Перейдите в директорию с вашим docker-compose.yml файлом Ринго:
cd /etc/ringo
Откройте файл docker-compose.yml для редактирования:
nano docker-compose.yml
Добавьте для каждого контейнера параметр logging сразу после параметра image. Пример для контейнера roll-deploy-backend:
services:
roll-deploy-backend:
image: # ...
logging:
driver: journald
# ... остальные параметры контейнера
Повторите добавление блока logging для всех контейнеров Ринго.
Сохраните файл и пересоберите контейнеры:
docker compose up -d
Проверьте, что логи поступают в journald:
journalctl CONTAINER_NAME=roll-deploy-backend -n 50
Эта команда покажет последние 50 записей из логов контейнера roll-deploy-backend. Проверьте наличие логов для каждого из контейнеров Ринго.
Важно! После смены драйвера логов старые логи, хранившиеся в JSON-файлах Docker (
/var/lib/docker/containers/), не будут автоматически перенесены вjournald. Если вам нужны старые логи — сохраните их перед переключением.
По умолчанию journald автоматически управляет размером журнала, но для продакшен-серверов рекомендуется явно настроить параметры ротации, чтобы избежать переполнения диска.
Откройте конфигурационный файл journald:
sudo nano /etc/systemd/journald.conf
Найдите и раскомментируйте (уберите #) следующие параметры, задав нужные значения:
[Journal]
# Максимальный размер всех журналов на диске (рекомендуется 1-2 ГБ)
SystemMaxUse=1G
# Оставлять минимум свободного места на диске (10% от размера раздела)
SystemKeepFree=500M
# Максимальный размер одного журнального файла
SystemMaxFileSize=100M
# Время хранения записей (7 дней)
MaxRetentionSec=7day
Описание параметров:
SystemMaxUse — максимальный размер всех журнальных файлов на диске. Если лимит превышен, старые записи удаляются.SystemKeepFree — сколько места должно оставаться свободным на диске. Если свободного места меньше, старые логи удаляются.SystemMaxFileSize — максимальный размер одного файла журнала. При достижении лимита создаётся новый файл.MaxRetentionSec — время хранения записей. Записи старше указанного срока автоматически удаляются.Совет: Для серверов с высокой нагрузкой рекомендуется увеличить
SystemMaxUseдо 2-4 ГБ, чтобы сохранять больше данных для диагностики.
Сохраните файл и перезапустите службу systemd-journald:
sudo systemctl restart systemd-journald
Проверьте текущее использование дискового пространства журналом:
journalctl --disk-usage
Вывод покажет, сколько места занимают журналы. Пример:
Archived and active journals take up 512.0M in the file system.
Если нужно немедленно очистить старые логи до заданного размера, выполните:
sudo journalctl --vacuum-size=500M
Или удалите логи старше определённого срока:
sudo journalctl --vacuum-time=7d
Для просмотра логов конкретного контейнера используйте:
journalctl CONTAINER_NAME=roll-deploy-backend
Для просмотра логов в реальном времени (аналог docker logs -f):
journalctl CONTAINER_NAME=roll-deploy-backend -f
Для просмотра логов за определённый период:
journalctl CONTAINER_NAME=roll-deploy-backend --since "2026-01-27 10:00:00" --until "2026-01-27 12:00:00"
Для диагностики проблем техподдержке может потребоваться полный набор логов за определённый период. Вы можете экспортировать логи в текстовый файл или архив.
Экспортируйте логи конкретного контейнера за последние 24 часа:
journalctl CONTAINER_NAME=roll-deploy-backend --since "24 hours ago" > ringo-roll-deploy-backend.txt
Укажите точный диапазон дат и времени:
journalctl CONTAINER_NAME=roll-deploy-backend --since "2026-01-27 08:00:00" --until "2026-01-27 18:00:00" > ringo-roll-deploy-backend-2026-01-27.txt
Для удобства передачи в техподдержку логи можно упаковать в архив:
journalctl CONTAINER_NAME=roll-deploy-micromdm --since "24 hours ago" > ringo-roll-deploy-micromdm.txt
journalctl CONTAINER_NAME=roll-deploy-db --since "24 hours ago" > ringo-roll-deploy-db.txt
journalctl CONTAINER_NAME=roll-deploy-backend --since "24 hours ago" > ringo-roll-deploy-backend.txt
tar -czf ringo-logs-$(date +%Y-%m-%d).tar.gz ringo-roll-deploy-*.txt
Эти команды создадут архив ringo-logs-2026-01-28.tar.gz со всеми экспортированными логами за последние 24 часа. Если нужны логи за более длительный период, укажите его так, как описано в разделе «Экспорт логов за определённый период».
Для автоматизированной обработки логов можно экспортировать их в JSON:
journalctl CONTAINER_NAME=roll-deploy-backend --since "24 hours ago" -o json > ringo-roll-deploy-backend.json