Відмінності між версіями «Оборот журналів 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]