c0unt3rlog1c Posted October 16, 2012 Report Posted October 16, 2012 (edited) IntroducereLoguri...Orice sistem Linux va genera multe loguri by default, care contin multe informatii despre operarea sistemului (actiuni normale, informatii despre debugging, mesaje de securitate/autorizare, web/mail etc.). Daca aceste fisiere nu ar fi rotite, ar creste mai mari si mai mari, consumand spatiul (pe siteuri cu traffic mare), dar mai important, va face greu de gasit informatii ce s-ar putea sa fie folositoare. Din fericire, in majoritatea distributiilor Linux rotirea acestora este un proces automat, fara a fi necesare nici un fel de setari.Acest mic tutorial va va arata cum rotatia out-of-the-box a logurilor functioneaza, bazata pe syslog si logrotate. Sunt si alte cai de a descoperi asta, de exemplu folosind syslog-ng in loc de syslog, dar probabil voi scrie despre asta intr-un articol viitor.Intelegerea functionarii acestor fisiere va va ajuta sa va formati o idee despre ce se intampla, ce loguri sunt rotate, cand se intampla asta, si pentru cat timp vor exista. De asemenea veti descoperi locurile in care puteti face setari in caz ca doriti asta (daca doriti sa salvati logurile pentru mai mult timp, sau daca doriti sa le rotati diferit fata de setarile default). Exemplele ce le voi prezenta sunt luate dintr-un sistem Debian, deci daca rulati o alta distributie s-ar putea sa difere putin, dar nu foarte mult (de exemplu setarile cron s-ar putea sa ruleze la timpuri diferite, sau sa tina un numar diferit de loguri).Oh, si acest tutorial este impartit in doua, o parte e pentru fisierele log ale sistemului, iar cealalta pentru cele ale aplicatiilor.In tutorialul acesta, pentru fisierele log sistem, majoritatea din ele sunt rotate deja de catre syslog si nu folosind logrotate. In acest tutorial, veti intelege ce sunt aceste fisiere log si cum sunt rotate.Fiserele ce sunt rotateSyslog e aplicatia default pentru logging, instalata in majoritatea distributiilor de linux. Poate fi inlocuita cu syslog-ng pentru functionalitate mai buna, dar nu voi vorbi despre asta acum. Dupa cum am explicat in introducere, fisierele log care sunt mentinute de syslog nu sunt rotate cu logrotate, ci chiar de syslog insusi. Despre cele care sunt mentinute de logrotate, voi vorbi in partea urmatoare.Prin urmare, ce fisiere sunt mentinute de syslog? Putem afla asta pur si simplu prin a inspecta fisierul de configuratie (/etc/syslog.conf) care defineste fiecare fisier de loguri, si de asemenea ce fel de informatii sunt salvate in fiecare fisier in parte. Haideti sa vedem cum arata fisierul de configuratie intr-un sistem de abea instalat Debian (am scos majoritatea comentariilor , pentru a arata doar ce e relevant) :# /etc/syslog.conf Configuration file for syslogd.## For more information see syslog.conf(5)# manpage.auth,authpriv.* /var/log/auth.log*.*;auth,authpriv.none -/var/log/syslog#cron.* /var/log/cron.logdaemon.* -/var/log/daemon.logkern.* -/var/log/kern.loglpr.* -/var/log/lpr.logmail.* -/var/log/mail.loguser.* -/var/log/user.loguucp.* /var/log/uucp.log...mail.info -/var/log/mail.infomail.warn -/var/log/mail.warnmail.err /var/log/mail.errnews.crit /var/log/news/news.critnews.err /var/log/news/news.errnews.notice -/var/log/news/news.notice*.=debug;auth,authpriv.none;news.none;mail.none -/var/log/debug*.=info;*.=notice;*.=warn;auth,authpriv.none;cron,daemon.none;mail,news.none -/var/log/messagesNormal, as schimba setarile configurand totul dupa preferintele mele, dar nu asta e subiectul acum.Dupa cum puteti vedea, aici exista o multime de fisiere log care contin informatiile specificate de configuratii (authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user uucp si local0 prin local7).Cum sunt aceste fisiere rotate? Cum am spus mai devreme, acest proces este automatizat de syslog, si este executat conform a doua scripturi cron: daily si weekly .rotatia zilnica - daily (mentinuta de /etc/cron.daily/sysklogd)toate fisierele care contin facilitatea *.* in configuratia syslog sunt rotate zilnic. Motivul ar fi ca ele contin logurile continand orice tip de informatie, indiferent de facilitati, si pot deveni foarte mari intr-un timp foarte scurt.daca ne uitam in interiorul cronului syslog, pentru daily, vedem ca el gaseste logurile necesare lansand fisierul syslogd-listfiles:/usr/sbin/syslogd-listfiles/var/log/syslog <- rezultatul pe sistemul meu, defaultrotatia actuala este mentinuta de programul savelog, dupa cum vedeti in linia urmatoare:savelog -g adm -m 640 -u root -c 7 $LOG >/dev/nullDeci putem vedea aici ca, default, sistemul meu debian va tine 7 arhive ale logurilor precedente (7 zile). Daca doriti sa schimbati asta, tot ce trebuie sa faceti este sa schimbati parametrul -c 7 cu ceea ce doriti.Cand se intampla aceasta rotatie? Atata timp cat este lansata din /etc/cron.daily/ , este definita de crontabul sistemului:# /etc/crontab: system-wide crontab...25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weeklydeci, bazat pe cron jobul default, procesul va fi efectuat zilnic la 6:25 AM .rotatia saptamanala - weekly (mentinuta de /etc/cron.weekly/sysklogd)restul fisierelor generate de syslog (diferite de facilitatea *.*) vor fi rotate saptamanal.daca ne uitam inauntrul cronului saptamanal syslog, vom vedea ca el gaseste logurile ce trebuie rotate ruland:/usr/sbin/syslogd-listfiles --weekly/var/log/mail.warn/var/log/uucp.log/var/log/user.log/var/log/daemon.log/var/log/messages/var/log/debug/var/log/auth.log/var/log/mail.err/var/log/mail.log/var/log/kern.log/var/log/lpr.log/var/log/mail.infodupa cum putem vedea logurile definite in fisierul de configuratie syslog, exceptandule pe cele noi.*, pot fi incluse prin adaugarea syslogd-listfiles -news, daca e necesar.si aceasta rotatie este mentinuta tot de programul savelog:savelog -g adm -m 640 -u root -c 4 $LOG >/dev/nullDeci, default, el va tine 4 arhive de loguri precedente (neincluzand logul curent); arhivele vor avea extensia *.0-*.3 (prima arhiva nu este compresata default). Daca doriti sa schimbati asta, tot ce trebuie sa faceti este sa schimbati parametrul -c 4 cu ceea ce doriti.Dupa cum am vazut mai sus in crontabul sistemului, aceasta rotatie va avea loc la 6:47AM in fiecare Duminica (referindu-ma la cronjobul saptamanal).De exemplu, fisierele log rotate vor arata in acest fel:/var/log/messages/var/log/messages.0/var/log/messages.1.gz/var/log/messages.2.gz/var/log/messages.3.gz NotePe sistemele bazate pe RedHat (RHEL, Centos, Fedora, etc.) functionalitatile despre care am vorbit mai sus nu sunt preinstalate (desi nu vad de ce nu ar putea fi implementate). Pe aceste sisteme de operare, fisierele sistemului sunt rotate, la fel ca si cele ale aplicatiilor, de logrotate, despre care voi vorbi in partea a doua.Multumesc pentru ca ati citit! Edited October 16, 2012 by c0unt3rlog1c Quote