Блог компанії 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 user@example.com
        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. Вона забезпечує керованість журналів, скорочує використання дискового простору і підтримує налаштування під потреби різних додатків. Розуміючи її можливості та застосовуючи найкращі практики, адміністратори можуть спростити керування журналами та підвищити надійність системи.

3v-Hosting Team

Автор

3v-Hosting Team

Команда 3v-Hosting складається з групи відданих своїй справі інженерів та операторів, які повністю присвятили себе створенню та підтримці основи наших сервісів. Щодня ми занурюємося у світ віртуальних та виділених серверів, займаючись усім, від розгортання та моніторингу до усунення реальних проблем, що виникають у виробничих середовищах. Більшість наших статей ґрунтуються на практичному досвіді, а не лише на теорії. Ми ділимося своїми думками щодо викликів, з якими стикаємося: перебоїв у роботі, помилок у налаштуваннях, складнощів мережевої взаємодії та архітектурних рішень, що впливають на стабільність і надійність. Наша місія проста - ми хочемо ділитися знаннями, які допоможуть вам керувати своїми проектами з меншою кількістю несподіванок та набагато більшою передбачуваністю.

Як перенести сайт WordPress на VPS
Як перенести сайт WordPress на VPS

Як перенести сайт WordPress на VPS без Docker чи Kubernetes. Покроковий посібник з використанням Nginx, MariaDB, HTTPS, порадами з оптимізації та поширеними пом...

16 хв
Як виправити помилку HTTP 504 (Gateway Timeout)
Як виправити помилку HTTP 504 (Gateway Timeout)

Дізнайтеся, що означає помилка HTTP 504 Gateway Timeout, чому вона виникає в Nginx, Cloudflare, Docker та Kubernetes, а також як правильно діагностувати та усун...

16 хв