Стаття також доступна російською (перейти до перегляду).
Організація правильного та всеосяжного логування роботи операційної системи та основного ПЗ сервера важливе завдання, з яким стикається кожен системний адміністратор. Логи це основне джерело інформації для формування метрик роботи сервера, пошуку причин збоїв та вразливостей. Високонавантажені системи пишуть логи дуже активно, тому треба мати механізм ротації та управління журналами. Одним з базових інструментів є Logrotate, про нього і йтиметься у цій статті.
Зміст
- Організація управління файлами журналів в Ubuntu
- Налаштування автоматичної ротації журналів для окремих процесів
- Налаштування управління логами для окремого користувача
Організація управління файлами журналів в Ubuntu
Під час запуску будь-якого з численних процесів ОС Ubuntu створюється журнал для фіксації всіх змін, що відбуваються під час роботи програми. Ці журнали необхідно періодично змінювати на нові, а вже заповнені архівувати та поміщати у відповідні місця на диску. Тобто, можна виділити декілька основних операцій над вказаними даними:
- Внесення записів у відповідний журнал;
- Контроль рівня заповнюваності;
- Створення нового журналу;
- Архівування заповненого;
- Переміщення архіву.
Для виконання зазначених операцій передбачено використання спеціального програмного забезпечення (ПО), зокрема, програму LogRotate. Для основних дистрибутивів Linux ця програма встановлюється у системі автоматично та виконує свої задачі без втручання Адміністратора. Для організації правильної роботи програми передбачена наявність певного середовища та налаштувань, котрі «вказують» програмі як саме вона повинна працювати. До першого рівня такого середовища, зокрема, відноситься головний файл конфігурації /etc/logrotate.conf, у якому прописані загальні операції, котрі програма повинна виконувати над даними будь-якого процесу.
Другий рівень середовища для роботи LogRotate утворюють файли конфігурації для кожного з основних системних процесів, таких, наприклад, як apt, bootlog, wtmp та інших. Ці файли знаходяться в спеціальному системному каталозі /etc/logrotate.d і мають назви, відповідно до назв системних процесів. Таким чином, цей рівень є більш деталізованим, має вищий рівень пріоритетності і стосується окремо кожного з процесів. Звісно, можна внести зміни у будь-який з файлів конфігурації будь-якого процесу та скоригувати роботу програми LogRotate. Більш того, можна створити на свій розсуд файл конфігурації для будь-якого процесу та помістити його у вказаний системний каталог. У цьому випадку файли журналів будуть зберігатися у каталозі /var/log/new-app, де new-app – назва нового процесу.
Третій рівень роботи програми LogRotate обумовлений наявністю файлів конфігурації та налаштуваннями для окремого користувача системи. У такому разі, головний файл середовища буде знаходитись у домашньому каталозі певного користувача за адресою /home/user/logrotate.conf, де user – логін користувача. А файли журналів будуть зберігатися за адресою /home/user/logs та мати розширення «.log». Але таке середовище повинно бути підготовлене адміністратором системи, інакше програма LogRotate буде брати до уваги лише перші два рівня програмного середовища, котрі здебільшого налаштовуються самою ОС Ubuntu.
Налаштування автоматичної ротації журналів для окремих процесів
Спочатку переглянемо номер версії встановленої програми LogRotate та додаткову інформацію про неї. Для цього введемо у терміналі команду:
$ logrotate --version
Отже, версія програми – 3.14.0 . Тепер подивимось дату створення головного файлу конфігурації та встановлені для нього права доступу:
$ ls -l /etc/logrotate.conf
Файл був створений 21 січня 2019 року. Переглянемо вміст файлу за допомогою відповідної команди:
$ cat /etc/logrotate.conf
Можемо переконатися, що тут дійсно вказані загальні операції, однакові для всіх процесів.
епер подивимося вміст системного каталогу logrotate.d, у якому зберігаються стандартні файли конфігурації для всіх системних процесів:
$ ls -l /etc/logrotate.d
Тут також відображено дату їх створення та права доступу. Тепер, для прикладу, розглянемо вміст файлу конфігурації для сервісу ufw. Це є інструментарій для налагодження та керування брандмауером (Uncomplicated Firewall) у ОС Ubuntu та Debian. Введемо у терміналі:
$ cat /etc/logrotate.d/ufw
Бачимо, що окрім набору параметрів для роботи LogRotate, тут також вказано шлях до місця збереження файлів журналів, або логів - /var/log/ufw.log.
Налагодимо автоматичну ротацію для нашого процесу під назвою new-app. Для цього нам потрібно буде виконати наступні дії:
- Створити файл конфігурації для процесу у системному каталозі logrotate.d;
- Створити каталог для збереження файлів журналів;
- Протестувати створене середовище та переконатися, що воно працює.
Створення файлу конфігурації для new-app. Створимо файлу конфігурації нового процесу за допомогою текстового редактору. Файл містить потрібний набір параметрів, а також шлях до зберігання файлів журналів. Текст буде виглядати наступним чином:
/var/log/new-app/*.log { daily missingok rotate 3 compress notifempty create 0640 www-data www-data sharedscripts postrotate systemctl reload new-app endscript }
Команда для виклику редактора:
$ sudo nano /etc/logrotate.d/new-app
Після внесення змін збережемо файл за допомогою клавіш ctrl+O. Таким чином, у файлі конфігурації ми вказали, що, у каталозі може зберігатися не більше трьох старих журналів (параметр rotate); файли повинні архівуватися (параметр compress); нові файли повинні створюватися з правами доступа 0640 (параметр create). Скрипт, який обмежений командами postrotate та endscript вказує на те, що при оновленні системи процес new-app буде автоматично перезавантажуватись.
Створення каталогу для логів. Для цього використаємо відповідну команду:
$ mkdir /var/log/new-app
Тестування створеного середовища для процесу new-app. Використовуємо команду logrotate з ключем --debug:
$ sudo logrotate /etc/logrotate.conf --debug
На зображенні видно, що у системному каталозі logrotate.d з`явився новий сервіс new-app, який ми створили. Нижче можна подивитися результат його обробки командою, де, зокрема, вказано, що порожній файл не ротується.
Завершальне вікно виводу команди виглядає так:
Налаштування управління логами для окремого користувача
Порядок дій буде подібним до попереднього варіанту, за винятком того, що тут необхідно налаштовувати завдання cron для запуску програми LogRotate.
Створимо файл конфігурації для користувача системи із ім`ям new_user та введемо в нього наступний текст:
/home/new_user/logs/*.log { hourly missingok rotate 24 compress create }
Запустимо редактор та внесемо зміни, після чого закриємо його (ctrl+O):
$ nano /home/new_user/logrotate.conf
Створимо каталог для зберігання журналів, а також файл журналу access.log:
$ mkdir /home/new_user/logs $ touch /home/new_user/logs/access.log
Протестуємо створене середовище та переконаємося, що все налагоджено:
$ logrotate /home/new_user/logrotate.conf --state /home/new_user/logrotate-state –verbose
Параметр --verbose деталізує дії пов`язані із програмою Logrotate.
Переглянемо вміст файлу станів logrotate-state:
$ cat /home/new_user/logrotate-state
Можна переконатися, що у вказаному файлі фіксується інформація про час запуску процесу.
За допомогою сервісу cron налаштуємо завдання для автоматичного щоденного запуску програми Logrotate для поточного системного користувача:
$ crontab –e
Після цього відкриється вікно редактора, встановленого за замовчуванням, із файлом налаштувань завдань. Додамо до нього рядок:
12 * * * * /usr/sbin/logrotate /home/new_user/logrotate.conf --state /home/new_user/logrotate-state
та збережемо зміни (ctrl+O). Вказана строка налаштовує cron на запуск завдання на 12-тій хвилині кожного часу доби.
Дата-центр FREEhost.UA пропонує виділені сервери різних конфігурацій за найвигіднішими цінами в Україні. Наші послуги включають базове адміністрування 24/7. Всі сервери доступні і можуть бути поставлені протягом декількох годин. Запрошуємо до використання.
Підписуйтесь на наш телеграм–каналt.me/freehostua, щоб бути в курсі нових корисних матеріалів. Дивіться наш канал Youtube на youtube.com/freehostua.
Ми у чомусь помилилися, чи щось пропустили?
Напишіть Про це у коментарях, ми з задоволенням відповімо та обговорюємо Ваші зауваження та пропозиції.
Дата: 11.08.2022 Автор: Євген
|
|
Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:
comments powered by Disqus