Logo
ХелпдескУправление знаниямиБизнесуТарифыЧто такое KCS?Блог
Русский
Личный кабинет
Настройка системы
© 2023 - 2026 ООО «Свормика». Swarmica - Платформа управления знаниями и ресурсами техподдержки. Версия: 6.1.2

#2190: Как настроить логи docker в journald для Swarmica

Отредактирована: сегодня

Решение

1. Подключитесь к серверу Swarmica по SSH как root пользователь

2. Перейдите в папку /root/swarmica и создайте резервную копию файла docker-compose.yml:

cd ~/swarmica
cp docker-compose.yml docker-compose.yml.backup

3. Откройте файл docker-compose.yml в текстовом редакторе, найдите строку services:. Прямо перед ней (после блока volumes:) добавьте модуль логирования:

volumes:
  swarmica_ai_assistant: {}
  # ... остальные тома ...
  traefik_data: {}

x-logging: &default-logging           # <-- добавляем эти строки
  driver: journald                    # <-- 
  options:                            # <-- 
    tag: "{{.Name}}"                  # <--

services:
  ...

4. В том же файле найдите каждый сервис и добавьте одну строку logging: *default-logging Например:

  frontend:
    logging: *default-logging                                     # <-- добавляем эту строку
    image: reg.gl.swd.im/swarmica/frontend:${SW_FRONTEND_VERSION}
    depends_on:
      django:
        condition: service_healthy
    restart: always

Проделайте то же самое для сервисов:

  • frontend
  • helpcenter
  • django
  • postgres
  • redis
  • celeryworker
  • celerybeat
  • traefik

5. Проверьте синтаксис конфигурационного файла:

docker compose config > /dev/null && echo "OK"

Если видите OK — всё хорошо.

5. Настройте ротацию логов. Для этого откройте файл /etc/systemd/journald.conf в текстовом редакторе, найдите секцию [Journal] и установите такие параметры (раскомментируйте или допишите, если их нет):

[Journal]
SystemMaxUse=2G
SystemMaxFileSize=200M
MaxRetentionSec=2week
ПараметрЗначение
SystemMaxUseМаксимальный общий размер журнала на диске — 2 гигабайта
SystemMaxFileSizeМаксимальный размер одного файла журнала — 200 МБ
MaxRetentionSecХранить логи не дольше 2 недель

Значение параметров можно подобрать другие, в зависимости от интенсивности генерации логов.

6. Примените настройки ротирования логов:

systemctl restart systemd-journald

7. Перезапустите Swarmica:

cd /root/swarmica
docker compose down && docker compose up -d

Примеры использования journald для операций с логами Swarmica:

Последние строки по контейнеру:

journalctl CONTAINER_NAME=swarmica-django-1 -n 100

В реальном времени (аналог tail -f):

journalctl CONTAINER_NAME=swarmica-django-1 -f

Логи всех контейнеров проекта:

journalctl CONTAINER_NAME='swarmica-*' -f

За период времени:

# За последний час
journalctl CONTAINER_NAME=swarmica-django-1 --since "1 hour ago"

# С конкретной даты
journalctl CONTAINER_NAME=swarmica-django-1 --since "2024-06-01 10:00:00"

# За вчерашний день
journalctl CONTAINER_NAME=swarmica-django-1 --since yesterday --until today

# Точный интервал
journalctl --since "2024-06-01 10:00:00" --until "2024-06-01 12:00:00"

Логи двух конкретных сервисов одновременно:

journalctl \
  CONTAINER_NAME=swarmica-django-1 \
  CONTAINER_NAME=swarmica-postgres \
  --since "1 hour ago"

Найти в логах все Traceback за сутки:

journalctl CONTAINER_NAME='swarmica-*' --since "24 hours ago" -o cat | grep -A 20 "Traceback"

Сохранение логов в файл:

journalctl CONTAINER_NAME=swarmica-django-1 --since "2024-06-01" > django.log