Ротація журналів (v 3.6.5 переклад: бета версія)
ІМ'Я
logrotate - циклічно переміщує, архівує та посилає електронною почтою системні журнали.
ВИКОРИСТАННЯ
logrotate [-dv] [-f|--force] [-s|--state file] config_file+
ОПИС
logrotate розроблений для полегшення адміністрування систем, що ведуть велику кількість журналів. Він також забезпечує ротацію, архівацію, видалення та відправку журналів електронною почтою. Кожний журнал може переміщатись щоденно, потижнево чи щомісячно, або при досягненні ним певного розміру.
Звично logrotate запускають щоденно з допомогою cron. Це не значить що він буде модифікувати журнали кілька раз в день хіба, що критерій розміру журналу на якому засновується циклічна заміна журналів буде виконуватись і logrotate запускатиметься кілька разів на день, або з опцією -f, або -force для примусової циклічної заміни журналів.
Будь-яке число файлів з налаштуваннями можна вказати в командній стрічці. Файли вказані пізніше змінюють опції вказані у попередніх файлах, так, що порядок конфіґураційних файлів у logrotate є важливий. Зазвичай використовується єдиний конфіґураційний файл, котрий включає будь-які інші необхідні файли з налаштуваннями. Нижче описано, як це робиться з допомогою директиви include. Якщо в командній стрічці вказано директорію то кожний файл з цієї директорії використовується, як файл налаштувань.
Якщо не вказано ніяких параметрів у командній стрічці logrotate видрукує версію і авторські права та коротеньку інформацію по використанню і закінчить роботу. При появі будь-яких помилок під час виконання logrotate припинить роботу з не нульовим статусом.
ОПЦІЇ
-d : Вмикає відлагоджувальний режим і додає -v. У відлагоджувальному режимі ніяких змін з файлами журналів чи файлу стану logrotate.
-f, --force : Вказує logrotate насильно проводити циклічну заміну журналів, навіть, коли нема в цьому необхідності. Деколи це корисно після додавання нового пункту в logrotate, чи для створення нових файлів журналів, коли старі файли журналів були переміщені вручну, щоб протоколювання могло продовжуватись далі коректно.
-m, --mail : Вказує logrotate яку команду використовувати для пересилки журналів електронною почтою. Ця команда повинна приймати два параметри 1) тему повідомлення, і 2) адрес отримувача. Далі команда повинна зчитати повідомлення з стандартного вводу і відіслати адресату. По замовленню використовується /bin/mail -s.
-s, --state : Вказує logrotate використовувати альтернативний файл статусу. Це корисно коли ротація стартує під різними користувачами для різних файлів стану. По замовчуванню використовується /var/lib/logrotate.status.
--usage : Виводить коротке повідомлення що до використання.
ФАЙЛ НАЛАШТУВАНЬ
logrotate зчитує всі вказівки що до дій з журналами з серії файлів налаштування вказаних в командній стрічці. Кожний файл може визначати глобальні опції ( місцеві визначення змінюють глобальні і визначення вказані пізніше змінюють ті що були перед ними) і файли журналів для циклічного переміщення. Простий файл з налаштуваннями виглядає так:
$ cat /etc/logrotate.conf
# sample logrotate configuration file
compress
/var/log/messages {
rotate 5
weekly
postrotate
/etc/init.d/syslog-ng reload
endscript
}
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail www@my.org
size=100k
sharedscripts
postrotate
/sbin/killall -HUP httpd
endscript
}
# packages can drop log rotation information into this directory
include /etc/logrotate.d
$ cat /etc/logrotate.d/news
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP `cat /var/run/inn.pid`
endscript
nocompress
}
Перші декілька стрічок визначають глобальні опції, наприклад архівацію журналів після їх циклічної перестановки. Коментарі можна вставляти будь-де у файлі налаштувань, але перша стрічка коментаря повинна починатись з символу #.
Наступна секція конфігураційного файлу визначає які дії потрібно зробити з журналом /var/log/messages. Журнали будуть циклічно переміщуватись п'ять тижнів перед тим як витруться. Після циклічного переміщення (але перед тим як стара версія журналу почне архівуватися), виконається команда /etc/init.d/syslog-ng reload (/sbin/killall -HUP syslogd).
Слідуюча секція визначає параметри для двох журналів /var/log/httpd/access.log та /var/log/httpd/error.log. Вони циклічно переміщуються як тільки розмір журналу стає більшим 100k і старий журнал, після 5 циклічних зсувів, не архівований, перед своїм видаленням, пересилається на адресу www@my.org. sharedscripts означає що скрипт після зсуву postrotate буде запущений тільки один раз, а не по разу для кожного журналу що проходить ротацію. Увага, лапки навколо першого імені файлу дозволяють logrotate працювати з іменами файлів журналів, що містять пробіли. Звично командна оболонка використовує лапки ', ", і символ \ .
Директива include /etc/logrotate.d приводить до зчитування всіх файлів, як конфіґураційних, з директорії /etc/logrotate.d
Файл /etc/logrotate.d/news визначає параметри для всіх файлів в /var/log/news. Кожний файл циклічно зсувається з місячним періодом. Це вважається як єдина директива для ротації і якщо помилки будуть більш ніж для одного файлу, то журнали не архівуватимуться.
Будь-ласка використовуйте * з обережністю. якщо вкажете * logrotate буде циклічно зсувати кожний файл включаючи попередньо вже зсунуті та заархівовані. Шлях обійти це полягає у використанні директиви olddir чи більш точною вказівкою *.log
Далі наведемо більше інформації про директиви що можуть використовуватись в файлах налаштувань logrotate:
compress : Стара версія журналу архівується по-замовчуванню програмою gzip. Також дивіться nocompress.
compresscmd : Вказує котру команду використовувати для архівації журналів. По замовчуванню gzip. Також дивіться директиву compress.
uncompresscmd : Вказує яку команду використовувати для роз-архівації журналів. По замовчуванню gunzip.
compressext : Вказує закінчення яке додається до архівованого журналу, якщо архівація включена. По-замовчуванню використовується закінчення (розширення) архіватора.
compressoptions : Командна стрічка що передається архіватору, якщо він використовується. По-замовчуванню для gzip, є "-9" (максимальне стискання).
copy : Робить копію журналу, але не змінює зовсім вхідний. Цю опцію використовують наприклад для отримання копії поточних журналів, чи коли якась стороння утиліта потребує урізати чи обрізувати журнал. Коли використовується copy то опція create не дає ніякого ефекту, так, як старий файл залишається на місці.
copytruncate : Врізає оригінальний файл журналу на місці після створення копії, замість переміщення старого файлу журналу і можливого створення нового. Її використовують коли деякій програмі неможливо сказати закрити попередній журнал і отже вона мусить продовжувати писати (додавати) до попереднього журналу. Увага між копіюванням файлу журналу та урізанням його існує маленький проміжок часу, так що деякі дані можуть пропасти. Коли використовується ця опція то create не дає ніякого ефекту, так, як старий файл залишається на місці.
create mode owner group : Негайно після ротації (перед запуском післяротаційного скрипта postrotate) створюється новий журнал (з тим самим іменем, як і у файлу журналу, що тільки зсунувся). mode вказує права допуску в вісімковій системі (так як у chmod(2), owner вказує власника журналу, а group вказує групу до якої належить журнал. Будь-які файлові атрибути можна пропустити у цьому випадку в новому файлі будуть ті ж атрибути як і в старого журналу, для пропущених атрибутів. Цю опцію відміняє nocreate.
daily : Журнали циклічно переміщуються щодня.
delaycompress : Відтерміновує компресію попереднього журналу до наступного циклу ротації. Ця опція має ефект тільки в комбінації з compress. Вона може використовуватись коли деякій програмі не можливо вказати закрити свій журнал і тому вона мусить продовжувати писати ще деякий час в попередній журнал.
extension ext : Суфікс журналу що додається до старих журналів після ротації. Якщо використовується архівування, то закінчення архіву (звично .gz) додається останнім.
ifempty : Вказує циклічно переміщувати пусті журнали, змінює цю поведінку опція notifempty (по-замовчуванню використовується ifempty).
include file_or_directory : Зчитує файл як параметр там де появляється директива include, так ніби він був включений в командну стрічку. Якщо вказана директорія, більшість файлів з директорії зчитуються в алфавітному порядку перед тим як продовжиться виконання інструкцій з файлу в котрому міститься include. Ігноруються тільки не регулярні файли (тобто директорії та посилання) і файли чиї імена закінчуються на одне з заборонених закінчень, які вказані директивою tabooext. Директива include не повинна появлятись в середині самого визначення журналу.
mail address : Коли циклічне зсування доходить до кінця, то останній журнал перед видаленням відправляється на вказану адресу. Коли не потрібно робити відправку журналу то вказується директива nomail.
mailfirst : Коли використовується команда mail, то відсилається щойно циклічно переміщений файл замість останнього, що видаляється.
maillast : Коли використовується команда mail, то відсилається останній файл, що видаляється замість того, що щойно циклічно зсунувся (це поведінка по замовчуванню).
missingok : Якщо файлу журналу не існує то програма, замість видачі помилки, переходить до наступного. Також дивіться nomissingok.
monthly : Журнали циклічно зсуваються коли logrotate запускається перший раз в місяці (звично це першого числа місяця).
nocompress : Старі журнали не архівуються gzip. Також дивіться compress.
nocopy : Не копіювати оригінальний файл журналу і залишити його на місці (змінює опцію copy).
nocopytruncate : Не урізувати оригінальний файл журналу після створення його копії (це змінює опцію copytruncate).
nocreate : Не створюється новий файл після ротації (змінюється опцією create).
nodelaycompress : Не відтерміновувати архівацію попередньо зсунутого файлу до наступного циклу (поведінка змінюється опцією delaycompress).
nomail : Не відсилати нікому старий журнал.
nomissingok : Якщо файл журналів не існує, видає помилку. Ця поведінка є по замовчуванню.
noolddir : Старі журнали циклічно зсуваються в одній і тій ж директорії, що і сам журнал (це змінюється опцією olddir).
nosharedscripts : Запускає перед ротаційний prerotate та після ротаційні postrotate скрипти для кожного журналу котрий циклічно зсувається (це поведінка по-замовчуванню, яка змінюється опцією sharedscripts).
notifempty : Не зсувати циклічно пусті журнали (це змінює опцію ifempty).
olddir directory : Старі журнали переміщаються в директорію для ротації. Директорія мусить бути на тому самому фізичному пристрої що й журнали. Коли використовується ця опція всі старі версії журналів знаходяться в цій директорії. Опцію можна змінити noolddir.
postrotate/endscript : Стрічки між postrotate і endscript (обидві з мусять бути в окремій стрічці) виконуються після ротації журналів. Ця директива може тільки появлятись в середені визначення журналу. також дивіться prerotate.
prerotate/endscript : Стрічки між prerotate і endscript (обидві з мусять бути в окремій стрічці) виконуються перед ротацією журналів. Ця директива може тільки появлятись в середені визначення журналу. Також дивіться postrotate.
rotate count : Журнал циклічно зсувається разів перед видаленням чи відправкою почтою на адрес вказаний у директиві mail. Якщо count рівне 0, стара версія журналу видаляється і ротація не відбувається.
size size : Журнал циклічно зсувається коли він стає більшим за size в байтах. Якщо вкінці є M, то розмір рахується в мегабайтах. Якщо стоїть k, то розмір рахується в кілобайтах. Так допустимими є значення 100, 100k, і 100M.
sharedscripts : Звично prescript і postscript запускаються для кожного журналу, який циклічно зсувається, що означає запуск одного і тогож скрипта знову для кожного журналу що відповідає умові (наприклад /var/log/news/*.log). Якщо вказано опцію sharedscript скрипт запускається тільки раз, байдуже скільки журналів задовольняють умові. Однак якщо ні один журнал не потребує ротації скрипт не запускається взагалі. Цю опцію змінює nosharedscripts.
start count : Вказує номер з якого починати рахувати ротації. Наприклад якщо вкажете 0, старі журнали будуть створюватись з суфіксом .0 який додасться до назви первинного журналу. Якщо вкажете 9 то архів журналів будуть з суфіксами, що почнуться з .9, а 0-8 пропустяться. Журнал все одно буде зсуватись визначену опцією count кількість разів.
tabooext [+] list : Змінює поточний список заборонених розширень ( дивіться директиву include де є інформація про заборонені розширення). Якщо стоїть + перед списком розширень то поточний список поповнюється, інакше заміняється. При старті список заборонених розширень містить: .rpmorig, .rpmsave, ,v, .swp, .rpmnew, та ~.
weekly : Журнал циклічно зсувається, якщо поточний день тижня менший ніж день тижня коли відбувалась остання ротація, або коли пройшло більш ніж тиждень з часу останньої ротації. Тобто журнали циклічно зсуваються в перший день тижня, але працює краще коли logrotate запускається не кожної ночі.
ФАЙЛИ
/var/lib/logrotate.status Файл статусу по-замовчуванню.
/etc/logrotate.conf Файл з налаштуваннями.
/etc/logrotate.d Директорія з файлами налаштувань.
ПОДІБНІ ТЕМИ
?Syslog-ng - записувач подій в UNIX, gzip(1).
АВТОРИ
Ерік Троян (Erik Troan) ewt@redhat.com
Престон Бравн (Preston Brown) pbrown@redhat.com