Відмінності між версіями «Оборот журналів logrotate»
Donserg (Обговорення • внесок) м (Захист на Оборот журналів logrotate встановлено ([edit=sysop] (безстроково) [move=sysop] (безстроково))) |
Поточна версія на 23:25, 20 вересня 2012
LOGROTATE(8) Ротація журналів LOGROTATE(8)
НАЗВА
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 <command> Вказує logrotate, яку команду використовувати для пересилки журналів електронною почтою. Ця команда повинна приймати два параметри 1) тему повідомлення, і 2) адрес отримувача. Далі команда повинна зчитати повідомлення з стандартного вводу і відіслати адресату. По замовленню використовується /bin/mail -s.
-s, --state <statefile> Вказує 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 Не створюється новий файл після ротації (змінюється опцією cre‐ ate).
nodelaycompress Не відтерміновувати архівацію попередньо зсунутого файла до наступного циклу (поведінка змінюється опцією delaycompress).
nomail Не відсилати нікому старий журнал.
nomissingok Якщо файл журналів не існує, видає помилку. Цe - поведінка поза вибором.
noolddir Старі журнали циклічно зсуваються в тому самому каталозі, що і сам журнал (це змінюється опцією olddir).
nosharedscripts Запускає перед ротаційний prerotate та після ротаційні postro‐ tate сценарії для кожного журналу котрий циклічно зсувається (це - поведінка поза вибором, яку можна поміняти опцією shared‐ scripts).
notifempty Не зсувати циклічно пусті журнали (це змінює опцію ifempty).
olddir directory Старі журнали переміщаються в каталог для ротації. Каталог має знаходитись на тому самому фізичному пристрої що й журнали. Коли використовується ця опція всі старі версії журналів знаходяться в цьому каталозі. Опцію можна змінити noolddir.
postrotate/endscript Стрічки між postrotate і endscript (обидві з мусять бути в окремій стрічці) виконуються після ротації журналів. Ця директива може тільки появлятись в середені визначення журналу. також дивіться prerotate.
prerotate/endscript Стрічки між prerotate і endscript (обидві з мусять бути в окремій стрічці) виконуються перед ротацією журналів. Ця директива може тільки появлятись в середені визначення журналу. Також дивіться postrotate.
rotate count Журнал циклічно зсувається <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 запускається не кожної ночі.
Файл конфігурації
logrotate reads everything about the log files it should be handling from the series of configuration files specified on the command line. Logrotate читає все по файлах журналів слід звернення із серії конфігураційних файлів, зазначених у командному рядку. Each configuration file can set global options (local definitions override global ones, and later definitions override earlier ones) and specify logfiles to rotate. Кожен файл конфігурації може встановити глобальні опції (місцеві визначення перевизначають глобальні, а потім і визначення перевизначають більш ранні) і вкажіть логах обертатися. A simple configuration file looks like this: Простий файл конфігурації виглядає наступним чином:
# sample logrotate configuration file # Зразок Logrotate конфігураційний файл
compress стискати
/var/log/messages { / VAR / Журнал / повідомлення {
rotate 5 обертати 5 weekly тижні postrotate postrotate /usr/bin/killall -HUP syslogd / USR / BIN / killall-HUP Syslogd endscript endscript
} }
"/var/log/httpd/access.log" /var/log/httpd/error.log { "/ VAR / Журнал / HTTPD / access.log" / VAR / Журнал / HTTPD / error.log {
rotate 5 обертати 5 mail www@my.org пошта www@my.org size 100k Розмір 100k sharedscripts sharedscripts postrotate postrotate /usr/bin/killall -HUP httpd / USR / BIN / killall-HUP HTTPD endscript endscript
} }
/var/log/news/* { / VAR / Журнал / Новини / * {
monthly щомісячно rotate 2 обертаються 2 olddir /var/log/news/old OLDDIR / VAR / Журнал / Новини / старі missingok missingok postrotate postrotate kill -HUP 'cat /var/run/inn.pid' вбити-HUP 'кіт / VAR / бігти / inn.pid " endscript endscript nocompress NOCOMPRESS
} } [1]