Работа с логами в Linux нужна для администрирования системы. Если вы не хотите сталкиваться с переполнением диска из-за огромных лог-файлов, вам стоит ознакомиться с инструментом Logrotate. Давайте разберёмся, что это такое. Дальше вы узнаете как эффективно использовать инструмент для управления логами.

Logrotate и его использование в Linux-системах
Logrotate является утилитой для автоматического управления лог-файлами в Linux. Она позволяет вам создавать, сжимать и удалять старые логи. Так вы избегаете переполнения диска. Каждый лог-файл на сервере может накапливать гигантский объем данных. Без управления этими файлами дисковое пространство будет заполняться и это приведёт к сбоям в работе системы.
Logrotate помогает вам автоматически очищать старые логи. Вы поддерживаете порядок на сервере без лишних усилий.
Почему логи быстро заполняют диск
Логи быстро накапливаются, если вы управляете сервером или даже просто используете систему с множеством сервисов. Для этого есть свои причины.
- Активность сервисов. Каждый сервис или приложение в Linux генерирует свои лог-файлы. Чем больше сервисов, тем быстрее растёт количество данных в логах.
- Ошибки и сбои. Если приложение или сервис испытывает проблемы, логи могут расти в геометрической прогрессии, что приводит к быстрым переполнениям.
- Неправильная настройка. Без правильно настроенной ротации, логи будут сохраняться в одном файле бесконечно, что приведет к исчерпанию свободного места на диске.
Logrotate решает эту проблему и обеспечивает автоматическую ротацию файлов.
Принципы работы Logrotate
Logrotate работает по принципу ротации лог-файлов: старые файлы архивируются, а новые начинают записываться в пустой файл. Тут есть несколько ключевых параметров:
- Частота ротации. Можно настроить ежедневную, еженедельную или ежемесячную ротацию логов.
- Сжатие. Старые файлы можно сжимать, чтобы уменьшить место на диске.
- Удаление. Можно задать срок хранения логов, после которого они будут автоматически удаляться.
- Ограничение по размеру. Если файл логов превышает определенный размер, он будет автоматически ротироваться.
Эти параметры можно настроить в конфигурационных файлах и вы будете гибко управлять логами.
Часто спрашивают: Передача файлов с локального ПК на VPS под Linux
Где находятся конфигурационные файлы Logrotate и как они устроены
Конфигурационные файлы Logrotate обычно расположены в каталоге /etc/logrotate.d/ или в основном файле /etc/logrotate.conf. Основной файл содержит глобальные настройки, которые применяются ко всем логам системы. В каталоге /etc/logrotate.d/ находятся настройки для отдельных приложений и сервисов.
Пример конфигурации для логов nginx:
/var/log/nginx/*.log {
weekly
rotate 4
compress
delaycompress
notifempty
create 0640 www-data www-data
}
Здесь указываются следующие параметры:
- weekly — ротация происходит раз в неделю.
- rotate 4 — хранить 4 предыдущие копии логов.
- compress — старые файлы логов будут сжаты.
- notifempty — не ротировать пустые файлы.
- create — создавать новые файлы с указанными правами и владельцами.
Базовая настройка Logrotate
Базовая настройка Logrotate состоит в редактировании конфигурационных файлов. Чтобы настроить ротацию для всех логов системы, откройте файл /etc/logrotate.conf и добавьте параметры для нужных файлов. Чтобы настроить ротацию для конкретного сервиса, создайте файл в каталоге /etc/logrotate.d/ и укажите настройки.
Например, чтобы настраивать ротацию логов Apache, создайте файл /etc/logrotate.d/apache2 и укажите параметры, соответствующие вашему vps серверу.

Как настроить ротацию для конкретных сервисов (Nginx, Apache, MySQL)
Каждое приложение или сервис требует индивидуальной настройки. Вот примеры для наиболее популярных сервисов:
Nginx
Для nginx создайте файл /etc/logrotate.d/nginx со следующим содержимым:
/var/log/nginx/*.log {
weekly
missingok
rotate 12
compress
delaycompress
notifempty
create 640 nginx adm
}
Apache
Для Apache создайте файл /etc/logrotate.d/apache2:
/var/log/apache2/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 640 root adm
}
MySQL
Для MySQL используйте файл /etc/logrotate.d/mysql:
/var/log/mysql/*.log {
weekly
missingok
rotate 12
compress
notifempty
create 640 mysql mysql
}
Читайте также: Выделенный IP-адрес: нужен ли он вашему сайту и какие преимущества дает
Использование cron для Logrotate
Logrotate обычно работает в фоновом режиме с помощью cron. Чтобы убедиться, что ротация логов происходит по расписанию, в системе должен быть настроен cron-задача. Обычно файл с cron-заданиями для Logrotate находится в /etc/cron.daily/logrotate, и он запускает утилиту Logrotate каждый день. Вы можете настроить cron для более частых или редких запусков, редактируя cron-таблицу.
Типичные ошибки при настройке Logrotate и как их избежать
- Неправильный путь к логам. Убедитесь, что указали правильные пути к лог-файлам в конфигурации.
- Отсутствие прав на запись. Logrotate должен иметь права на запись в папки, где находятся логи.
- Неверная частота ротации. Если вы настроили частую ротацию, это может привести к увеличению нагрузки на систему. Лучше настроить разумную частоту.
- Недостаточное количество логов для хранения. Если вы укажете слишком малое количество хранимых копий логов, это может привести к удалению важной информации.
Часто спрашивают: Перенос сайта на WordPress: Пошаговое руководство по смене хостинга
Проверка и отладка Logrotate
Если что-то пошло не так, и вы заметили, что ротация не работает, можно запустить Logrotate вручную с флагом -d для отладки:
logrotate -d /etc/logrotate.conf
Эта команда не выполнит ротацию, но покажет, что будет сделано. Если вы хотите сразу применить изменения, используйте флаг -f:
logrotate -f /etc/logrotate.conf
Альтернативные инструменты для управления логами в Linux
Кроме Logrotate, существуют и другие инструменты для управления логами, такие как logadm и cronolog. Однако Logrotate остаётся самым популярным и универсальным решением благодаря своей гибкости и простоте настройки.
Используйте Logrotate для удобного и автоматического управления логами. Это сэкономит ваше время и поможет избежать неприятных ситуаций с переполнением диска.