Оглавление

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

Основные файлы конфигурации

  1. Глобальный файл конфигурации: /etc/logrotate.conf
    В этом файле задаются общие правила, которые применяются ко всем логам.
  2. Каталог для отдельных конфигураций: /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, обязательно поделитесь ими в комментариях. А пока — удачной ротации!