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