У цій статті ви знайдете інструменти, необхідні для налаштування простого резервного копіювання PostgreSQL за допомогою вбудованих засобів, таких як pg_dump, pg...
Блог компанії 3v-Hosting
7 хв.
Управління журналами - найважливіша частина системного адміністрування. Без структурованого підходу журнали можуть швидко стати некерованими, займаючи цінний дисковий простір і перешкоджаючи можливості вилучення значущих даних. Утиліта logrotate - це потужний інструмент, який автоматизує процес керування журналами, забезпечуючи їхню ротацію, стиснення і видалення в міру необхідності. У цій статті представлено повне керівництво з налаштування ротації журналів за допомогою logrotate, розглянуто ключові функції та найкращі практики.
Logrotate - це стандартна утиліта в системах Linux, призначена для управління зростанням файлів журналів. Вона автоматизує такі завдання, як:
Ротація журналів: Перейменування і створення нових файлів журналів.
Стиснення старих журналів: Скорочення дискового простору за рахунок архівування журналів.
Видалення застарілих журналів: Видалення журналів після певного періоду зберігання.
Налаштування розкладів: Налаштування інтервалів ротації відповідно до потреб програми.
За замовчуванням logrotate періодично запускається через планувальник cron, забезпечуючи керованість і впорядкованість системних журналів.
Конфігурації 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: Виконує команду після ротації журналу, наприклад, перезавантажує додаток.
Збережіть файл і вийдіть із редактора.
Дуже важливо протестувати конфігурацію logrotate, щоб уникнути непередбачених проблем. Використовуйте команду logrotate у режимі налагодження:
sudo logrotate -d /etc/logrotate.conf
Ця команда імітує процес ротації журналу без внесення змін. Вона виявляє помилки конфігурації та перевіряє поведінку директив.
Для тестування ротації вручну використовуйте:
sudo logrotate -f /etc/logrotate.conf
Параметр -f забезпечує негайне обертання журналу.
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
}
Для додатків, керованих systemd, переконайтеся, що logrotate і systemd синхронізовані. Директива postrotate може використовуватися для перезавантаження або перезапуску служб після ротації. Однак уникайте непотрібних перезавантажень, щоб знизити навантаження на систему.
Приклад:
/var/log/myapp.log {
weekly
rotate 4
postrotate
systemctl reload myapp.service
endscript
}
Плануйте політики зберігання: Визначте графіки ротації та зберігання, ґрунтуючись на вимогах додатків і нормативно-правової відповідності.
Використовуйте стиснення з розумом: Стискайте великі файли журналів, щоб заощадити місце, але збалансувати навантаження на процесор, що виникає під час стиснення.
Контролюйте використання дисків: Періодично перевіряйте використання диска, щоб переконатися в ефективності політик ротації журналів.
Централізувати ведення журналу: Об'єднайте logrotate з централізованими системами ведення журналів, як-от Logstash або Fluentd, для ефективного моніторингу та аналізу.
Утиліта logrotate незамінна для керування файлами журналів у середовищах Linux. Вона забезпечує керованість журналів, скорочує використання дискового простору і підтримує налаштування під потреби різних додатків. Розуміючи її можливості та застосовуючи найкращі практики, адміністратори можуть спростити керування журналами та підвищити надійність системи.
Принципи SOLID допомагають створювати гнучкий, масштабований і підтримуваний код. Розбираємо SRP, OCP, LSP, ISP і DIP з прикладами та практичними рекомендаціями...
HTTP 503 (Service Unavailable) означає, що ваш сервер перевантажений або знаходиться на технічному обслуговуванні. Дізнайтеся, що викликає цю помилку, як її вип...
Керуйте своїм VPS і веб-сайтами за допомогою панелі управління Ispmanager. Створюйте домени, бази даних і резервні копії в один клік, відстежуйте продуктивність...