Блог компанії 3v-Hosting

Налаштування ротації журналів за допомогою утиліти logrotate

Адміністрування

7 хв.


Управління журналами - найважливіша частина системного адміністрування. Без структурованого підходу журнали можуть швидко стати некерованими, займаючи цінний дисковий простір і перешкоджаючи можливості вилучення значущих даних. Утиліта logrotate - це потужний інструмент, який автоматизує процес керування журналами, забезпечуючи їхню ротацію, стиснення і видалення в міру необхідності. У цій статті представлено повне керівництво з налаштування ротації журналів за допомогою logrotate, розглянуто ключові функції та найкращі практики.

 

 

 


Розуміння logrotate і його ролі

 

Logrotate - це стандартна утиліта в системах Linux, призначена для управління зростанням файлів журналів. Вона автоматизує такі завдання, як:

    Ротація журналів: Перейменування і створення нових файлів журналів.
    Стиснення старих журналів: Скорочення дискового простору за рахунок архівування журналів.
    Видалення застарілих журналів: Видалення журналів після певного періоду зберігання.
    Налаштування розкладів: Налаштування інтервалів ротації відповідно до потреб програми.

За замовчуванням logrotate періодично запускається через планувальник cron, забезпечуючи керованість і впорядкованість системних журналів.

 

 

 

 

Основи конфігурації Logrotate

 

Конфігурації Logrotate задаються у двох основних місцях:

    Глобальний файл конфігурації (/etc/logrotate.conf): Містить налаштування за замовчуванням, які застосовуються в масштабах всієї системи, якщо не скасовуються окремими конфігураціями.
    Файли конфігурації для кожного сервісу (/etc/logrotate.d/): Налаштування для конкретного сервісу, що зберігаються в окремих файлах для більш тонкого контролю.


Ключові параметри в конфігурації logrotate включають:

    rotate: Вказує кількість збережених файлів журналу.
    compress: Вмикає стиснення повернутих журналів.
    dateext: Додає суфікс дати до ротованих файлів журналу.
    notifempty: Запобігає ротації порожніх файлів журналу.
    size: Запускає ротацію на основі розміру файлу, а не часу.

 

 

 

 

Налаштування ротації журналів для користувацького додатка

 

Щоб проілюструвати можливості logrotate, давайте налаштуємо його для користувацького застосунку, який веде журнал у /var/log/myapp.log. Почнемо зі створення файлу конфігурації:

    sudo nano /etc/logrotate.d/myapp


Додайте до файлу такі директиви:

    /var/log/myapp.log {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 0640 root root
        postrotate
            systemctl reload myapp.service
        endscript
    }


Пояснення до директив:

    daily: Щодня повертає файл журналу.
    rotate 7: Зберігає останні 7 журналів.
    compress: Стискає старі файли журналів за допомогою gzip.
    delaycompress: Відкладає стиснення до наступного циклу ротації.
    missingok: Пропускає помилки, якщо файл журналу відсутній.
    notifempty: Уникає ротації порожніх файлів журналу.
    create 0640 root root: Створює новий файл журналу із зазначеними правами.
    postrotate/endscript: Виконує команду після ротації журналу, наприклад, перезавантажує додаток.

Збережіть файл і вийдіть із редактора.

 


 

Інші корисні статті з адміністрування Linux у нашому Блозі:


    - Cron - Плануй завдання на Linux-серверах правильно

    - Коротка шпаргалка Linux для нових користувачів хостингу: від логіну на сервер до налаштування веб-сервера.

    - Як дізнатися вашу IP-адресу в Linux різними способами

    - Текстовий редактор Nano та як його використовувати

 


 


Тестування та налагодження конфігурації Logrotate

 

Дуже важливо протестувати конфігурацію logrotate, щоб уникнути непередбачених проблем. Використовуйте команду logrotate у режимі налагодження:

    sudo logrotate -d /etc/logrotate.conf

Ця команда імітує процес ротації журналу без внесення змін. Вона виявляє помилки конфігурації та перевіряє поведінку директив.


Для тестування ротації вручну використовуйте:

    sudo logrotate -f /etc/logrotate.conf

Параметр -f забезпечує негайне обертання журналу.

 

 

 

 

Додаткові можливості Logrotate

 

Logrotate пропонує розширені можливості для задоволення специфічних потреб:

Ротація журналів залежно від розміру: Якщо журнали ростуть непередбачувано, ротацію можна запускати за розміром:

    /var/log/myapp.log {
        size 100M
        rotate 5
        compress
    }

 

Користувацькі алгоритми стиснення: За замовчуванням logrotate використовує gzip, але можна вказати й інші інструменти, наприклад bzip2 або xz:

    compresscmd /usr/bin/bzip2
    uncompresscmd /usr/bin/bunzip2

 

Повідомлення про ротацію журналу: Комбінуйте logrotate зі сповіщеннями електронною поштою, щоб повідомляти адміністраторів про події в журналі:

    /var/log/myapp.log {
        mail [email protected]
        mailfirst
    }

 

 

 

Інтеграція Logrotate зі службами Systemd

 

Для додатків, керованих systemd, переконайтеся, що logrotate і systemd синхронізовані. Директива postrotate може використовуватися для перезавантаження або перезапуску служб після ротації. Однак уникайте непотрібних перезавантажень, щоб знизити навантаження на систему.

Приклад:

    /var/log/myapp.log {
        weekly
        rotate 4
        postrotate
            systemctl reload myapp.service
        endscript
    }

 

 

 

Найкращі практики використання Logrotate

 

    Плануйте політики зберігання: Визначте графіки ротації та зберігання, ґрунтуючись на вимогах додатків і нормативно-правової відповідності.
    Використовуйте стиснення з розумом: Стискайте великі файли журналів, щоб заощадити місце, але збалансувати навантаження на процесор, що виникає під час стиснення.
    Контролюйте використання дисків: Періодично перевіряйте використання диска, щоб переконатися в ефективності політик ротації журналів.
    Централізувати ведення журналу: Об'єднайте logrotate з централізованими системами ведення журналів, як-от Logstash або Fluentd, для ефективного моніторингу та аналізу.

 

 

 

Висновок

Утиліта logrotate незамінна для керування файлами журналів у середовищах Linux. Вона забезпечує керованість журналів, скорочує використання дискового простору і підтримує налаштування під потреби різних додатків. Розуміючи її можливості та застосовуючи найкращі практики, адміністратори можуть спростити керування журналами та підвищити надійність системи.