Home » Управление лог-файлами с помощью Logrotate на Ubuntu 24.04
Управление лог-файлами с помощью Logrotate на Ubuntu 24.04

Управление лог-файлами с помощью Logrotate на Ubuntu 24.04

Сегодня поговорим о том, как не утонуть в логах на сервере и не проснуться однажды утром с диском, забитым до отказа. Если ты держишь свой сервер на Ubuntu 24.04 (или только собираешься), рано или поздно столкнёшься с тем, что логи растут как на дрожжах. И вот тут на сцену выходит Logrotate — утилита, которая автоматизирует рутину по управлению лог-файлами, чтобы ты мог заниматься чем-то более интересным, чем ручная чистка /var/log. В этой статье разберёмся, как работает Logrotate, как его быстро и просто настроить, и какие фишки можно выжать из этого инструмента. Плюс — реальные кейсы, грабли, лайфхаки и даже немного статистики.

Как работает Logrotate?

Logrotate — это такой скриптовый дирижёр, который по расписанию (обычно раз в сутки) проверяет логи, которые ты ему укажешь, и делает с ними то, что ты скажешь: архивирует, удаляет старые, сжимает, отправляет уведомления, рестартует сервисы, если надо. Всё это настраивается через конфиги, которые лежат в /etc/logrotate.conf и /etc/logrotate.d/.

  • Ротация — переименование текущего лога (например, access.log → access.log.1), создание нового пустого файла для свежих записей.
  • Сжатие — старые логи можно автоматически архивировать (gzip, bzip2, xz).
  • Удаление — устаревшие архивы удаляются по количеству или сроку хранения.
  • Пост-обработка — можно запускать свои скрипты после ротации (например, отправить архив в облако или рестартовать nginx).

Logrotate работает по расписанию через cron (обычно /etc/cron.daily/logrotate), но можно запускать вручную для тестов.

Как быстро и просто всё настроить?

Всё, что тебе нужно — это базовое понимание структуры конфигов и пара команд в терминале. Вот пошаговый гайд:

  1. Проверь, установлен ли logrotate:

    sudo apt update
    sudo apt install logrotate
  2. Ознакомься с основным конфигом:

    cat /etc/logrotate.conf

    Обычно он подключает все файлы из /etc/logrotate.d/.
  3. Создай свой конфиг для приложения (например, для nginx):

    sudo nano /etc/logrotate.d/nginx

    Пример содержимого:

    /var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    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 14 — хранить 14 архивов
    • compress — сжимать архивы
    • notifempty — не трогать пустые логи
    • postrotate … endscript — команда после ротации (рестарт nginx логов)
  4. Проверь конфиг на ошибки:

    sudo logrotate --debug /etc/logrotate.conf
  5. Запусти ротацию вручную (для теста):

    sudo logrotate -f /etc/logrotate.conf

Всё, теперь твои логи под контролем! Можно добавить свои приложения, кастомизировать параметры, и забыть о ручной чистке.

Примеры, схемы, практические советы

Давай разберём несколько кейсов — что бывает, если не настроить logrotate, и как его грамотная настройка спасает ситуацию.

Сценарий Что происходит Рекомендации
Логи не ротируются Диск забивается, сервисы падают, мониторинг орёт, клиенты недовольны. Включить logrotate, настроить ротацию и удаление старых архивов.
Ротация без сжатия Архивы копятся, место экономится слабо. Добавить compress и delaycompress в конфиг.
Слишком частая ротация Много мелких архивов, сложно искать нужное. Выбрать оптимальный период (daily/weekly/monthly) под нагрузку.
Забыл рестартовать сервис Логи ротируются, но сервис пишет в старый файл (log file descriptor leak). Использовать postrotate для graceful reload/restart.
Случайно удалил все логи Нет истории, сложно расследовать инциденты. Хранить хотя бы 7-14 архивов, делать бэкапы важных логов.

Команды для управления Logrotate


# Проверить версию
logrotate --version

# Проверить конфиг на ошибки
sudo logrotate --debug /etc/logrotate.conf

# Принудительно запустить ротацию
sudo logrotate -f /etc/logrotate.conf

# Проверить статус cron-задачи
cat /etc/cron.daily/logrotate

# Посмотреть логи работы logrotate
cat /var/lib/logrotate/status

Похожие решения и альтернативы

  • newsyslog — альтернатива из BSD мира, но на Ubuntu встречается редко.
  • systemd-journald — если у тебя сервисы на systemd, можно хранить логи в journal, но это отдельная философия (см. официальную доку).
  • logadm — утилита из Solaris, на Linux почти не встречается.
  • Скрипты на bash/python — кастомные решения, но зачем, если есть logrotate?

Logrotate — де-факто стандарт для Linux. Он прост, гибок, поддерживается всеми дистрибутивами, и его легко интегрировать в любые пайплайны.

Статистика и сравнение

Утилита Поддержка форматов Гибкость Интеграция с cron Документация
Logrotate Любые plain text, wildcard Очень высокая Да Отличная (man logrotate)
systemd-journald Бинарный журнал Средняя Нет (свой механизм) Хорошая
newsyslog Plain text Средняя Да Средняя

Интересные факты и нестандартные способы использования

  • Logrotate можно использовать не только для логов, но и для любых файлов, которые надо периодически архивировать или удалять (например, дампы баз данных, временные файлы).
  • Можно на лету отправлять архивы в облако через postrotate (например, скрипт с rclone или aws s3 cp).
  • Logrotate поддерживает хуки prerotate и postrotate — можно делать любые магические штуки: отправлять уведомления в Telegram, запускать анализаторы логов, пересчитывать статистику.
  • Можно писать свои шаблоны конфигов и разворачивать их через Ansible, Salt, Puppet — удобно для автодеплоя на кластере.
  • Logrotate можно запускать не только по расписанию, но и по размеру файла (size 100M), что актуально для нагруженных сервисов.

Новые возможности для автоматизации и скриптов

Logrotate отлично вписывается в автоматизацию: можно генерировать конфиги на лету, интегрировать с CI/CD пайплайнами, запускать через systemd timers вместо cron, или даже использовать его как часть мониторинга (например, если логи не ротируются — это тревожный сигнал). В связке с инструментами типа ELK или Fluentd можно строить мощные системы сбора и анализа логов, не боясь, что диск внезапно закончится.

Выводы и рекомендации

Logrotate — must-have для любого сервера на Ubuntu 24.04. Это простой, надёжный и гибкий инструмент, который экономит время и нервы. Неважно, держишь ли ты свой VPS (заказать VPS) или управляешь флотом выделенных машин (арендовать сервер) — грамотная настройка logrotate избавит тебя от кучи проблем: от внезапно забитого диска до потери важных логов. Используй его не только для стандартных логов, но и для любых файлов, которые требуют ротации. Не забывай про сжатие, автоматизацию и интеграцию с другими инструментами. И помни: хороший DevOps — это тот, кто не чистит логи вручную!

Официальная документация: https://man7.org/linux/man-pages/man8/logrotate.8.html

Прокачивай свои сервера, автоматизируй всё, что можно, и пусть логи будут под контролем!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

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

Leave a reply

Your email address will not be published. Required fields are marked