Logrotate — это настоящий спаситель системного администратора, который помогает держать логи под контролем, предотвращая их разрастание до гигантских размеров. В этой статье разберём, как настроить Logrotate на различных дистрибутивах Linux, включая примеры для популярных сервисов, таких как NGINX, Netdata и MariaDB. Приготовьтесь к путешествию в мир упорядоченности и лёгкого юмора!
Что такое Logrotate и зачем он нужен?
Представьте, что у вас есть сервер, работающий уже несколько месяцев. Вы заходите в /var/log/ и видите файлы с логами размером в гигабайты. Не паникуйте — Logrotate спасёт положение! Он автоматически архивирует, удаляет или сжимает старые логи, позволяя вашей системе работать без сбоев.
Установка Logrotate
У большинства современных дистрибутивов Logrotate уже установлен. Чтобы проверить это, выполните:
logrotate --version
Если Logrotate не установлен, воспользуйтесь следующими командами для его установки:
- Ubuntu/Debian:
sudo apt update && sudo apt install logrotate
- CentOS/RHEL:
sudo yum install logrotate
- Fedora:
sudo dnf install logrotate
- Arch Linux:
sudo pacman -S logrotate
Основные файлы конфигурации
- Глобальный файл конфигурации:
/etc/logrotate.conf
В этом файле задаются общие правила, которые применяются ко всем логам. - Каталог для отдельных конфигураций:
/etc/logrotate.d/
Здесь находятся файлы с настройками для конкретных приложений.
Базовая настройка Logrotate
Давайте разберём пример базовой конфигурации в /etc/logrotate.conf:
weekly rotate 4 create compress include /etc/logrotate.d
- weekly — ротация логов раз в неделю.
- rotate 4 — хранить 4 архивных копии логов.
- create — создавать новые файлы логов после ротации.
- compress — сжимать архивы для экономии места.
- include /etc/logrotate.d — подключить дополнительные настройки из каталога.
Примеры настройки для популярных сервисов
Настройка для NGINX
Логи NGINX могут разрастаться до гигантских размеров. Чтобы настроить их ротацию, создайте файл /etc/logrotate.d/nginx:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
Здесь:
- daily — ротация логов ежедневно.
- rotate 7 — хранить 7 архивных копий.
- postrotate — отправляет сигнал
USR1, чтобы NGINX открыл новые файлы логов.
Настройка для Netdata
Netdata активно пишет логи в /var/log/netdata/. Создайте файл /etc/logrotate.d/netdata:
/var/log/netdata/*.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 0640 netdata netdata
sharedscripts
postrotate
systemctl restart netdata > /dev/null 2>&1 || true
endscript
}
- weekly — ротация раз в неделю.
- postrotate — перезапуск Netdata для открытия новых логов.
Настройка для MariaDB
MariaDB пишет свои логи в /var/log/mysql/. Создайте файл /etc/logrotate.d/mysql:
/var/log/mysql/*.log /var/log/mysql/*.err {
daily
missingok
rotate 5
compress
delaycompress
notifempty
create 640 mysql adm
sharedscripts
postrotate
test -x /usr/bin/mysqladmin && /usr/bin/mysqladmin flush-logs > /dev/null 2>&1 || true
endscript
}
- rotate 5 — храним 5 архивных копий.
- flush-logs — сбрасывает текущие логи, чтобы начать писать новые.
Диагностика и отладка Logrotate
Если ротация логов не работает, используйте ключ -d для диагностики:
sudo logrotate -d /etc/logrotate.conf
Это позволит вам проверить, как Logrotate интерпретирует конфигурацию, без выполнения изменений.
Для отладки также можно добавить ключ -v для подробного вывода:
sudo logrotate -v /etc/logrotate.conf
Заключение
Logrotate — это инструмент, который должен быть в арсенале каждого Linux-администратора. С ним ваши логи будут под контролем, а дисковое пространство — в порядке. Как говорится, «логи — это сердце системы, но без ротации оно быстро перестанет биться».
Если у вас есть свои советы или лайфхаки по работе с Logrotate, обязательно поделитесь ими в комментариях. А пока — удачной ротации!
