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, обязательно поделитесь ими в комментариях. А пока — удачной ротации!