Ротація логів за допомогою logrotate у Debian
Добавити в
Logrotate - додаток, розроблений для полегшенняуправління лог-файлами. ОсобливоLogrotate корисний там, де створюється велика кількість лог-файлів. Утиліта дозволяє в автоматичному режимі архівувати, видаляти, очищати та відправляти на e-mail лог-файли. Цей процес зазвичай називаєтьсяротацією лог файлів.
Logrotate може бути налаштований на щоденну, щотижневу або щомісячну ротацію. Крім того, можна встановити розмір файлу, після досягнення якого файл буде ротований. Зазвичайlogrotate виконується як щоденне завдання (cron).
Установка Logrotate
Установка звичайна для Debian / Ubuntu-based дистрибутивів:
Короткий опис файлу налаштувань Logrotate
Опис того, яким чиномLogrotate працюватиме з тим чи іншим лог файлом знаходиться в спеціальному конфігураційному файлі. Як правило, вони знаходяться в директорії/etc/logrotate.d/. Наприклад, файл конфігурації для apache2 виглядає так:
При цьому перший рядок/var/log/apache2/*.log є ніщо інше, як шаблон оброблюваних лог-файлів. Він означає, що вказана конфігурація ротації буде використовуватися для всіх файлів, що знаходяться в директорії /var/log/apache2/ і мають розширення "log".
Допустимих директив у конфігураційному файлі дуже багато (більше 40). Докладніше про них можна дізнатися з man logrotate .
Основні опції Logrotate
Як правило, після налаштування конфігураційного файлу з'являється необхідність перевірити роботуlogrotate для нових логів. Для цього є можливість безпосереднього запускуlogrotate з командного рядка. При цьомудопускаються такі опції:
-d. Вмикає режим налагодження, а також дублює опцію-v. У режимі налагодження жодних дій із логами не буде виконано.
-f, --force. Примушує logrotate виконати ротацію логів. Буває необхідно після додавання нових конфігураційних файлів або якщо старий лог файл було видалено вручну; таким чином будуть створені нові лог-файли та журналування буде коректно продовжено.
-m, --mail command. Вказує, яку команду використовуватиме надсилання журналів поштою. Команда повинна приймати 2 вхідні параметри:
- заголовок листа
- одержувача листа
Після цього команда повинна прочитати повідомлення зі стандартного входу (STDIN) та надіслати його одержувачу. За замовчуванням командою є/usr/bin/mail -s
-s, --state statefile. Вказує на використання альтернативного файлу стану. Корисно у випадках, коли logrotate працює від імені різних користувачів для різних наборів лог-файлів. Дефолтний файл стану:/var/lib/logrotate/status
--usage. Виводить коротку інструкцію щодо використання утиліти.
-v, --verbose. Виведення діагностичних повідомлень під час ротації.
Приклад налаштування Logrotate
Як приклад припустимо, що в директорії/home/site/debianworld.ru/logs/ розташовуються лог-файли таких веб-серверів, як nginx і apache. Працюють вони у зв'язці: nginx - фронтенд, apache2-бекенд.
Коментарі під час тексту не повинні залишити запитань. Але загалом схема така, що окремо ротуються логи nginx, окремо логи apache2. У цьому, оскільки nginx є front-end'ом та її лог наповнюється інтенсивніше, ніж в apache, він (лог nginx) ротируется в 7 разів частіше, ніж лог apache2.
Крім того, при кожній ітерації ротування логів nginx виконується збір статистики відвідувань AWstats (див. Встановлення та налаштування AWstats та Налаштування AWstats для генерації статистики щодня).
Після того, як конфігураційний файл створено, необхідно переконатися, що все працюватиме саме так, як і задумано. Для цього необхідно виконати (при цьому реальних змін ніяких не буде, оскільки запуск буде виконаний у режимі налагодження):
Після того, як за діагностичними повідомленнями стало ясно, що все гаразд, необхідно безпосередньо запустити ротацію:
Надалі ротація виконуватиметься автоматично із заданим у конфігураційному файлі інтервалом.