Skip to content

Логирование

Структура каталогов с логами

Логи сайтов

bash
/var/www/logs/
├─ keycloak/ # логи Keycloak
  ├─ auth.a-ceramica.error.log
  └─ auth.a-ceramica.access.log
├─ frontend/ # логи фронтендов
  ├─ admin.a-ceramica.error.log
  └─ admin.a-ceramica.access.log
└─ backend/ # логи бэкенда
    ├─ api.a-ceramica.error.log
    └─ api.a-ceramica.access.log

Ротация и сжатие логов

Для файлов access.log и error.log у каждого из сервисов настроена автоматическая ежедневная ротация с хранением архивов за последние 7 дней (т.е. при ежедневной ротации это 7 архивов). После каждой ротации логи автоматически сжимаются в gzip

Цель ротации — ограничить размер лог-файлов, не допустить переполнения диска и упростить чтение логов за конкретную дату.


Конфигурация logrotate:

Файл конфигурации logrotate для сайтов находится по пути:

bash
/etc/logrotate.d/services

Это кастомный конфиг-файл, созданный вручную и автоматически подхватываемый системой, так как logrotate по умолчанию читает все файлы из директории /etc/logrotate.d/


Пример содержимого конфига

bash
/var/www/logs/backend/*.log
/var/www/logs/frontend/*.log
/var/www/logs/keycloak/*.log {
    daily # Ротация каждый день
    rotate 7 # Хранить последние 7 архивов
    compress # Сжимать логи после ротации в gzip
    delaycompress # Уменьшает размер лог-файлов при ротации
    missingok # Не ругаться, если лог отсутствует
    notifempty # Не рутовать пустые файлы
    create 0640 www-data www-data # Создавать новые файлы с нужными правами
    sharedscripts # Использовать скрипты для ротации и перезапуска сервисов

    postrotate # После ротации выполняется скрипт
        systemctl reload nginx > /dev/null 2>&1 || true # Перезагрузка Nginx
    endscript
}

💡 7 архивов = 7 дней, если ротация выполняется ежедневно.


Проверка конфигурации

Чтобы посмотреть содержимое текущего конфига:

bash
cat /etc/logrotate.d/services

Проверить конфигурацию без выполнения ротации:

bash
sudo logrotate -d /etc/logrotate.d/services

Принудительно выполнить ротацию вручную:

bash
sudo logrotate -f /etc/logrotate.d/services

Внутренний ресурс компании