tgoop.com/linuxcamp_tg/359
Last Update:
Что такое logrotate и как он спасает ваши диски
Системные логи могут незаметно занять весь диск, особенно если ты держишь nginx, docker, или пишешь логи вручную. Если ты ещё не настроил logrotate — однажды тебя очень удивит "df -h". Разберёмся, что это и как работает.
Что делает logrotate
logrotate — это системная утилита, которая:
- архивирует старые логи (обычно в .gz)
- удаляет логи старше N дней/версий
- переименовывает файлы (access.log → access.log.1, и т.д.)
- может перезапускать сервис после ротации (чтобы лог снова появился)
Где живёт конфиг
Ubuntu и Debian по умолчанию кладут правила в "/etc/logrotate.d/*" - здесь обычно уже лежат готовые правила для nginx, apt, docker и т.д. Но конфиги — это ещё не запуск.
Даже если правила лежат в logrotate.d, они не будут применяться, если logrotate либо не установлен, либо не запускается ни через cron, ни через systemd. Можно проверить работает ли logrotate у тебя уже. Посмотри, запланирован ли таймер:
systemctl list-timers | grep logrotate
Как всё включить
Установи, если не установлен:
sudo apt install logrotate
У тебя появится файл "/etc/logrotate.conf". Также появится автоматически сервис и таймер ротации логов. Можно запустить systemd‑таймер, если не запустился автоматически:
sudo systemctl enable --now logrotate.timer
Как добавить своё правило
Если у тебя, например, есть лог "/var/log/myapp.log". Создай конфиг, после чего файл будет ротироваться вместе с остальными:
/var/log/myapp.log {
daily # ротация каждый день
rotate 7 # хранить 7 архивов
compress # архивировать .gz
missingok # не ругаться, если файла нет
notifempty # не трогать, если пустой
copytruncate # обрезать файл, не перезапуская процесс
}
sudo nano /etc/logrotate.d/myapp
Что с Docker?
Docker пишет логи в "/var/lib/docker/containers/.../*.log". Они не попадают под системный logrotate. Чтобы ограничить размер:
# /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Затем:
sudo systemctl restart docker
Что с journalctl?
Если сервисы логируют в systemd‑журнал, ротация настраивается в "/etc/systemd/journald.conf".
Пример параметров:
SystemMaxUse=500M
SystemMaxFileSize=100M
MaxRetentionSec=7day
Вывод
1) Конфиги в logrotate.d — это ещё не автомат
2) Сначала проверь, может уже всё работает
3) Самый надёжный способ — logrotate.timer
4) Docker и journalctl — отдельные истории
LinuxCamp | #utils #devops #bymaga
BY LinuxCamp | DevOps
Share with your friend now:
tgoop.com/linuxcamp_tg/359