![Най -добрите алтернативни дистрибуции на CentOS (настолни компютри и сървъри)](/f/a835e92c514a638cad88d7a3926c446a.png?width=100&height=100)
Един от най -интересните (и може би един от най -важните) директории в Linux система е /var/log
. Според Стандарт за йерархия на файловата система, дейността на повечето услуги, работещи в системата, се записва във файл в тази директория или в една от нейните поддиректории.
Такива файлове са известни като трупи и са ключът към изследване как функционира системата (и как се е държала в миналото). Дневници са и първият източник на информация, където администраторите и инженерите търсят, докато отстраняват неизправности.
Ако погледнем съдържанието на /var/log
на CentOS/RHEL/Fedora и Debian/Ubuntu (за разнообразие) ще видим следните регистрационни файлове и поддиректории.
Моля, обърнете внимание, че резултатът може да е малко по -различен във вашия случай в зависимост от услугите, работещи във вашата (ите) система (и) и времето, в което те са работили.
# ls /var /log.
# ls /var /log.
И в двата случая можем да забележим, че някои от имената на регистрационните файлове завършват според очакванията в „Дневник“, докато други се преименуват с помощта на дата (например, maillog-20160822 На CentOS) или компресиран (помислете auth.log.2.gz и mysql.log.1.gz На Debian).
Това не е поведение по подразбиране въз основа на избраното разпределение но може да се променя по желание с помощта на директиви в конфигурационните файлове, както ще видим в тази статия.
Ако регистрационните файлове се съхраняваха завинаги, те в крайна сметка щяха да запълнят файловата система къде /var/log пребивава. За да предотврати това, системният администратор може да използва хубава помощна програма, наречена logrotate да почиствате трупите периодично.
С няколко думи, logrotate ще преименува или компресира основния регистър, когато е изпълнено условие (повече за това след минута), така че следващото събитие да бъде записано в празен файл.
Освен това ще премахне "стар" log файлове и ще запази най -новите. Разбира се, ние трябва да решим какво "стар" означава и колко често искаме logrotate да изчисти дневниците вместо нас.
Да инсталираш logrotate, просто използвайте своя мениджър на пакети:
В Debian и Ubuntu # aptitude update && aptitude install logrotate На CentOS, RHEL и Fedora # yum update && yum install logrotate.
Заслужава да се отбележи, че конфигурационният файл (/etc/logrotate.conf
) може да означава, че други, по -специфични настройки могат да бъдат поставени на отделни лица .conf
файлове вътре /etc/logrotate.d.
Това ще бъде така, ако и само ако следният ред съществува и не е коментиран:
включват /etc/logrotate.d.
Ние ще се придържаме към този подход, тъй като той ще ни помогне да поддържаме нещата в ред и да използваме Дебияn кутия за следните примери.
Като много гъвкав инструмент, logrotate предоставя изобилие от директиви, които да ни помогнат да конфигурираме кога и как ще се въртят дневниците и какво трябва да се случи веднага след това.
Нека вмъкнем следното съдържание /etc/logrotate.d/apache2.conf (имайте предвид, че най -вероятно ще трябва да създадете този файл) и разгледайте всеки ред, за да посочите неговата цел:
apache2.conf
/var/log/apache2/* {седмично завъртане 3 размер 10M компресия забавянекомпресиране. }
Първият ред показва, че директивите вътре в блока се прилагат за всички регистрационни файлове вътре /var/log/apache2:
Нека изпълним сух цикъл, за да видим какво би направил logrotate, ако действително се изпълни сега. Използвай -д
опция, последвана от конфигурационния файл (всъщност можете да стартирате logrotate, като пропуснете тази опция):
# logrotate -d /etc/logrotate.d/apache2.conf.
Резултатите са показани по -долу:
Вместо да компресираме регистрационните файлове, бихме могли да ги преименуваме след дата когато бяха завъртени. За да направим това, ще използваме dateext
директива. Ако нашият формат за дата е различен от стандартния yyyymmdd, можем да го посочим с помощта формат на датата.
Имайте предвид, че дори можем да предотвратим завъртането, ако регистърът е празен с уведомен. В допълнение, нека кажем на logrotate да изпрати по пощата въртящия се дневник до системния администратор ([защитен имейл] в този случай) за неговата / нейната справка (това ще изисква a пощенски сървър, който трябва да бъде настроен, което е извън обхвата на тази статия).
Ако искате да получавате имейли за logrotate, можете да настроите Postfix пощенския сървър, както е показано тук: Инсталирайте Postfix Mail Server
Този път ще използваме /etc/logrotate.d/squid.conf само да се върти /var/log/squid/access.log:
squid.conf
/var/log/squid/access.log {месечно създаване на 0644 root root rotate 5 size = 1M dateext dateformat -%d%m%Y notifempty mail [защитен имейл]
}
Както можем да видим на изображението по -долу, този дневник не е трябвало да се завърта. Когато обаче е изпълнено условието за размер (размер = 1M), завъртеният дневник ще бъде преименуван access.log-25082020 (ако дневникът е завъртян 25 август 2020 г.) и основния дневник (access.log) ще бъде създаден отново с разрешения за достъп, зададени на 0644 и със корен като собственик и собственик на група.
И накрая, когато броят на трупите най -накрая достигне 6, най -старият регистър ще бъде изпратен по пощата [защитен имейл].
Сега да предположим, че искате да изпълните персонализирана команда, когато се извърши ротацията. За да направите това, поставете реда с такава команда между директивите postrotate и endScript.
Например, да предположим, че искаме да изпратим имейл до root, когато някой от регистрационните файлове вътре /var/log/myservice се завърта Нека добавим линиите в червено към /etc/logrotate.d/squid.conf:
squid.conf
/var/log/myservice/* {месечно създаване 0644 root root завъртане 5 размер = 1M postrotate echo "Току -що стана ротация." | пощенски корен endScript }
Не на последно място, важно е да се отбележи, че опциите присъстват в /etc/logrotate.d/*.conf
отменя тези в основния конфигурационен файл в случай на конфликти.
По подразбиране инсталацията на logrotate създава файл crontab вътре /etc/cron.daily на име logrotate. Както е случаят с другите файлове на crontab в тази директория, той ще се изпълнява ежедневно, започвайки от 6:25 сутринта ако anacron не е инсталиран.
В противен случай изпълнението ще започне наоколо 7:35 сутринта. За да проверите, следете за реда, съдържащ cron.daily в нито едното, нито другото /etc/crontab или /etc/anacrontab.
В система, която генерира няколко регистрационни файлове, администрирането на такива файлове може да бъде значително опростено с помощта на logrotate. Както обяснихме в тази статия, той автоматично ще се върти, компресира, премахва и изпраща регистрационни файлове на периодична основа или когато файлът достигне даден размер.
Просто се уверете, че е настроен да работи като cron работа и logrotate ще направи нещата много по -лесни за вас. За повече подробности, вижте страницата man.
Имате ли въпроси или предложения относно тази статия? Не се колебайте да ни уведомите, като използвате формата за коментари по -долу.