Appearance
Логирование
Структура каталогов с логами
Логи сайтов
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