У цій статті пояснюється, як використовувати команду Telnet в Linux для тестування мережевих служб, перевірки відкритих портів і усунення неполадок підключення....
Блог компанії 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. Вона забезпечує керованість журналів, скорочує використання дискового простору і підтримує налаштування під потреби різних додатків. Розуміючи її можливості та застосовуючи найкращі практики, адміністратори можуть спростити керування журналами та підвищити надійність системи.
Як перенести Docker Compose на новий VPS без простою: підготовка сервера, перенесення Docker Volumes, баз даних і файлів, перевірка проєкту та безпечне перемика...
Налаштування автоматичного оновлення Ubuntu Server за допомогою unattended-upgrades та Canonical Livepatch. Автоматична інсталяція оновлень безпеки, перевірка н...
Налаштування rate limiting у Nginx: як обмежити кількість запитів, захистити сервер від простих DDoS-атак, ботів та атак методом грубої сили. Приклади конфігура...