ПредишенСледващото

Xakep, стая # 063, стр. 063-108-1

сеч системни събития в детайли

Влезте, за да си Unix-базирани системи, наберете к.с. waux, ако това е Linux или BSD, или PS-ef, ако това е друго изпълнение Solaris на System V. Вие ще видите редица процеси, всеки от които прави нещо. Например, той може да бъде crond, inetd, ntpd, Sendmail, SSHD и множество други демони и обработва ядрото. И това, което е интересно - всички те отведе до записват система стандартните потоци данни дървар. Какво прави той?

Това се прави, за да бъде домакин на собственика по всяко време може да разберете точно това, което прави всеки един от тях, а ако нещо не работи - да разберете каква е причината. Дневници - историята на системата на живот, а понякога и само в дългосрочен бране / Var / дневник помага да разберете защо изведнъж сложи сметки доставчик на трафик, както и че за клоун цяла нощ издълба всички 65535 сървърни портове.

Традиционно, за провеждането на регистрите на събития е отговорен демон syslogd. чиято история датира от колежа и там Бъркли BSD. Syslogd - нещо повече от просто един демон. Тя трябва да си взаимодействат с всички демони, които се изпълняват в системата, така че всички те биха могли да записвате събития. Това взаимодействие се осъществява чрез специален цокъл / сътрудничество / дневник. Ето защо, всеки демон, който иска да остави спомен за себе си в регистъра на събитията, просто да бъде записан с някои аргументи. Система syslogd демон се стартира от скриптове за инициализация при стартиране.

Като всеки уважаващ себе си демон от syslogd има своя конфигурационен файл. По подразбиране е /etc/syslog.conf. Въпреки това, нищо не пречи да го наречете както искате, и след това да изпълните syslogd с клавиша -f /path/to/config.file. Тя е конфигурационният файл, насочваме вниманието си, но ключът, с която можете да стартирате syslogd, можете да научите от човек syslogd. в полза на малката им.

Всеки ред на syslog.conf има два записа - това са правила и действия. Правилата определят кои подсистема генерира събитие, както и нивото на детайлност, действията - какво да правя с тези събития. Всъщност, всичко е лесно. Основни подсистеми дванадесет - упълномощаване, authpriv, Cron, демон, селяк, LPR, поща, марка, новини, Syslog, потребител, шср, но на практика се използва главно за следните: тентните - информация за трупи от потребителя върху ( "потребител Боб отиде на втора конзола "), authpriv - информация за повишени привилегии в системата (" потребител Вася е су да изкорени на втория конзолата "), Cron - информация за пускането на редовни работни места (" девет сутринта, както обикновено, на скрипта надолу защитната стена и потребители Инет е над "), Kern - съобщенията на ядрото (" на мрежовия интерфейс премина в promiscious режим "), LPR - печат системни съобщения, м замря - пощенски съобщения система и т.н.

От назначаването на подсистемата казва името й. Докато всичко това класиране за голям конвенция. Няма по-FTPD, уеб-и т.н. - и това не е необходимо, тъй като тези демони се интересуват от това как и къде да пиша информация. В най-общия случай, това е сделката програмист - кой клас включва демон си и да използва съответния аргумент за openlog (3) функция, когато пишете.

Нивото на детайлност - количеството информация, за да бъдат обработени. Има осем приоритетни класове: отстраняване на грешки, информация, предупреждение, предупреждение, заблуждават, критичният, буден, Emerg, всеки следващ - по-малко информативно от предишната. Това означава, че на нивото на отстраняване на грешки демон осигурява огромен брой съобщения, които можете да го възстановите, за да работят във всичките му детайли (така наречените - отстраняване на грешки), обърнете внимание на ниво - най-добрият (демонът предоставя само подходящи послания), Emerg - само от решаващо значение за нивото на системата.

И накрая, на действието - това е, което трябва да се направи syslogd, обработка на съобщения. Действията могат да включват писане във файл (/var/log/file.log) - най-популярната и за които трупи се поддържат, но в допълнение, трупи могат да се изпращат на отдалечен хост (@loghost тип запис), пренасочени към други програми конвейера , изпратено до конкретни потребители и / или показва на конзолата (/ сътрудничество / конзола). Под трупи за прехвърляне в отдалечен хост се отнася до някой друг, а като ги изпратите на друга машина, която също работи на syslogd, слушане на 514 / UDP порт.

Също така е удобно да се комбинират под-системи и степента на подробност, сравняване на един модел на действия, описани по-горе. Запишете всяка линия конфигурационния обикновено изглежда така:

Има се разделя съвпадение точка подсистема ниво сеч, и няколко такива комбинации могат да бъдат свързани един действие, разделени със запетая. Имайте предвид, че podsistema1.uroven1 определя в следните текстове: ". Подсистема 1 дневник на всички събития от ниво 1 и повече" Това е логично, ако си припомним, че нивата са във възход (тук "по-горе" - означава по-малко информация). Например, daemon.notice запис; kern.emerg / Var / дневник / съобщенията определя влизането в / реактивна / дневник / съобщения на всички известие съобщение на ниво, а над всички демони, както и най-важните послания на ядрото (и по-горе - но няма нищо по-горе) , Ако по някаква демон трябва да записвате само събития от определено ниво на ниво пут "=" :. Mail = отстраняване на грешки. В допълнение, няколко подсистеми могат да бъдат изброени, разделени със запетаи, ги сравнява с едно и също ниво: поща, news.crit. Също така в шаблоните, можете да използвате иконата "*", а след това се налага в обичайното си за регулярни изрази - ". Всичко" * * /var/log/all.log -. Показва, напиши всичко, което се случва, когато системата е в /var/log/all.log. Специално характер, предназначени да обърнете "!":.! Mail = отстраняване на грешки означава, че всичко, освен отстраняване на грешки.

И за последен. Ако линията "правило - действие" се предхожда от името на програмата, тази линия се отнася само до спомена програмата. Това е много удобно, когато трябва да "vytsepit" регистрите на конкретна програма (не е задължително да е демон) в отделна нишка за преработка (писмено в отделен файл). В този случай, името на програмата, трябва да започнем с това, например, сред dialapschikov популярна следната конфигурация (всички мнения ПЧП запис в отделен лог файл) "!"

Влизане в Примери

Ето няколко примера, за да докажат, че тя всъщност е много проста:

# Всички от решаващо значение за системни съобщения и всички съобщения на ядрото показва на / сътрудничество / конзола. Това обикновено е първата физическа конзола (/ сътрудничество / ttyv0 в моя FreeBSD)

# В допълнение, всички неща, които по-висок приоритет, както е записано в съобщенията

# Всички подсистемата за сигурност, за да пишете съобщения в отделен файл

# Всичко по отношение на удостоверяване - пише в auth.log

# Всички съобщения съответните нива - в maillog

# Искам да следи работата на Крон - така че всичките му мнения са написани отделно

# Всички критични съобщения, за да пишат навсякъде, където е възможно :), така че те не остават незабелязани

# Всички мнения централно образувани от сървъра на сеч

# Всички мнения любимата ми програма, които искам да видя в отделни файлове.

За да може syslogd демона да прочетете отново си конфигурация, рестартиране не е задължително да е достатъчно, за да го изпрати сигнал за прекъсване:

За Linux и FreeBSD:

# Killall -HUP syslogd

За NetBSD, OpenBSD и Solaris:

# Pkill -HUP syslogd

# Kill -HUP `СЕД р / Var / тече / syslogd.pid`

Борейки се с консуматори диск

Правилно конфигуриране syslogd - това е половината от битката. Файловете, които са постоянно приложените информация, са склонни да нарасне до неприлични размери, и ако не се обръща достатъчно внимание на този един ден, дял / Var ще падне, пищи, че заема 120% от обема :). На Linux, където разделянето на дялове не е толкова популярен, и често можете да намерите един голям корен дял до края на FS (Mauvais висшето общество, не го направят някога), този път може да се забави (за дълго време), но когато става дума - идва и края на целия файл система. За съжаление, не syslogd процедури подават не произвежда, така че аз ще ви разкажа за двата най-популярни за контрол на подхода регистрационните файлове: BSD-shny и на Linux.

Вземете ни в ротацията

Най-удобният начин да влезете въртене - използване newsyslog. Управляван от короната веднъж на час / ден / месец, тя изглежда по трупите, които търсят тези, които са под негово управление и създава нов празен лог файлове постепенно архивиране на стари с името на лог. къде. - фигура, и евентуално да бъдат компресирани за да спестите място. В този конфигурационен файл по подразбиране - /etc/newsyslog.conf, се състои от следните области:

1) името на дневника - пълния път до лог файл, след което трябва да се следват;

2) vladedets: групови и правата за достъп - атрибутите на архива;

3) Брой - дълбочина им резервна;

4) сума - максималния размер на файла;

5) срок - правила времето за отговор.

Размерът на термин може да има стойност на "*" - това означава, че решението за архивиране направен въз основа на един от двата аргументи. Да разгледаме следния пример:

/var/log/ppp.log корен: мрежа 640 3 100 * Z

Тази линия се казва, че трябва да се следи ppp.log дерето, този архив прехвърля правата за 640, и да зададете собственика на корен, и групата - мрежа, операцията да се извърши най-много три пъти, решението да се извърши архивиране на базата на размера на файла - това не трябва да надвишава 100 KB, никога, плюс цялата компрес архив (Z ключ) полезност bzip2 (compess / GZIP в зависимост от системата).

Newsyslog. като се започне редовно разписание, ще се търси не превишен, ако ppp.log размер от 100 KB, и ако бъде надхвърлена - за преименуване на стар дневник в ppp.log.0, създаване на нов празен ppp.log; компресирате ppp.log.0 в ppp.log.0.bz2 и предостави права на файлове 640, собственикът - корен, група - мрежа. Когато размерът на вече нов ppp.log отново надхвърля 100 KB, програмата преименува съществуващата ppp.log.0.bz2 в ppp.log.1.bz2 и създаване на нова ppp.log.0.bz2 на същия алгоритъм. И така нататък, докато най-старите регистрационните файлове няма да бъдат наречени ppp.log.3.bz2 (ние също така посочи, тезгяха - 3). След това тя се отстранява, а третият става второто, и т.н. Разумен въпрос: колко често да тече newsyslog от Cron? На незареден машина, това може да се извършва на всеки два или три дни, средно сървър - всеки ден, на оживена гара - отидете и веднъж на час. Newsyslog - много удобен и гъвкав инструмент, и човек newsyslog ви кажа, много интересно.

Решение tuksodrayverov

Newsyslog номинално идва в пакет Free / OpenBSD, докато Logrotate присъства в повечето Linux дистрибуции. Той се занимава с едни и същи, и с подобна честота започва в короната. Разликата, както обикновено, в конфигурацията. Тук най-довереник /etc/logrotate.conf изглежда така:

ежедневно
върти 1
създавам
компрес
включва /etc/logrotate.d

Това означава - да се занимава с обработването на логове всеки ден, за да се събере с лопата нови трупи веднъж преди да извадите старата (постепенно дълбочината архивиране), създаване на нов празен лог файл със същото име, започна да компресирате файлове. Стегнато, нали? Последно основни директива - точки за наблюдение всички допълнителни довереник намира в /etc/logrotate.d директория. Те са нещо, което са дали конкретни параметри за всеки демон. Например създадете файл /etc/logrotate.d/httpd:

Тук сме обособили параметрите на въртене на журналите на Apache. Синтаксис раздел: по пътя на лог файл, и скоби - обработка на параметри. В една конфигурация (ние - уеб-), можете да добавите произволен брой такива секции. Той е удобен за създаване на множество конфигурационни файлове, всеки от които описват правилата за редуване на журналите на един конкретен демон (калмари, самба, Apache). В нашия случай, параметрите на методите на всеки файл, следните: да се занимава с лечение на седмична база (въпреки факта, че logrotate се провежда веднъж на ден), да се разпорежда с новите лог-пет пъти и след това изтрийте старите, компресира получените файлове, няма нищо общо с дневника, ако той така празен, и най-накрая, не се паникьосвайте, ако е посочено лог файл не може да бъде намерен.

И накрая - няколко трупи на управителните съвети в големите мрежи. Тъй като информацията за събитията е много важно в разследването на инциденти и първото нещо, което прави haksory на компрометирани ръчна количка - тя потърка трупи, а след това аз силно препоръчвам да има отделен вход сървър, където в допълнение към syslogd нищо няма да се върти (стар компютър ще направя), както и всички трупи от всички машини в централизирана го изпрати, защото сега знам как да го направя. Само по този начин ще знаете цялата истина за събитията в мрежата.

Syslog-нг може да обработва трупи използват регулярни изрази (добри за филтриране на отделни съобщения, форматиране, протокол за регистриране и т.н.) и е в състояние да прехвърли трупите към отдалечен хост от TCP.

Socklog работи с daemontools и Qmail. Предназначена е за тези, които вече са заменени обвързването и Sendmail и Qmail на tinydns и иска да намери адекватен заместител на syslogd.

Msyslog предлага модулна архитектура, за да се улесни писането на sislogu всички чипове, включително опазването на трупи в база данни, филтриране на базата на регулярни изрази, и т.н.

Minirsyslogd - малък и сигурно демон само за приемането на трупи от отдалечени хостове през мрежата.

Често се добави нов конфигурационен файл и да го забравя, докато създавате (докосване /var/log/file.log) или забравя да рестартирате syslogd.

Понякога създава лог файл, за да забрави да се регистрирате в newsyslogd / logrotate, в резултат на което тя не се лекува и расте.

Подкрепете проекта - споделете линка, благодаря!