Налаштування logrotate
У Linux, більшість сервісів і програм, які працюють у фоновому режимі, таких як Apache, Nginx, Postfix і інших записують інформацію про свій стан, результати роботи і помилки в лог файли. Стандартне розташування балок або як їх ще називають - журналів - в папці / var / log.
За допомогою аналізу логів ви можете зрозуміти що працює не так, чому сталася помилка і як вирішити проблему. Але той криється одна проблема. Розмір логів постійно зростає і вони займають все більше і більше місця на диску, тому необхідно вчасно чистити логи і видаляти застарілі записи, щоб вони не заважали нормально працювати. Це можна робити вручну час від часу або налаштувати скрипти Cron, але є ще більш простий варіант - утиліта logrotate. У цій статті буде розглянута настройка logrotate і її використання.
Як працює Logrotate?
Утиліта Logrotate призначена для автоматизації обробки журналів. Вона може виконувати з ними необхідні дії в залежності від певних умов і правил відповідності. Наприклад, можна стискати журнали в архів або відправляти на інший сервер коли вони досягають певного розміру, віку, або інших параметрів.
Відео: setup rsyslog server as Centralised logging server in RHEL 6 / CentOS 6
Перевірку умов можна налаштувати щодня, щотижня або щомісяця. Це дозволяє створити схему ротації логів, зручну саме для вас і вашого сервера. Також ротація логів може бути корисна на домашньому комп`ютері, але тут вона не так важлива як на серверах, де тільки в логи Apache можуть записуватися до сотень тисяч рядків щодня.
Налаштування Logrotate
Logrotate - це популярна утиліта, тому в більшості дистрибутивів вона поставляється за замовчуванням. Ви можете переконатися, що програма встановлена в вашому дистрибутиві, спробувавши її встановити. Наприклад, в CentOS:
Відео: LPIC 108.2 частина друга. Журнал подій: logrotate
$ Sudo apt install logrotateТепер, навіть якщо утиліта не була встановлена, ви її встановите. Всі основні настройки програми знаходяться в файлі /etc/logrotate.conf, додаткові налаштування, стосовно правил та інших можливостей можуть бути розміщені в папці /etc/logroate.d/. Ви можете розміщувати всі налаштування logroatae прямо в основному файлі конфігурації, буде більш правильно, якщо настройки для кожного окремого сервісу будуть знаходитися в окремому файлі, в папці /etc/logrotate.d/.
Відео: Logrotate - How to Rotate and Compress logs
Щоб конфігураційні файли з цієї папки завантажувалися програмою, необхідно додати в основний конфігураційний файл такий рядок:
include /etc/logrotate.dПросто переконайтеся що вона там вже є. Спочатку давайте розглянемо основні директиви, які ми будемо застосовувати під час налаштування. Тут директиви виглядають не зовсім звичайно, сама директива і визначає що і коли потрібно робити, а вже якщо потрібно, їй передаються додаткові параметри. Щоб вказати як часто потрібно виконувати перевірку збігу умов використовуються такі директиви:
- hourly - кожну годину;
- daily - кожен день;
- weekly - щотижня;
- monthly - кожен місяць;
- yearly - щороку.
Основні директиви управління і обробки балок:
- rotate - вказує скільки старих балок потрібно зберігати, в параметрах передається кількість;
- create - вказує, що необхідно створити порожній лог файл після переміщення старого;
- dateext - додає дату ротації перед заголовком старого балки;
- compress - вказує, що лог необхідно стискати;
- delaycompress - Чи не стискайте останній і передостанній журнал;
- extension - зберігати оригінальний лог файл після ротації, якщо у нього вказане розширення;
- mail - відправляти Email після завершення ротації;
- maxage - виконувати ротацію журналів, якщо вони старше, ніж зазначено;
- missingok - не видавати помилки, якщо лог файлу не існує;
- olddir - переміщати старі логи в окрему папку;
- postrotate / endscript - виконати довільні команди після ротації;
- start - номер, з якого буде розпочато нумерація старих балок;
- size - розмір логу, коли він буде переміщений;
Це ті основні директиви, які ми будемо використовувати. У головному конфігураційному файлі знаходиться глобальна конфігурація, директиви, які будуть поширюватися на всі логи якщо не було скасовано їх дію. Кожен лог, який підлягає ротації описується таким чином:
адрес_файла_лога {
директиви
}
Тепер давайте створимо файл rsyslog.conf в папці /etc/logrotate.d/ і помістимо в нього настройки для ротації цього балки:
daily
rotate 3
size 10M
compress
delaycompress
}
Ці настройки означають, що ротація журналів буде виконуватися щодня, і ми будемо зберігати три останніх журналу, старіші копії будуть автоматично видалятися. Мінімальний розмір для ротації - 10 мегабайт, ротація нічого очікувати виконано, якщо лог не займає більше 10 мегабайт. Використовуватиметься стиснення, для всіх журналів крім останнього і передостаннього. Точно за таким же принципом ви можете налаштувати ротацію логів для будь-якого з журналів. Потрібно створити таку секцію для кожного з логів, якими ви хочете керувати.
Тепер залишилося протестувати як працює наша конфігурація. Для цього запустимо утиліту logrotate з опцією -d. Вона виведе всі, що планується зробити, але не буде змінювати файли на диску. У нас є файл / var / log / messages, розміром 40 Мегабайт, подивимося що буде робити утиліта:
Відео: LPIC 108.4 частина перша. Управління печаткою. Базова настройка CUPS
Як бачите, програма виявляє файл логу і розділяє його на кілька частин. Ви можете переконатися, що logrotate запускатиметься як годиться перевіривши розклад cron:
- Виправляємо виявлена помилка в системній програмі ubuntu
- Куди встановлюються програми в ubuntu
- Безпека php на сервері
- Що краще nginx або apache 2016
- Як подивитися логи в linux
- Що значить 502 bad gateway nginx
- Як додати команду в cron
- Як виводити логи в браузер, використовуючи notification api.
- Налаштування rsyslog в linux
- Cтруктура файлової системи linux
- Виправлення помилок linux
- Системи ініціалізації linux
- Адміністрування linux
- Управління службами linux
- Помилка відмовлено в доступі linux
- Модулі apache
- Помилка apt-get command not found
- Очищення системи ubuntu
- Помилка сегментування ubuntu
- Налаштування gufw ubuntu 16.04
- Помилка 403 forbidden nginx 1.4 6 ubuntu